[研电赛技术支持] SDIO+DMA传输数据会影响SIP4+DMA传输数据,怎么解决?

[复制链接]
3959|14
 楼主| 叽叽歪歪7788 发表于 2024-11-14 13:34 | 显示全部楼层 |阅读模式
本帖最后由 叽叽歪歪7788 于 2024-11-14 13:36 编辑

问题描述:GD32F407II使用SIP4全双工+DMA1通道4作为从机只发送数据,同时SDIO+DMA通道3向SD卡写入数据,程序在运行过程中,只要SDIO开启了DMA就会导致SPI4发送数据出现数据丢失。
C:\Users\admim\Desktop\01\1.png
C:\Users\admim\Desktop\01\.2.png

应用图

应用图

所使用的DMA通道

所使用的DMA通道
onlycook 发表于 2024-11-14 15:03 | 显示全部楼层
检查DMA1通道3(用于SDIO)和DMA1通道4(用于SPI4)的优先级设置。如果SDIO的DMA优先级高于SPI4的DMA优先级,当SDIO活动频繁时,可能会抢占SPI4的DMA资源,导致SPI4的数据传输被延迟或中断。
laocuo1142 发表于 2024-11-14 16:36 | 显示全部楼层
调整DMA优先级,使SPI4的DMA能够有足够的资源来及时传输数据。
flycamelaaa 发表于 2024-11-14 17:06 | 显示全部楼层
检查SPI4和SDIO的中断处理函数,它们是否能够正确处理中断,并且没有导致优先级反转或死锁的情况。

评论

SPI4异常停止,卡在TBE=0,也就是发送缓冲区不为空  发表于 2024-11-19 13:32
powerantone 发表于 2024-11-14 18:26 | 显示全部楼层
减少中断的使用,或者优化中断处理代码
jcky001 发表于 2024-11-14 19:49 | 显示全部楼层
使用调试器逐步跟踪SPI4和SDIO的DMA传输过程,观察是否有异常行为。
probedog 发表于 2024-11-14 20:00 | 显示全部楼层
可能是总线冲突
classroom 发表于 2024-11-14 21:12 | 显示全部楼层
检查SPI4和SDIO的引脚连接,没有短路或断路问题。
两只袜子 发表于 2024-11-14 22:00 | 显示全部楼层
换SPI4和SDIO的外设或GD32F407II芯片
 楼主| 叽叽歪歪7788 发表于 2024-11-19 13:30 | 显示全部楼层

如果是走线冲突,要怎么解?
stormwind123 发表于 2024-11-21 19:26 | 显示全部楼层
将SPI4和SDIO的DMA传输配置为全双工和块传输模式看看
 楼主| 叽叽歪歪7788 发表于 2024-12-11 13:19 | 显示全部楼层
onlycook 发表于 2024-11-14 15:03
检查DMA1通道3(用于SDIO)和DMA1通道4(用于SPI4)的优先级设置。如果SDIO的DMA优先级高于SPI4的DMA优先级 ...

非常感谢,确实是DMA通道的优先级问题,调整之后解决了
 楼主| 叽叽歪歪7788 发表于 2024-12-11 13:20 | 显示全部楼层
laocuo1142 发表于 2024-11-14 16:36
调整DMA优先级,使SPI4的DMA能够有足够的资源来及时传输数据。

调整DMA通道优先级解决了
等你下课 发表于 2025-1-31 19:08 | 显示全部楼层
优化中断处理代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

5

帖子

0

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