GD32 ADC外设学习笔记
一、ADC外设核心作用
ADC(模数转换器)的核心功能是将外部/内部的模拟信号转化为数字信号,实现MCU对模拟量的采集与处理,是嵌入式开发中模拟信号采集的核心外设。
二、GD32 ADC核心硬件基础
GD32片上集成12位逐次逼近式ADC,核心算法为二分搜索法的硬件实现,支持18个采样通道(16个外部通道+2个内部通道),转换结果可配置数据对齐方式,且自带硬件过采样机制,能减少MCU计算负担、提升采样性能。
逐次逼近式转换原理(12位为例)
转换本质是在0~Vref参考电压范围内,通过n次比较确定未知模拟电压Vx的数字编码,12位ADC需精确执行12次比较:
- 第一次比较:内部DAC输出Vref/2(对应二进制1000 0000 0000);
- 若Vx > Vref/2,最高位置1,下一次比较Vref/2 + Vref/4;若Vx < Vref/2,最高位清0,下一次比较Vref/4;
- 重复上述二分比较过程,直至确定最低位,最终得到12位数字编码。
三、GD32 ADC关键核心特征
1. 可配置分辨率(精度可控)
支持12/10/8/6位四档分辨率,分辨率为采样数据的位数,位数越高,电压采集精度越高:
- 分辨率对应采样点数
- 电压换算公式:GD32 ADC默认测量电压范围0~3.3V,采集电压与采样数据呈线性关系,公式为 :
- 示例:12位分辨率下,,Vadc范围0~4095。
2. 前置校准功能(提升转换准确性)
ADC转换需与内部基准电压对比,内部电压不受外部影响,校准可消除硬件偏移误差:
- 校准流程:软件设置CLB=1初始化校准,校准期间CLB位保持1,完成后由硬件清0,校准完成前不可使用ADC;
- 校准时机:A/D转换前必须执行;当ADC运行条件改变(VDDA、VREF+、温度变化等),建议重新校准;
- 校准效果:生成的校准系数仅在ADC掉电前有效,全程内部应用,无需用户干预。
3. 可编程采样时间(采样率可调)
可通过软件配置ADC的采样时间(即采样率),兼顾采样速度与采样准确性:采样时间越短,转换速度越快,但可能导致采样精度下降;采样时间越长,精度越高,转换速度越慢。
4. 双数据存储对齐方式
转换结果可配置最高有效位(左)对齐或最低有效位(右)对齐,适配不同的MCU数据处理习惯,方便用户对采样数据进行运算与解析。
5. DMA请求支持(减轻CPU负担)
ADC采样完成后,可通过DMA直接将转换结果传输到指定内存区域,无需CPU参与数据搬运,大幅降低CPU占用率,适合高速、连续采样的应用场景。
四、GD32 ADC采样通道
总计18个采样通道,包含外部通道与内部通道,覆盖绝大多数模拟信号采集需求:
- 外部模拟输入通道:16个,可采集外部传感器、模拟电路等外部模拟信号;
- 内部模拟输入通道:2个
- 温度传感通道(VSENSE):采集MCU内部的温度信号,实现芯片温度检测;
- 参考电压输入通道(VREFINT):采集芯片内部基准电压,可用于校准外部采样、检测电源稳定性。
五、GD32 ADC运行与转换模式
1. 两种运行触发模式
- 软件触发:通过软件配置寄存器启动ADC转换,灵活可控,适合单次、按需采样的场景;
- 硬件触发:通过外部硬件信号(如定时器、GPIO引脚)触发转换,无需CPU干预,适合定时、同步采样的场景。
2. 五种核心转换模式
可根据实际应用需求灵活选择,支持单通道/多通道、单次/连续等多种采集方式:
- 单通道/扫描序列通道转换:单通道仅转换指定单个通道;扫描模式按顺序转换预设的一组通道;
- 单次运行模式:每次触发后,仅对选择的通道完成一次转换,转换结束后停止;
- 连续运行模式:触发后,对选择的通道连续循环转换,直至软件停止或触发中断;
- 间断运行模式:将预设的扫描通道分为若干组,每次触发仅转换一组通道,适合多通道分时采样;
- 同步模式:适用于集成多个ADC的GD32型号,可实现多ADC同步采样,提升多通道采集的同步性。
六、特色功能模块
1. 模拟看门狗(转换结果阈值监测)
ADC内置转换结果阈值监测器,即模拟看门狗功能:可预设采样电压的上下阈值,当ADC转换结果超出阈值范围时,触发相应事件,实现模拟信号的超限监测,适合需要对采集量进行阈值报警的场景(如电压过压/欠压检测)。
2. 中断产生机制
支持两类核心中断,方便用户通过中断方式处理ADC数据,无需轮询,提升程序效率:
- 常规序列转换结束中断:单通道/扫描通道的转换序列完成后触发,用于读取采样结果;
- 模拟看门狗事件中断:采样结果超出预设阈值时触发,用于处理超限异常。
3. 硬件过采样机制(降噪声、提精度)
GD32 ADC自带硬件过采样,无需MCU软件计算,是提升采样精度的重要手段:
- 核心原理:对同一个模拟信号进行多次采样,将结果合并为16位数据存储(对应16位数据寄存器),本质是“多测几次再平均”,降低采样噪声;
- 关键参数:可调整过采样率(2x~256x)、高达8位的可编程数据移位;
- 性能trade-off:过采样率越高,采样精度越高,但ADC转换速度越慢,需根据场景平衡精度与速度。
七、硬件供电与输入范围要求
1. 模块供电电压
ADC模块独立供电要求:2.6V ~ 3.6V,嵌入式开发中常规配置为3.3V(与MCU核心供电一致,无需额外供电电路)。
2. 通道输入电压范围
所有采样通道(外部+内部)的输入电压范围均为0~3.3V,超出该范围的模拟信号需先通过分压、限幅电路处理,否则会损坏ADC硬件。
八、核心知识点总结
- GD32 ADC为12位逐次逼近式,核心是二分搜索法硬件实现,支持18个采样通道;
- 分辨率决定采样精度,电压换算公式为,转换前必须执行前置校准;
- 支持DMA传输、模拟看门狗、硬件过采样等特色功能,大幅降低CPU负担、提升采样性能;
- 采样通道输入电压0~3.3V,模块供电2.6V ~ 3.6V,常规均配置为3.3V;
- 所有功能(采样时间、对齐方式、过采样率、转换模式)均可软件配置,灵活性高。
