GD32F450 SDIO+FATFS不稳定,连续工作十几小时后SD卡读写错误
本帖最后由 x316639495 于 2023-3-30 12:01 编辑项目中使用GD32F450ZIT6作为主控,固件库为GD32F4xx_Firmware_Library_V3.0.4,通过4线SDIO+FatfsR0.14读写SD卡,SD卡为256GB高速卡exFAT分区格式。
SD卡写入两个文件,文件1:每250ms写入64KB,文件2:每秒写入512字节。每小时新建一个文件1和文件2进行存储。
目前MCU可以正常工作,但连续工作十几个小时后,SD卡会发生读写错误,破坏SD卡的文件系统,在电脑上无法打开SD卡,必须格式化。SDIO采用SD_POLLING_MODE和SD_DMA_MODE模式都会出现上述问题。
SDIO特定功能使能和SDIO读等待模式使能。这两个功能开启或不开启都会出现上述问题。
请问这个问题是什么原因引起的,有没有好的解决办法。 会不会和FF_USE_FASTSEEK有关系。
一直写,导致文件太大出问题了? 我是GD代理有需要优价一起交流13242085214 sagade 发表于 2023-3-31 15:27
会不会和FF_USE_FASTSEEK有关系。
一直写,导致文件太大出问题了?
不是,每小时保存一个文件,文件在950M。用SPI模式写SD卡是没有问题的,现在就是SDIO有问题,哪怕是SDIO单线模式,强制单块读写,还是出现相同的问题 那会不会是字节对齐的关系?
dma_receive_config函数里面改成dma_struct.memory_width = DMA_MEMORY_WIDTH_8BIT; ? 只有这个功能吗,,其他外设或者中断什么的会不会影响 zeshoufx 发表于 2023-4-3 17:20
只有这个功能吗,,其他外设或者中断什么的会不会影响
其他功能都关闭了,就剩一个1ms的systick计时器 sagade 发表于 2023-4-3 16:52
那会不会是字节对齐的关系?
dma_receive_config函数里面改成dma_struct.memory_width = DMA_MEMORY_WIDTH_ ...
不是。不用DMA也还是一样的问题, 我用450倒是没有问题,同样的程序烧录到470,重启大概3,4十次就有一次出现no file system. x316639495 发表于 2023-4-3 17:57
其他功能都关闭了,就剩一个1ms的systick计时器
那就有点怪了 是不是频率太高了? 降低sdio的读写速度。 估计把文件系统的描述都给覆盖了吧。 是不是新建文件的时候出现问题了?没有关闭上一个文件。 SD卡有没可能是扩容的? 还是不够稳定。 SDIO总线快了,至少四倍速。降低速度吧。 fatfs应该不合适,效率太低了。 fatfs 会很费单片机内存 fatfs文件系统是sdio写入sd卡速度快还是spi速度快?