本帖最后由 Alden 于 2022-5-7 12:01 编辑
#技术资源# #申请原创#
ADC+DMA采样,发生通道错位问题
为方便ADC多通道采样,经常会使用DMA获取转换数据,有时会发现DMA获取到的通道出现错误。
下面是产生这个问题的代码配置:
上图的配置中,先初始化了ADC并直接开始了转化并且ADC采样时间很短,然后才开始配置DMA。
导致DMA配置过程中,ADC就已经采样了几个通道,DMA才开始搬运数据,导致数据出现错位的情况。
解决这种问题的办法也很简单:
1、DMA先与ADC初始化,都配置完之后再开始ADC采样。
2、ADC初始化之后不使能采样,DMA初始化后面再加ADC_SoftwareStartConvCmd(ADC1, ENABLE);
3、DMA是非连续转化时,需要关闭ADC和DMA,再开启ADC和DMA使能,见下图。
这样就可以得到正确的通道数据。
DMA-ADC - text.zip
(4.09 MB)
|