【S32K144】EB tresos ADC模块配置
一、ADC介绍
1.1 ADC模块特性
S32K14x和S32K14xW包含两个12位ADC模块,ADC0和ADC1。
S32K11x包含一个12位的ADC模块,ADC0。
不同封装,ADC0和ADC1所包含的通道数不一样,LQFP100来说ADC0和ADC1分别有16个外部通道。
1.2 ADC的电源和参考电压
VREFH/VREFL -连接作为主要参考选项
VALTH/VREFL -连接作为备用参考选项
ADCx_SC2[REFSEL]位为ADC的电压参考源。有关更多细节,请参阅ADC章节中的REFSEL描述。在所有的S32K1xx设备中,VALTH与VDDA相同。在没有专用VREFH / VREFL引脚的包中,VREFH在包中连接到VDDA,VREFL连接到VSSA。如果外部可用,正参考应连接到与VDDA相同的电位,或者可能由外部源驱动到最小VREFH和VDDA电位之间的水平。VREFH永远不能超过VDDA。VREFL应被连接到与VSSA相同的电压电位上。
1.3 ADC的触发源
触发器通过 PDB 或者 TRGMUX 连接,并提供灵活的触发组合。
2xPDB 产生触发和预触发给 2xADC(ADC 和 PDB 都是成对动作的,例如 PDB0 和 ADC0,PDB1 和ADC1),每个 PDB 通道最多有8个与处罚期给 ADC 通道控制。每个ADC最少有1个外部引脚(通过TRGMUX支持)软件必须确认相对的优先级,在上一个转换完成后开始下一个转换,通过 TRGMUX,CMP 输出,LPIT,RTC 和 LPTMR 都可以作为每个ADC的触发源。LPIT 支持最多4个与处罚期,来限制只在每个 ADC 的 ADHWTSO~ADHWTS3。对于剩下的外设,需要软件扩张来提供预触发器,这部分参照 SIM_ADCOPT[ADCxSWPRETRG] 设置软件预触发器。
1.4 ADC的特征
- 12-bit精度的线性逐次逼近算法
- 最多16个单端模拟外部输入
- 输出模式:
- 单端12-bit,10-bit,8-bit
- 单端输出为右对齐的无符号形式
- 单次或持续转换
- 可配置的采样时间和转换速度/功率
- 转换完成/硬件平均值计算完成标志和中断
- 4种输入时钟源选择
- 低噪声低功率运行模式
- 可选的硬件转换触发器
- 自动产生多于,少于或等于的比较中断,或者是在范围内、范围外或一个可配置的值
- 温度传感器
- 硬件平均值计算功能
- 可选的电压参考值:外部的或可供选择的
- 自我矫正模式
二、ADC模块配置
2.1 General
- Adc_DeInit API:使能Adc_DeInit接口
- Adc Development Error Detection:开发者错误检测
- Adc Enable Limit Check:边界检测
- Adc Queue:启用队列,如果AdcPriorityImplementation=ADC_PRIORITY_HW_SW执行优先级为硬件则一定要开启队列
- Adc_StartStopGroup API:使能Adc_StartGroupConversion接口
- Adc Notification Capability:启用通知机制
- Adc Hw Trigger API:使能Adc_EnableHardwareTrigger和Adc_DisableHardwareTrigger硬件触发接口
- Adc Priority Mechanism:选择转换优先级机制。可以选择无优先级/硬件/硬件和软件混合。
- Adc_ReadGroup API:使能Adc_ReadGroup接口
- Adc Result Alignment:转换结果对齐方式
- Adc_VersionInfo API:获取版本信息
- ADC Direct DMA Result Buffer Copy:直接将转换结果复制到用户指定的缓冲区
- Adc Timeout:如果ADC硬件超过这个时间未进入空闲状态就报错
2.1.1 AdcPublishedInformation
- Adc Channel Value Signed:转换结果数值是有符号是无符号
- Adc Group First Channel Fixed:可以配置ADC通道组的第一个通道
- Adc Max Channel Resolution:所有通道最大精度
2.1.2 NonAutosar
- Adc Set Mode API:使能Adc_SetModeApi接口
- Adc Dual Clock Mode:增加双时钟模式服务
- Adc Channel Indexes Symbolic Names:通道另外起名字为:通道组名称_通道名称,可以通过这个新名字来访问到通道
- Adc Bypass Consistency Loop:提高性能的时候勾选,要确保硬件没到达正确状态之前不进行操作。
- Adc Enable/Disable Channels API:使能Adc_EnableChannel和Adc_DisableChannel接口
- Adc Get Injected Conversions Status API:使能Adc_GetInjectedConversionStatus接口
- Adc Disable Production Error Reporting:关闭诊断错误报告给DEM模块
- Adc Enable Threshold Configuration:使能Adc_ConfigureThreshold接口
- Adc Enable data Cache:在DMA模式下使用的cache映射到ADC结果缓冲区
- Adc Enable Safety feature:使能安全功能,在转换结果之前,对ADC通道数据寄存器的Valid和OVERWRITE位进行验证
2.2 AdcHwUnit
2.2.1 General
- Adc Transfer Type:传输方式是中断还是DMA。Hw触发器转换总是使用中断进行传输。如果一个SW触发的组具有不连续的通道或不同的通道类型(内部-测试-外部),那么该组也将使用中断进行传输
- Adc Source Clock:时钟源,在MCU模块配置,这里只能查看
- Adc Hardware Unit:硬件单元,也就是硬件设备,每个芯片自己有规定的硬件设备
- Adc Clock Prescaler Value:分频值
- Adc Power Down Delay:从复位到转换开始之间的延迟
- ADC Mux Delay:外部信号和采样开始之间的延迟
2.2.2 AdcChannel
- Adc Channel ID:自己设置的序号,每个硬件单元里面从0开始
- Adc Physical HW Channel:物理硬件通道,它有自己对应的引脚,可以在芯片手册查到
- Adc Test to Internal HW Channel Shorting:内部测试物理硬件通道,一般选择NO_EXT_TEST_CH_MAPPING就行
- Adc Channel Limit Check:通道限制检查
- Adc Channel Resolution:通道精度
- Adc Channel Enable Precharging:增加预充阶段。操作顺序为:预充->采样->转换
- Adc Channel CTR0-3 Selection:选择转换时序寄存器,以选择不同的预充和采样相位持续时间
- Adc Channel Reference Selection:选择通道转换的参考电压
2.2.3 AdcGroup
2.2.3.1 General
- Adc Group Access Mode通道组访问转换结果模式,流模式或者单次模式
(单次模式下buffer模式只能选择线性,Streaming Number Samples只能设置为1)
流模式下buffer模式可以选择线性或者回环。 - Adc Group Conversion Mode通道组转换模式,连续模式或单次模式
- Adc Group Conversion Type通道组转换类型,常规还是注入
- Adc Group Id自己编写的序号,在每个硬件单元里面从0开始
- Adc Group Priority通道组优先级
- Adc Group Trigger Source通道组触发源,软件还是硬件,如果是硬件,就要在AdcHwTrig里面填写硬件触发源。
- Adc Group Notification通道组通知函数,转换完成之后进行回调NULL_PTR就是不回调
- Adc Group Streaming Buffer Mode当通道组访问转换结果为流模式时,buffer模式为线性还是回环。线性模式 buffer存满后,停止转换。回环模式存满后从头开始覆盖。
- Adc Group Streaming Number Samples当通道组访问转换结果为流模式时,通道要采样的数量
- Adc Group Enable/Disable channels使能接口Adc_DisableChannel和Adc_EnableChannel
- Adc Group Without Interrupts禁用中断,在没有软件干预的情况下进行转换,可以通过调用Adc_ReadGroup()来读取转换结果。否则,结果缓冲区不再用于读取结果,需要直接从硬件寄存器读取
- Adc Group Precharging Duration for CTR0预充阶段时间寄存器,公式为Tprechg = PRECHG * 1 / ADC时钟
- AdcGroupConversionConfiguration里面调整预充和采样时间参数,转换分辨率只要跟ADC通道组里面的通道统一起来就行。
2.2.3.2 AdcGroupDefinition
从硬件单元里面选择一部分通道组成通道组