打印

ADC降低采样时间后工作不正常

[复制链接]
290|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zyj8848|  楼主 | 2023-3-12 20:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#申请原创# #GD-FAQ#

问题
某客户反馈使用GD32F450VI的ADC时,当采样周期设置为56时,运行正常。当将采样周期设置为3时,使用DMA读取ADC寄存器一直为0,并且ADC ROVF标志位置位。

问题分析:
客户程序不能直接外发,根据客户所说配置单独测试,ADC0有9路通道,ADC1有4路通道,采样周期为3,工作在独立模式,采用DMA搬运。单独测试并没有发现问题。怀疑是客户使用其他外设和DMA抢占总线导致的,于是让客户关闭其他外设再进行测试,问题还是会复现。让客户将ADC配置、DMA配置以及main函数的内容截图发出,发现客户先进行ADC的初始化使能,再进行的DMA初始化使能。将初始化使能顺序调换后,问题解决。

结论:
客户先初始化使能ADC,再初始化使能DMA的情况下。若ADC采样周期较长,在ADC还未采集转换完成时,DMA已经完成初始化使能,此时DMA可以正确搬运ADC数据;若ADC采样周期较短,在ADC采集完成后发出DMA搬运请求,但DMA还未初始化使能完成,此时ADC就会发生溢出错误。所以在使用ADC+DMA时,要注意ADC和DMA初始化使能的顺序,要将DMA设置好后,再进行ADC的采样。


使用特权

评论回复
沙发
Betty1299| | 2023-12-21 22:28 | 只看该作者
可能是因为周期太慢了,导致的数据采集不到了?

使用特权

评论回复
板凳
Alina艾| | 2023-12-21 23:13 | 只看该作者
你得调大点吧,不然咋采集啊?

使用特权

评论回复
地板
Annie556| | 2023-12-22 08:22 | 只看该作者
对,一般都是DMA先开启,再开ADC的

使用特权

评论回复
5
Belle1257| | 2023-12-22 09:37 | 只看该作者
这个不错,确实初始化顺序会影响程序运行的

使用特权

评论回复
6
Betty996| | 2023-12-22 10:56 | 只看该作者
原来还有这个逻辑在里面,先开启DMA再配置ADC

使用特权

评论回复
7
Candic12e| | 2023-12-22 13:55 | 只看该作者
好像这个我听说过,都是这个顺序才行的

使用特权

评论回复
8
Estelle1999| | 2023-12-22 16:12 | 只看该作者
遇到这种问题,确实头疼,因为想不到初始化顺序还会影响运行

使用特权

评论回复
9
Carina卡| | 2023-12-22 17:22 | 只看该作者
挺好,直接调整一下顺序就好了

使用特权

评论回复
10
Carmen7| | 2023-12-22 18:18 | 只看该作者
有些时候是这样,初始化会影响逻辑执行的

使用特权

评论回复
11
Charlotte夏| | 2023-12-22 19:16 | 只看该作者
你这也挺厉害,能知道改初始化顺序,解决这个问题

使用特权

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

本版积分规则

5

主题

7

帖子

3

粉丝