STM32F407VET FatFs f_close返回FR_DISK_ERR

时间:2018-02-01 13:03:09

标签: embedded sd-card stm32f4discovery stm32f4 fatfs

我使用chan FatFS库将SD卡(16Gb Sandisk ultra micro SD)连接到具有SDIO协议的STM32F407微控制器。当我尝试将数据写入现有文件时,f_write返回FR_OK并返回写入字节数(此值等于要写入的字节数),但f_close()返回FR_DISK_ERR,最后文件为空。 通过更多实验,我发现如果我使用64Kb单位分配大小格式化micro SD卡并且现有文件中包含一些文本,那么我可以将64Kb数据写入文件但是f_close()返回FR_DISK_ERR,最后文件不是空的。我能够在Windows 10操作系统中看到数据。 如果现有文件中没有文本,那么即使f_write返回FR_OK但f_close返回FR_DISK_ERR,我也会得到一个空文件。 总之,当我尝试在我从PC上创建的文本文件上使用f_write时,我可以覆盖该文件的内容直到64Kb。但我无法使用我用f_open

创建的空文件

我遇到了同样问题的类似帖子

TMS320F2812 FatFs f_write returns FR_DISK_ERR

我尝试了上面帖子中给出的解决方案,但它没有奏效。由于我的控制器中有192K RAM,我认为它足以让这个FatFs模块工作。我的堆栈大小约为13Kb,堆大小为4Kb,这对于此应用来说太多了。 SD卡的供电电压为3.3V。

我深入研究代码以查看错误发生的位置,并发现我在设置卡的块大小时遇到​​SD_ILLEGAL_CMD错误。内部f_close(ff.c文件) - > f_sync(ff.c文件) - > move_window(ff.c文件) - > disk_read(diskio.c文件) - > SD_ReadBlock(sdcard.c文件)正在返回设置卡的块大小时SD_ILLEGAL_CMD错误。

任何解决方案都表示赞赏。如果需要更多信息,请随时询问,我将更新更多信息。

Chan FatFs版本 - R0.07e

0 个答案:

没有答案