[APM32F003]

APM32F003 ADC缓冲寄存器的测试使用

[复制链接]
2436|2
手机看帖
扫描二维码
随时随地手机跟帖
mengtu123|  楼主 | 2022-7-18 17:55 | 显示全部楼层 |阅读模式
APM32F003一共有9个ADC通道: 8个多功能的外部输入通道和1个内部通道.
ADC缓冲寄存器ADC_DATABUF,有点类似DMA的简化版,提高了ADC时的工作效能.
需要注意缓冲寄存器ADC_DATABUF仅用于单通道连续转换模式和扫描模式,并且两种模式储存到缓冲寄存器的方式是有微小的差异.以下我们介绍一下各自的差异点
单通道连续转换模式的时候,ADC每一次的转换结果都会逐一地存储到缓冲寄存器.当缓冲寄存器被填满后可以产生中断.
下图是单通道扫描模式中断后读取到的缓冲寄存器的值
9c8905a56b77aa5beac1835a9dcbef4.png
多通道扫描模式的时候,ADC转换结果会按照通道与缓冲寄存器逐一对应,如下图,是CH0~CH2的3通道的扫描模式,当最后一个通道转换完成后,可以产生中断
同时需要注意多通道扫描模式:只能从通道0->1->2...按照通道的顺序逐一进行扫描.
下图是多通道扫描模式中断后读取到的缓冲寄存器的值
7d7c30748210c5b48f653c2dab3f71f.png

具体测试程序请参考官方SDK包Examples/ADC/ADC_MultiChannelScan,该例程是启用了ADC_DATABUF的3通道扫描模式


使用特权

评论回复
Fanexs168| | 2022-7-18 22:07 | 显示全部楼层
貌似只支持顺序通道扫描,没法“跳过”中间通道,即0->1->2->4->7这样的“间隔通道”没法这样用。而且AIN3 PD2通道与SWCLK冲突,硬要用某种程度上要考虑SWD脚的复用,实际ADC的扫描+内部缓存功能没法太好使用上
实际应用,比如AIN0/1/2/7,建议传统老方案,在单次AD采样完成中断里中切换下一个AD通道、读取数据寄存器,再开启另一次ADC转换。逐次进行单次采样。

使用特权

评论回复
mengtu123|  楼主 | 2022-7-19 09:33 | 显示全部楼层
Fanexs168 发表于 2022-7-18 22:07
貌似只支持顺序通道扫描,没法“跳过”中间通道,即0->1->2->4->7这样的“间隔通道”没法这样用。而且AIN3  ...

是的只支持顺序通道扫描,AIN3 PD2通道与SWCLK冲突,确实要使用扫描模式,硬件上可以跳过AIN3,软件强制扫描AIN3,但是会导致无法仿真问题.

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则