AT32F403A芯片SDIO使用DMA连续写数据卡死

[复制链接]
 楼主| 碧落鸟 发表于 2024-11-7 22:33 | 显示全部楼层 |阅读模式
AT32F403A芯片SDIO使用DMA连续写数据卡死。工程用了rtthread nano,fatfs。使用开发板和我自己的主板都是在sd_mult_blocks_write函数最后一步陷入死循环。
单块写入没问题,使用轮询模式也没问题。这个函数是官方例程at32_sdio.c种的。
该怎么办

呐咯密密 发表于 2024-11-9 17:34 | 显示全部楼层
最后一步?是return卡死?
豆杀包 发表于 2024-11-9 17:57 | 显示全部楼层
不应该卡死在return函数的吧

评论

是在while循环中,卡状态不对出不来while循环  发表于 2024-11-11 23:40
 楼主| 碧落鸟 发表于 2024-11-11 23:29 | 显示全部楼层
呐咯密密 发表于 2024-11-9 17:34
最后一步?是return卡死?

在最后一个while循环中出不来。
是我没有表述清楚
 楼主| 碧落鸟 发表于 2024-11-11 23:34 | 显示全部楼层
65447673223a70c4fd.png
在这个while循环中出不来
 楼主| 碧落鸟 发表于 2024-11-11 23:49 | 显示全部楼层
本帖最后由 碧落鸟 于 2024-11-11 23:52 编辑

还有一个问题,如果DMA模式可用,官方提供的块写入函数DMA相比轮询模式能不能减少cpu占用?
因为我看到函数最后总是要等待完成才能退出函数,这样和轮询方式的性能不是相同了吗?
呐咯密密 发表于 2024-11-14 20:37 | 显示全部楼层
可以啊,虽然最后还是要等,但是中间写数据的过程是可以释放CPU的
king592 发表于 2025-2-19 22:16 | 显示全部楼层
楼主解决这个问题了吗,我最近也是遇到同样的问题,也是卡死在这个white循环里面
king592 发表于 2025-2-19 22:16 | 显示全部楼层
我是用的SDIO2,然后这个位置就是返回状态6
classroom 发表于 2025-6-9 16:03 | 显示全部楼层
DMA与SDIO状态不同步?
flycamelaaa 发表于 2025-6-9 18:00 | 显示全部楼层
SDIO初始化或配置问题?
powerantone 发表于 2025-6-9 18:00 | 显示全部楼层
如果系统开启了其他中断,且中断处理时间较长,可能会影响SDIO和DMA的正常工作,导致卡死现象。
stormwind123 发表于 2025-6-9 19:03 | 显示全部楼层
可能存在硬件资源冲突,如DMA通道被其他外设占用,导致SDIO无法正常使用DMA进行数据传输。
probedog 发表于 2025-6-9 19:36 | 显示全部楼层
优化中断处理.
classroom 发表于 2025-6-9 20:00 | 显示全部楼层
检查是否有可用的固件或驱动更新.
静谧晨光 发表于 2025-6-12 07:31 | 显示全部楼层
可以打个断点看看,看看运行到哪一步 进入死循环
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

6

帖子

0

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