打印
[研电赛技术支持]

SDIO+DMA传输数据会影响SIP4+DMA传输数据,怎么解决?

[复制链接]
1441|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 叽叽歪歪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

1.png (21.03 KB )

应用图

应用图

2.png (339.7 KB )

所使用的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的中断处理函数,它们是否能够正确处理中断,并且没有导致优先级反转或死锁的情况。

使用特权

评论回复
评论
叽叽歪歪7788 2024-11-19 13:32 回复TA
SPI4异常停止,卡在TBE=0,也就是发送缓冲区不为空 
5
powerantone| | 2024-11-14 18:26 | 只看该作者
减少中断的使用,或者优化中断处理代码

使用特权

评论回复
6
jcky001| | 2024-11-14 19:49 | 只看该作者
使用调试器逐步跟踪SPI4和SDIO的DMA传输过程,观察是否有异常行为。

使用特权

评论回复
7
probedog| | 2024-11-14 20:00 | 只看该作者
可能是总线冲突

使用特权

评论回复
8
classroom| | 2024-11-14 21:12 | 只看该作者
检查SPI4和SDIO的引脚连接,没有短路或断路问题。

使用特权

评论回复
9
两只袜子| | 2024-11-14 22:00 | 只看该作者
换SPI4和SDIO的外设或GD32F407II芯片

使用特权

评论回复
10
叽叽歪歪7788|  楼主 | 2024-11-19 13:30 | 只看该作者

如果是走线冲突,要怎么解?

使用特权

评论回复
11
stormwind123| | 2024-11-21 19:26 | 只看该作者
将SPI4和SDIO的DMA传输配置为全双工和块传输模式看看

使用特权

评论回复
12
叽叽歪歪7788|  楼主 | 2024-12-11 13:19 | 只看该作者
onlycook 发表于 2024-11-14 15:03
检查DMA1通道3(用于SDIO)和DMA1通道4(用于SPI4)的优先级设置。如果SDIO的DMA优先级高于SPI4的DMA优先级 ...

非常感谢,确实是DMA通道的优先级问题,调整之后解决了

使用特权

评论回复
13
叽叽歪歪7788|  楼主 | 2024-12-11 13:20 | 只看该作者
laocuo1142 发表于 2024-11-14 16:36
调整DMA优先级,使SPI4的DMA能够有足够的资源来及时传输数据。

调整DMA通道优先级解决了

使用特权

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

本版积分规则

1

主题

5

帖子

0

粉丝