打印

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

[复制链接]
6064|17
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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函数的吧

使用特权

评论回复
评论
碧落鸟 2024-11-11 23:40 回复TA
是在while循环中,卡状态不对出不来while循环 
地板
碧落鸟|  楼主 | 2024-11-11 23:29 | 只看该作者
呐咯密密 发表于 2024-11-9 17:34
最后一步?是return卡死?

在最后一个while循环中出不来。
是我没有表述清楚

使用特权

评论回复
5
碧落鸟|  楼主 | 2024-11-11 23:34 | 只看该作者

在这个while循环中出不来

使用特权

评论回复
6
碧落鸟|  楼主 | 2024-11-11 23:49 | 只看该作者
本帖最后由 碧落鸟 于 2024-11-11 23:52 编辑

还有一个问题,如果DMA模式可用,官方提供的块写入函数DMA相比轮询模式能不能减少cpu占用?
因为我看到函数最后总是要等待完成才能退出函数,这样和轮询方式的性能不是相同了吗?

使用特权

评论回复
7
呐咯密密| | 2024-11-14 20:37 | 只看该作者
可以啊,虽然最后还是要等,但是中间写数据的过程是可以释放CPU的

使用特权

评论回复
8
king592| | 2025-2-19 22:16 | 只看该作者
楼主解决这个问题了吗,我最近也是遇到同样的问题,也是卡死在这个white循环里面

使用特权

评论回复
9
king592| | 2025-2-19 22:16 | 只看该作者
我是用的SDIO2,然后这个位置就是返回状态6

使用特权

评论回复
10
classroom| | 2025-6-9 16:03 | 只看该作者
DMA与SDIO状态不同步?

使用特权

评论回复
11
powerantone| | 2025-6-9 18:00 | 只看该作者
如果系统开启了其他中断,且中断处理时间较长,可能会影响SDIO和DMA的正常工作,导致卡死现象。

使用特权

评论回复
12
flycamelaaa| | 2025-6-9 18:00 | 只看该作者
SDIO初始化或配置问题?

使用特权

评论回复
13
stormwind123| | 2025-6-9 19:03 | 只看该作者
可能存在硬件资源冲突,如DMA通道被其他外设占用,导致SDIO无法正常使用DMA进行数据传输。

使用特权

评论回复
14
probedog| | 2025-6-9 19:36 | 只看该作者
优化中断处理.

使用特权

评论回复
15
classroom| | 2025-6-9 20:00 | 只看该作者
检查是否有可用的固件或驱动更新.

使用特权

评论回复
16
静谧晨光| | 2025-6-12 07:31 | 只看该作者
可以打个断点看看,看看运行到哪一步 进入死循环

使用特权

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

本版积分规则

2

主题

6

帖子

0

粉丝