慢动作 发表于 2025-5-22 00:02

评测常用 ADC 初始化与控制函数

小华官方库采用 结构体配置 + 启动函数组合 的设计方式,ADC 相关函数主要分为以下几类:

函数分类        示例函数
初始化配置        ADC_Init()、ADC_ChCfg()、ADC_SeqChCmd()
启动控制        ADC_Start()、ADC_Stop()
数据读取        ADC_GetValue()、ADC_GetResult()
状态查询        ADC_GetStatus()
中断控制        ADC_IntCmd()、ADC_IrqHandler()
DMA支持        ADC_DmaCmd()
触发配置        ADC_SetTriggerSrc()、ADC_TriggerCmd()


推荐组合:结构化初始化 + 多通道采样 + 轮询读取
c
复制
编辑
ADC_Init()               // 初始化ADC模块(含工作模式、重复模式等)
ADC_SeqChCmd()         // 启用序列通道(支持多通道)
ADC_ChCfg()            // 配置采样时间
ADC_Start()            // 启动采样
ADC_GetStatus()          // 等待采样完成
ADC_GetValue()         // 读取某通道转换结果

特点:
简单稳定;
适合 初期开发、调试或低速采样;
无需中断,利于调试。

函数评测与对比
函数名        用途        优点        注意事项
ADC_Init()        设置工作模式(扫描/单次等)        一次完成配置,结构清晰        需结合其他函数使用
ADC_ChCfg()        配置每个通道的采样时间        控制精度和速度关键点        建议设置足够采样时间
ADC_SeqChCmd()        配置序列采样的通道        可灵活定义多路ADC顺序        通道顺序即采样顺序
ADC_Start()        软件触发开始采样        简洁直接        配合轮询或中断使用
ADC_GetValue()        读取转换值        简单方便        仅支持当前通道
ADC_GetResult()        获取完整结构体结果(含通道号)        适合循环读取        适合与 DMA 配合
ADC_SetTriggerSrc()        设置外部触发源(定时器等)        可用于定时采样        若使用需关闭软件触发
ADC_DmaCmd()        启用 DMA        高速采样关键函数        必须配合 DMA 初始化

快速开发场景推荐函数组合
应用场景        推荐函数组合
单次低速采样        ADC_Init + ADC_SeqChCmd + ADC_Start + ADC_GetValue
多通道定时轮询        上述 + ADC_ChCfg + ADC_GetStatus
自动高速采样(无CPU干预)        ADC_Init + DMA_Init + ADC_DmaCmd + 定时器触发
实时采集+报警(有阈值判断)        ADC_Init + 中断触发 + ADC_IrqHandler

实战小技巧
设置 ADC_SEQ_CONTINUOUS 可以实现自动采样多通道;
ADC_ChCfg 的采样时间对精度非常关键,建议使用 ≥0x60;
若用 DMA,推荐配合 ADC_GetResult()(结构体带通道号);
配合 TIMERx 设置为 ADC 外部触发源,可实现定时采样;
若追求速度极致,可使用 ADC + DMA + 双缓冲 方案。

总结建议
开发阶段        推荐策略
初学入门        使用 ADC_Start() + ADC_GetValue()
多通道精确采样        配合 ADC_SeqChCmd() 与采样时间设置
实时系统/高采样率        采用 ADC_DmaCmd() + 定时器触发 + DMA 回调
工业级应用        使用中断回调+错误检查机制增强可靠性

附加资源推荐
HC32A4A0 官方库文档(M0+ SDK)
示例代码目录:driver/examples/adc/adc_seq_cont_dma
推荐工具:Keil MDK 5 + 官方Pack + logic analyzer调试ADC采样频率


页: [1]
查看完整版本: 评测常用 ADC 初始化与控制函数