[APM32E1] ADC+DMA采样,通道错位问题

[复制链接]
 楼主| Alden 发表于 2022-5-7 12:01 | 显示全部楼层 |阅读模式
本帖最后由 Alden 于 2022-5-7 12:01 编辑

#技术资源# #申请原创#
ADC+DMA采样,发生通道错位问题

为方便ADC多通道采样,经常会使用DMA获取转换数据,有时会发现DMA获取到的通道出现错误。
ADC通道错误示例.png
下面是产生这个问题的代码配置:
main().png
ADC_Init.png
DMA_Init.png
上图的配置中,先初始化了ADC并直接开始了转化并且ADC采样时间很短,然后才开始配置DMA。
导致DMA配置过程中,ADC就已经采样了几个通道,DMA才开始搬运数据,导致数据出现错位的情况。
解决这种问题的办法也很简单:
1、DMA先与ADC初始化,都配置完之后再开始ADC采样。
2、ADC初始化之后不使能采样,DMA初始化后面再加ADC_SoftwareStartConvCmd(ADC1, ENABLE);
3、DMA是非连续转化时,需要关闭ADC和DMA,再开启ADC和DMA使能,见下图。
DMA普通模式.png
DMA中断.png
这样就可以得到正确的通道数据。
c48b40846c22233bf377a6110cdeb8c.png
DMA-ADC - text.zip (4.09 MB, 下载次数: 27)




冒冒mao 发表于 2022-5-14 13:10 | 显示全部楼层
来学习,学习
lidi911 发表于 2022-5-14 18:45 来自手机 | 显示全部楼层
感谢分享经验
kai迪皮 发表于 2022-5-19 10:52 | 显示全部楼层
感谢分享经验
您需要登录后才可以回帖 登录 | 注册

本版积分规则

49

主题

113

帖子

2

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