打印
[应用相关]

ADC+DMA+STM32CUBEMX 造成数据溢出的问题

[复制链接]
470|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
配置-> 多通道ADC扫描模式+DMA无缓冲区+循环DMA
最近使用STM32F405RGT6进行开发,移植103c8t6的ADC+DMA是发现ADC模块中的值全为零,单步调试后发现ADC转换了一次(一个通道值)后就停止了转换.
单步调试发现ADC1->SR中 OVR溢出标志置1了,查询数据手册得知此标记为DMA溢出标志.
怀疑是DMA出现问题.
单步调试观察DMA2_Stream0内寄存机的值,发现初始化后与期望的值不一致
DMA2_Stream0->FCR (FIFO控制寄存器被设置为0x21)

查看STM32自动生成代码后发现DMA时钟使能在ADC初始化使能之后.
相当于HAL_ADC_MspInit 函数中对DMA的操作都是无效的.
解决方案:
先使能DMA时钟,然后进行DMA操作
注:因为初始化代码是CUBE自动生成的,所以这个问题有可能在软件更新后被修复,

后续: 使用DMA的外设初始化需要在DMA时钟使能之后进行.

使用特权

评论回复
沙发
香水城| | 2022-2-28 11:18 | 只看该作者
谢谢分享,
这里有个类似话题分享,一个跟初始化顺序有关的异常话题

使用特权

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

本版积分规则

21

主题

62

帖子

0

粉丝