打印

GD32 ADC规则组多通道采样,数据发生错位?

[复制链接]
528|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
我们知道,使用ADC规则组(常规组)多通道采样时,必须要配合DMA使用,但有的小伙伴遇到这种应用下数据错位的情况,比如预设的转换顺序是通道0->通道1->通道2,但定义的数据buffer中的采样值却是通道1->通道2->通道0,那这是为什么呢?
出现这种情况的一个可能原因是——ADC先使能再去配置DMA。我们来看下面的时序:
如果先配置并使能ADC,当触发信号来临,ADC开始转换,若ADC转换到通道1的时候,DMA才配置并使能,那么DMA是不会搬运通道0的数据的,而是当通道1的转换结束后,DMA才开始搬运第一个数据到buffer[0],所以buffer中的数据顺序就变成了数据1->数据2->数据0
我们再来看下先配置DMA再配置ADC的时序:
ADC在转换第一个通道时,DMA已经准备好搬运数据,所以DMA的第一次搬运发生在ADC的第一个通道转换完成后,故数据将不会错位。
所以小伙伴知道了吗?ADC+DMA使用的时候,一定要先配置DMA,再配置ADC哦。

教程由GD32 MCU方案商聚沃科技原创发布,了解更多GD32 MCU教程,关注聚沃科技官网,GD32MCU技术交流群:859440462

使用特权

评论回复
沙发
classroom| | 2024-8-19 18:43 | 只看该作者
ADC+DMA使用的时候,一定要先配置DMA,再配置ADC哦。

使用特权

评论回复
板凳
丙丁先生| | 2024-8-20 08:29 | 只看该作者
通过这次的问题分析和解决过程,我们得到了一个重要的教训:在涉及ADC和DMA的应用场景中,一定要先配置DMA,再配置ADC。这个简单的配置顺序调整,可以有效避免数据错位问题,确保数据采集的准确性和系统的高效运行。

使用特权

评论回复
地板
yangxiaor520| | 2024-8-21 08:20 | 只看该作者
应该是你的DMA配置没对,检查一下代码。

使用特权

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

本版积分规则

170

主题

190

帖子

7

粉丝