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

[复制链接]
1211|2
 楼主| 聚沃科技 发表于 2024-8-19 09:09 | 显示全部楼层 |阅读模式
我们知道,使用ADC规则组(常规组)多通道采样时,必须要配合DMA使用,但有的小伙伴遇到这种应用下数据错位的情况,比如预设的转换顺序是通道0->通道1->通道2,但定义的数据buffer中的采样值却是通道1->通道2->通道0,那这是为什么呢?
出现这种情况的一个可能原因是——ADC先使能再去配置DMA。我们来看下面的时序:
图片2.png
如果先配置并使能ADC,当触发信号来临,ADC开始转换,若ADC转换到通道1的时候,DMA才配置并使能,那么DMA是不会搬运通道0的数据的,而是当通道1的转换结束后,DMA才开始搬运第一个数据到buffer[0],所以buffer中的数据顺序就变成了数据1->数据2->数据0
我们再来看下先配置DMA再配置ADC的时序:
图片3.png
ADC在转换第一个通道时,DMA已经准备好搬运数据,所以DMA的第一次搬运发生在ADC的第一个通道转换完成后,故数据将不会错位。
所以小伙伴知道了吗?ADC+DMA使用的时候,一定要先配置DMA,再配置ADC哦。

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

classroom 发表于 2024-8-19 18:43 | 显示全部楼层
ADC+DMA使用的时候,一定要先配置DMA,再配置ADC哦。
yangxiaor520 发表于 2024-8-21 08:20 来自手机 | 显示全部楼层
应该是你的DMA配置没对,检查一下代码。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

170

主题

190

帖子

13

粉丝
快速回复 在线客服 返回列表 返回顶部