S32K3平台ADC 应用说明
- ADC 概述
1.1 资源介绍
S32K 系列 MCU 的硬件 ADC 资源如表 1.1 所示
1.1.1 BCTU 接口
3 个ADC的触发均来自BCTU。BCTU 提供通道转换指令(包括通道序号信息)给ADC,
另外,ADC 返回转换结果给 BCTU,如图 1.1 所示。
BCTU 产生一个触发脉冲给 ADC 的 72 个通道,以启动转换基于 BCTU 的通道序号
1.1.2 DMA 接口
在每个通道转换完成后,每个 ADC 都可以触发单独的 DMA 请求。通过主机或者 DMA
访问储存在 DMAR 寄存器的转换结果;
注:只要 ADC 收到停止信号,将立刻进入停止模式,正在进行转换将会停止。
1.1.3 ADC 硬件触发
在这个芯片上,硬件触发信号由 TRGMUX 提供,如表 1.3 所示。为了在多个 ADC 之
间同步常规转换开始的时间,常规转换同步脉冲与常规转换触发一起被使用。
1.1.4 ADC 自检
当 ADC 正确运行时,在规定的间隔时间内检查是很重要的。自检功能就是为了这个目
的而提供的,当自检功能使能时,ADC 自动检测它自己的部件和错误标志位。
1.1.5 ADC MUX 模式通道
ADC 的有很多个通道被很多的 PAD 驱动,DCM 的 GPR 位就是被用于决定那个 PAD
连接哪个特定的 ADC 通道引脚。
1.2 功能介绍
ADC 使用逐次逼近(SAR)算法从输入模拟电压产生一个数字值。它具有各种触发转换的
方法,并在输入通道的选择方面具有灵活性。支持可配置的自我测试功能增强了产品的功能
安全性。
1.2.1 特性
15 位分辨率,转换数据总是 15 位宽,即使逐次逼近步数小于 15
转换数据在每个输入通道的单独寄存器中被捕获
可选择通过平均来提高精度,通过平均多达 32 次转换的数据来计算转换数据
转换触发:
–使用常规转换触发器来转换大量的输入通道,单次触发或连续触发
–使用注入转换触发器来中断正在进行的常规转换,并转换另一组注入输入通道
–使用 BCTU 转换触发器中断正在进行的转换,转换已选择的输入通道,通过 BCTU 接
口启动转换
模拟看门狗监控每个输入通道的转换数据,如果转换的数据低于或高于可配置的限
制,则发出中断
直接内存访问(DMA)功能,转换数据到其他模块
当一个输入通道或一组输入通道的转换完成时,可编程中断可以发出中断
自检函数在功能操作期间验证 ADC 的结构完整性,并针对任何发现创建具有不同
程度的事件
转换时钟(AD_CLK)控制通过使用内部时钟分频器,使 ADC 能够在具有更高系统
时钟频率的系统中使用
ADC 空闲时自动关闭转换时钟
1.2.2 系统框图
ADC 的功能以及他们的依赖性如图 1.2 所示。
2.2 常见问题
ADC 输入引脚一般配有一个小型廉价的 RC 滤波器。R 典型值为 220Ω。C 值的选择应
确保奈奎斯特频率(采样频率除以 2)以上的频率充分滚降。
在此器件上,VREFH 和 VREFL 是专用引脚,VALTH 与 VDDA 相同。在无专用引脚的
封装中,VREFH 封装连接到 VDDA,VREFL 连接到 VSSA。如果外部可用,则正参考电压
应连接到与 VDDA 相同的电位,或可由外部电源驱动至最小参考电压高电平和 VDDA 电位
之间的电平。VREFH 绝不能超过 VDDA。VREFL 应连接到与 VSSA 相同的电压电位。
新设计布局时,遵循以下常规布线和布局原则。这些原则有助于最大程度地减少信号质
量问题。ADC 验证工作致力于提供非常稳定的基准电压层和接地层。
1、抗混叠滤波器应使用高质量 RC 元件。该 RC 滤波器应尽可能靠近 ADC 输入引脚放
置,以便消除大部分噪声。
2、如果要求 ADC 实现最高精度,应为模拟电源和基准电压源提供非常稳定的模拟接地
和电压层。
3. ADC 配置说明
3.1 版本说明
本次配套例程所使用的 SDK 包版本为 4.0.0。
3.2 SDK 配置详解(DRIVE)
点击如图 3.1 所示红色部分进入 ADC 相关配置界面。
下面将对如何对 ADC 配置进行详解。
ADC 的时钟源为 CORE_CLK,可配置 ADC 分频系数使得 ADC 处于正常工作范围内,
即 10MHz~80MHz。
其中对与 ADC 模块的配置如下图 3.2 所示红色部分,根据需求对其进行相应配置即可。
配置完成后即进行配置代码的生成,生成的配置代码结构体部分如程序清单 3.1 所示。
结构中的成员就是上面的 SDK 配置参数。
程序清单 3.1 配置代码结构体
static const Adc_Sar_Ip_ChanConfigType AdcSarIpChansConfig_1_BOARD_INITPERIPHERALS[1] =
{
{
.u8ChannelIndex = 36U,
.bPresamplingEnable = FALSE,
.bEndOfCon