[STM32F7] 使用CubeIDE和Nucleo F767ZI开发板与SD卡通信

[复制链接]
591|11
小库里 发表于 2025-9-20 22:39 | 显示全部楼层 |阅读模式
用CubeIDE和Nucleo F767ZI开发板与SD卡通信,并且已成功通过SDMMC单比特模式读写数据。

但在我的项目中,我还需要使用UART通信。每当我启用任意可用UART时,就无法再向SD卡中的任何文件写入数据,仅能实现读取功能。

有人知道如何解决这个问题吗?

公羊子丹 发表于 2025-9-21 07:13 | 显示全部楼层
可能是 DMA 冲突了,SDMMC 和 UART 同时开 DMA 时要注意通道分配。
周半梅 发表于 2025-9-21 07:14 | 显示全部楼层
检查下 CubeMX 里 SDMMC 和 UART 的中断优先级设置,可能 SD 的中断被抢占。
帛灿灿 发表于 2025-9-21 07:15 | 显示全部楼层
你现在是单比特模式,带宽不大,但写操作比读操作更依赖中断和 DMA,容易受干扰。
童雨竹 发表于 2025-9-21 07:16 | 显示全部楼层
试试把 UART 改成轮询或者中断模式,先排除 DMA 干扰的问题。
万图 发表于 2025-9-21 07:17 | 显示全部楼层
有些时候 F7 的缓存也会导致 SD 卡写入异常,可以加 SCB_CleanInvalidateDCache。
Wordsworth 发表于 2025-9-21 07:17 | 显示全部楼层
确认一下 HAL 库里的 f_write 返回值,看看是不是超时或者 busy。
Bblythe 发表于 2025-9-21 07:18 | 显示全部楼层
Nucleo F767ZI 的 UART 默认映射可能和 SDMMC 脚位冲突了,硬件配置要再核对。
Pulitzer 发表于 2025-9-21 07:19 | 显示全部楼层
SDMMC 写操作时如果 CPU 被 UART 占用太久,也可能写失败,可以调高 SDMMC 的优先级。
Uriah 发表于 2025-9-21 07:20 | 显示全部楼层
建议打开 CubeIDE 的 FreeRTOS support,用任务调度隔离 UART 和 SD 的操作。
Clyde011 发表于 2025-9-21 07:24 | 显示全部楼层
我以前遇到过类似情况,把 UART 的优先级调低后,SD 写操作就恢复正常了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

52

主题

52

帖子

0

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