我们知道,使用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哦。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
单片机
+关注
关注
6043文章
44617浏览量
638338 -
adc
+关注
关注
99文章
6533浏览量
545690 -
GD32
+关注
关注
7文章
413浏览量
24453 -
muc
+关注
关注
0文章
15浏览量
11450
发布评论请先 登录
相关推荐
GD32F310-ADC规则组连续采样
即可配置。有一点疑问的地方就是ADC_CTL1寄存器中的 ETSRC[2:0] 的软件触发选项,目前是不用配置也不影响你的软件触发ADC转换。注入通道的 ETSIC[2:0] 没有测试,大致应该是一样的。原作者:兆易创新
发表于 10-21 15:21
在GD32F427开发板上实现ADC规则组连续采样
ADC 简介及特点器件中集成了一个 12 位 2.6 MSPS 多通道 ADC。 一共有19个多路复用通道:16个外部
发表于 11-25 11:11
STM32G070 DMA ADC通道数据错位
STM32G070 配置DMA ADC转换。想通过软件定时触发连续转换一个序列后停止。测试时发现采样时间设置快了会出现ADC通道数据
发表于 03-01 16:56
【GD32】GD32读取ADC数据
GD32的ADC有很多模式,这里教大家使用最简单的软件触发读取ADC,我使用的芯片是 GD32F350K8U6使用步骤1.初始化IO引脚设置为模拟输入模式2.初始
发表于 12-02 15:06
•28次下载
【GD32】GD32 DMA+ADC多通道扫描
芯片:GD32F350 运行在8M目标:每10ms读取三个adc通道,并且通过DMA传输流程1.配置DMA传输2.配置ADC模式和通道3.配
发表于 12-02 15:06
•24次下载
如何通过GD32 MCU内部ADC参考电压通道提高采样精度?
ADC采样精度受很多因素影响,比如电源波动、参考电压波动、输入信号波动等,GD32 MCU内部提供了一个参考电压通道,理论上可以优化由于电源和参考电压较大波动引入的
GD32 ADC转换时间如何计算?
GD32 MCU当前产品的ADC都是SAR ADC,它有着转换速度快,精度高的优点,刚好适合在一些需要快速ADC转换的场合使用,比如电机应用。那么小伙伴们知道如何计算
评论