打印
[APM32F0]

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

[复制链接]
5090|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
APM32F003一共有9个ADC通道: 8个多功能的外部输入通道和1个内部通道.
ADC缓冲寄存器ADC_DATABUF,有点类似DMA的简化版,提高了ADC时的工作效能.
需要注意缓冲寄存器ADC_DATABUF仅用于单通道连续转换模式和扫描模式,并且两种模式储存到缓冲寄存器的方式是有微小的差异.以下我们介绍一下各自的差异点
单通道连续转换模式的时候,ADC每一次的转换结果都会逐一地存储到缓冲寄存器.当缓冲寄存器被填满后可以产生中断.
下图是单通道扫描模式中断后读取到的缓冲寄存器的值

多通道扫描模式的时候,ADC转换结果会按照通道与缓冲寄存器逐一对应,如下图,是CH0~CH2的3通道的扫描模式,当最后一个通道转换完成后,可以产生中断
同时需要注意多通道扫描模式:只能从通道0->1->2...按照通道的顺序逐一进行扫描.
下图是多通道扫描模式中断后读取到的缓冲寄存器的值


具体测试程序请参考官方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,但是会导致无法仿真问题.

使用特权

评论回复
地板
woai32lala| | 2022-8-31 19:15 | 只看该作者
本帖最后由 woai32lala 于 2022-8-31 20:14 编辑
mengtu123 发表于 2022-7-19 09:33
是的只支持顺序通道扫描,AIN3 PD2通道与SWCLK冲突,确实要使用扫描模式,硬件上可以跳过AIN3,软件强制扫描 ...

请问怎么跳过,现在使用了SWD作为下载口,一仿真就卡死,硬件上怎么操作

使用特权

评论回复
5
勇敢的大白菜| | 2022-9-1 18:14 | 只看该作者
这个写的不错,深入浅出的,不错的东西。

使用特权

评论回复
6
嵌入小菜菜| | 2022-9-1 21:17 | 只看该作者
9个通道,确实不错,很棒的东西。

使用特权

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

本版积分规则

4

主题

8

帖子

0

粉丝