文章目录
- 前言
- 一、分析芯片手册
- 1、43.5 ADC internal supply monitoring
- 2、11.1.1.1 Chip Control register (CHIPCTL)
- 1)SIM_CHIPCTL[ADC_SUPPLY]
- 2)SIM_CHIPCTL[ADC_SUPPLYEN]
- 3、44.4.2 ADC Status and Control Register 1 (SC1A - aSC1P)
- 二、EB配置
- 1、使能ADC内部电源监控
- 2、新建channel
- 3、将channel关联置Group
- 三、结果验证
- 总结
前言
本文章基于64pin的恩智浦 S32K146型号的芯片,针对汽车电子功能安全要求,对ADC 内部电源进行监控。
当ADC内部电源发生异常(参考电压异常等…)事件之后,MCU应该执行相应的操作(如:将ADC采样的结果判定为错误值)
具体实现流程包括如下几点:
1, 分析芯片手册 2, EB工具链配置 3, 结果验证
话不多说,走你~
NXP官方社区相关的帖子:
一号链接
二号链接
一、分析芯片手册
手册下载处:S32K1xx手册
1、43.5 ADC internal supply monitoring
Tips:
1) S32K14x和S32K14xW包含两个12位ADC模块,ADC0和ADC1;
2) 64pin的S32K146的ADC0包含16个外部channel,ADC1包含13个外部channel;
3) ADC0包含一个内部通道channel0。
如下图所示,ADC内部供电可以通过ADC0的内部channel0来进行监控,
通过选择ADC0_SC1n[ADCH]配置为010101b)。请参考SIM_CHIPCTL[ADC_SUPPLY]和SIM_CHIPCTL[ADC_SUPPLYEN] bits。
~
~
2、11.1.1.1 Chip Control register (CHIPCTL)
1)SIM_CHIPCTL[ADC_SUPPLY]
如下图所示,该Field占3bit,我们以监控ADC参考电压VREFH为例(010b)。
~
~
2)SIM_CHIPCTL[ADC_SUPPLYEN]
如下图所示,该Field占1bit,我们将该位置1,使能内部电源监控功能。
~
~
3、44.4.2 ADC Status and Control Register 1 (SC1A - aSC1P)
ADC0_SC1n[ADCH]
如下图所示,该Field占6bit,我们将该位设置为010101b,将ADC0的内部channel0被选中作为输入通道。
tips: ADC Status and Control Register 1 (SC1A - SC1P),该寄存器共16个,可以理解成ADC0共16个外部通道,
在此处,我们选择一个未被占用的外部channel来链接到ADC0的内部channel0。
在该文章中,我们以ADC0的channel 2为实例(即:ADC0_SC1c[ADCH]),用其来实现ADC0内部channel0的内部电源监控功能。
~
~
二、EB配置
打开EB tresos,执行如下操作步骤:
1、使能ADC内部电源监控
AdcEnableSimSupplyMonitor,位于Adc/General。
勾选该选项,其实就是对应将SIM_CHIPCTL[ADC_SUPPLYEN]置1。
~
~
2、新建channel
位于Adc/AdcHwUnit/AdcHwUnit_0/AdcChannel
Tips: 如果不使能步骤1的ADC内部电源监控功能,则无法做下图操作。
对ADC0新建一个channel2,改名为AdcChannel_MONITOR,并让其映射内部物理通道VREFH,如下图所示:
即:设置SIM_CHIPCTL[ADC_SUPPLY]为 010b。
~
~
3、将channel关联置Group
位于Adc/AdcHwUnit/AdcHwUnit_0/AdcGroup/AdcGroupDefinition
~
~
到此,EB的配置就结束了,生成代码。
三、结果验证
博主,通过串口打印,将采样的内部参考电源VREFH的AD值给打印出来,参考电压是3.3V,采样精度为12bit(4095);
正常工作情况下,采样值应该为4095,当该值出现偏差时,我们可以进行相关操作。
操作手段: 通过串口打印ADC采样数组中的数据。
期待现象: 采样AD值为4095。
博主也另外采样了BandGap电压,该电压为1V,它是ADC内部电路保证的。
举个例子:1V对应AD值为1240,Vbg偏差±3%。当其低于0.97V,高于1.03V时,我们可以认为ADC内部电路出现了故障。
即1203 < AD值 < 1277
~
~
总结
博主是AutoSar小白,刚开始接触NXP芯片,如果哪里表达的有问题,还请大佬们指点指点哈。接下来,让我们在后面的博文再相会哈~