STM32
直播中

尤立虔

9年用户 1068经验值
擅长:控制/MCU
私信 关注
[问答]

用freerots+sdio驱动tf卡遇到的几个疑问求解

在下用freerots+sdio驱动tf卡,出了不少问题
1.读取数据经常卡死
解决方式:由4位模式改为1位模式。稳定性倒是上去了,但公司要求速度,于是找另外的方式,发现sd_diskio.c里面没有使用dma传输,
      于是改为dma传输,稳定性和速度都看似解决了。

2.大数据操作出错
现象:问题1说了,问题看似解决了,但实际还有问题,加入以512个数据长度进行操作很稳定,数据也没错误,但如果超过512进行操作就会
      偶尔出问题,这个偶尔是只也有正确的,也有不正确的,并且不正确始终就是那几个不正确,且每次都一样。
      如果我改回1位非dma方式就没有错误。也就是说问题应该出在dma上,这下完全不知道怎么解决了。

回帖(1)

陈键

2024-5-7 17:52:42
在使用FreeRTOS + SDIO驱动TF卡时,遇到的问题和解决方案如下:

1. 读取数据经常卡死
   解决方式:将4位模式改为1位模式,以提高稳定性。但为了满足公司对速度的要求,可以尝试以下方法:
   a. 在sd_diskio.c文件中启用DMA传输。这样可以在保持稳定性的同时提高速度。

2. 大数据操作出错
   现象:使用512个数据长度进行操作时,数据稳定且无错误。但当数据长度超过512时,偶尔会出现错误,且错误始终是相同的几个。
   解决思路:
   a. 检查SD卡的容量和速度等级,确保它们符合您的需求。
   b. 检查FreeRTOS和SDIO驱动的配置,确保它们正确设置以支持大数据传输。
   c. 在sd_diskio.c文件中,检查是否有任何限制导致超过512字节的数据传输出现问题。如果有,尝试修改这些限制。
   d. 检查硬件连接,确保SD卡与微控制器之间的连接稳定且无干扰。
   e. 如果可能,尝试使用另一张SD卡或更换SD卡插槽,以排除硬件故障的可能性。

3. 其他建议
   a. 在进行大数据传输时,可以考虑分批次传输,每次传输512字节或更少的数据,以降低出错的风险。
   b. 对于关键数据,可以实施错误检测和纠正机制,如CRC校验,以确保数据的完整性和正确性。
   c. 在开发过程中,可以使用调试工具和日志记录功能,以便更好地了解问题所在并进行针对性的优化。

希望以上建议能帮助您解决在使用FreeRTOS + SDIO驱动TF卡时遇到的问题。
举报

更多回帖

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