ST意法半导体
直播中

王燕

7年用户 1694经验值
私信 关注
[问答]

为什么SD卡上的fs_mount() 无法使用FAT16进行格式化呢

硬件已配置,初始化通过(如果没有插入卡则失败)。
该卡是 8GB micro SD,在 Windows 上格式化为 exFAT,包含 1 个文件“test.txt”,内容为“HELLO”。
为 FATFS 启用了 exFAT 选项。
这是我的代码:
  • FATFS fs;
  • FRESULT fr = f_mount(&fs, (TCHAR*)"0:/", (BYTE)1);
在下一行中,调试器显示“fr = FR_NO_FILESYSTEM”。
它与用 FAT32 格式化的 SD 卡表现相同。由于该卡是 8GB,因此无法使用 FAT16 进行格式化。



回帖(1)

刘琬婷

2022-12-8 16:06:51
固定的。有点。DMA 不工作但需要。
我是怎么想出来的?我已经将 DMA 函数更改为中断函数并且它起作用了。
然后我不必要地破解了驱动程序不使用 DMA 功能......跳过那部分。
为什么 DMA 不工作?
如何解决?只需在 Cube 的 `System Core / CORTEX_M7` 中禁用 `CPU DCache`。
我的 TouchGFX 应用程序变慢了吗?IDK。我的印象——一点也不。
如果有人试图从 STM32H747I-DISCO(或其他 H7 设置)测试 SD 卡读卡器 - 请记住这一点。您必须禁用 DCache 或 DMA,所有依赖 DMA 的东西都将无法读取垃圾。此外 - 如果您想知道 SDMMC1 中的哪些选项可以启用:除了“存在外部收发器”之外的几乎所有选项 - 虽然我不确定,但我还没有测试启用它。
所以我将我的 SDMMC1 配置为“带自动 dir 电压转换器的 4 位总线”、“启用硬件控制流”、“时钟分频器 = 1”- 为 SD 提供 75MHz。
在 FATFS 中,我启用了所有 RTOS 相关选项,还有 LFN(带堆栈)、UTF8/UNICODE、exFAT。与在 Windows 中格式化 >4GB 的现代卡一起使用。
对于卡检测引脚——我读过它可以使用任何 GPIO 输入。这很奇怪,因为在 STM32H747I-DISCO 的文档中有一个特定的引脚:PI8。虽然它没有配置为输入,因此必须在配置 FATFS 之前手动完成。
就是这样,我花了太多时间才弄明白,也许有人可以使用我在这里学到的东西。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分