你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

多DMA数据流问题

[复制链接]
田eq 提问时间:2025-7-9 21:12 / 未解决

情况如下:stm32H7配置了一个adc进行采样,通过dma进行数据传输,串口接收和发送命令,用两个dma数据流通道,采用的空闲中断。

问题:adc一直在中断中,调试未进入串口中断,关闭adc后串口正常进入中断,怀疑是中断优先级没设置好,降低adc的dma中断优先级后再调试还是没法进入串口中断,想请教一下这是什么原因,目前就只能先关闭adc中断后再接受串口指令再开启adc

收藏 评论7 发布时间:2025-7-9 21:12

举报

7个回答
y369369 回答时间:前天 11:03

试试双缓冲+DMA半传输中断

田eq 回答时间:前天 13:00

y369369 发表于 2025-7-10 11:03
试试双缓冲+DMA半传输中断

不好意思没说清楚,配置就是双缓冲,谢谢回复❤️

xmshao 回答时间:前天 14:25

你目前ADC的采样是连续采样还是单次采样?

用于ADC结果的DMA工作在Normal模式还是Circular模式?

不能进的中断到底是DMA中断还是UART中断本身,比方RX接收中断、空闲中断。

田eq 回答时间:前天 17:40

xmshao 发表于 2025-7-10 14:25
你目前ADC的采样是连续采样还是单次采样?</p>
<p>

[md]ADC设置的是连续采样,ADC 的DMA使用的是circular模式,UART的DMA是正常模式,是UART的DMA空闲中断不能进入,ADC的DMA传输完成中断和半传输完成中断可以进入,谢谢你的回复。

xmshao 回答时间:昨天 10:24

田eq 发表于 2025-7-10 17:40
ADC设置的是连续采样,ADC 的DMA使用的是circular模式,UART的DMA是正常模式,是UART的DMA空闲中断不 ...

[md]调试建议:

1、尽可能将ADC采样率放低,以不影响性能需求为原则;

2、关闭不必要的中断,尤其DMA半完成中断;

3、综合考虑各DMA的优先级,合理安排DMA优先级,这里可以适当提升UART-RX DMA的优先级;

4、同理综合考虑中断优先级的安排,在无明显抢占需求的任务或事件时,不妨都安排相同优先级,且尽量让中断服务程序短小精悍,对耗时的相关处理不妨挪走主流程来执行;

xmshao 回答时间:昨天 12:06

我这边模拟的场景,的确可以碰到你 说的情况。所以,你重点要对ADC采样率、DMA中断做些优化。

田eq 回答时间:昨天 15:39

xmshao 发表于 2025-7-11 12:06
我这边模拟的场景,的确可以碰到你 说的情况。所以,你重点要对ADC采样率、DMA中断做些优化。
...

谢谢您百忙之中还回复该帖,我会采取你的建议合理改进一下,后续解决后第一时间回复您,非常感谢!

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版