应用场景
最近接触到汽车BMS产品。需要验证硬件开发板ADC部分,本章将基于S32K358介绍 ADC 相关配置。
原理介绍
ADC
将模拟量转成数字量,本工程基准电压为3.3v, 分辨率选择12位。 将配置为ADC功能的引脚输入2v, 则通过ADC转换后,应该得到的数字量 = 4095(2的12次方) x (2/3.3) 。 约等于2481。若实际测得的值在2481左右,则ADC功能正常。
ADC采样的时间和它的外围电阻是有关系的。若外围电阻大于50k则可能需要延时2个多毫秒采集到的值才趋于正确值。设计硬件电路时需要考虑这个因素。
支持三组ADC。ADC0,ADC1,ADC2。支持8位,10位,12位,14位分辨率。数据手册中表明,ADC的触发源均来自BCTU。ADC部分通道如下截图:
配置工具
工具:S32KDS3.5 。如果不知道如何使用该工具请自行查阅相关指导说明,以下内容默认读者对该软件具有一定的使用经验,比如如何导入例程等。
软件版本:导入NXP的官方例程(S32K358对应版本),由于汽车行业目前使用EB配置MCAL的居多,可以选择带Autosar封装版本的Demo。导入Autosar接口封装的版本好处在于大部分配置项和EB差不多。NXP也提供了EB版本,但是由于时间有限,后期会在EB上配置该工程并验证。
配置步骤
ADC 配置
第一步:导入官方例程,带Autosar封装的版本。由于ADC通道和引脚是一一绑定的,在配置ADC时可以不用配置引脚Port组件。在MCU中打开ADC时钟使能。
第二步:配置ADC相关函数。
第三步:使能ADC中断。
第四步:添加ADC0,并配置相关属性。
第五步:配置ADC分辨率。
第六步:配置ADC通道。S9_ChanNum33对应的就是PTA1引脚。测试时,只需给PTA1一个合理的电压输入。
第七步:配置ADC Group。用来存放采得的值的。图片中第三步的说明是错误的,这里选择的软件触发。ADC触发方式有三种:标准触发(软件+硬件),注入触发(软件+硬件),BCTU触发(增强型注入触发,三种模式中优先级最大)。选择了BCTU模式,才需要去配置BCTU相关的触发源。
第八步:配置ADC Group 通知函数。
第八步:将配置的通道映射到对应的Group组中。
第八步:配置ADC触发源。(如果非BCTU模式,这里可以不配置此项)
第九步:代码部分(配置了ADC0和ADC1)。初始化函数这些不做说明。
以上就是配置ADC的全部。
代码详解
官方的例程中会有一些校验函数打开,实际使用的时候不打开的话,对应的代码可以删掉方便学习。
注意事项
在设计ADC电路时,若外围电阻比较大,比如大于50k ,则实际采样时,会有延时。随着时间的延长采样的值逼近正确值。比如上电就开始采样则采样的值可能只有目标值的一半。经过2ms延时后,采得的值才和目标值一致。所以设计硬件电路时需要注意这一点。
NXP S32K358芯片的PTE13引脚默认是被MCUPMC_Config中一项配置控制。如果要使用PTE13引脚,在MCU中的McuPowerControlUnit中的Last Mile Regulator Base Control Enable 需要关掉。