STM32
直播中

李红

8年用户 1341经验值
私信 关注
[问答]

stm32读sd卡单个数据块最后80个字节全是0,怎么crc还校验正确?

STM32 读sd卡单个数据块最后80个字节全是0,怎么crc还校验正确。PS. 用的是SDIO口,4bit总线,1M的SDIO_CK.

回帖(2)

刘倩

2024-4-25 15:57:46
SD卡的IO有没有做上拉处理
举报

洪茗苞

2024-4-25 17:12:01
在这种情况下,STM32读取SD卡单个数据块时,最后80个字节全是0,但CRC校验仍然正确。这可能是由以下几个原因导致的:

1. CRC算法的特性:CRC(循环冗余校验)是一种常用的错误检测码,它能够检测出数据传输过程中的错误。在某些情况下,即使数据块的最后80个字节全是0,CRC校验仍然可以正确,因为CRC算法主要关注数据的整体特性,而不是单个字节。

2. SD卡的写入过程:在写入SD卡时,可能存在一些错误,导致最后80个字节被填充为0。然而,这些错误可能并不影响CRC校验码的计算,因此CRC校验仍然正确。

3. STM32的读取过程:在STM32读取SD卡时,可能存在一些硬件或软件的问题,导致最后80个字节被错误地读取为0。然而,这些问题可能并不影响CRC校验码的计算,因此CRC校验仍然正确。

为了解决这个问题,你可以尝试以下方法:

1. 检查STM32的硬件连接:确保SDIO接口的硬件连接正确,没有短路或断路的情况。

2. 检查STM32的软件配置:确保STM32的SDIO配置正确,包括时钟速率、总线宽度等。

3. 检查SD卡的写入过程:确保SD卡在写入数据时没有出现错误,可以尝试使用其他设备或软件重新写入数据。

4. 使用其他CRC算法:如果可能,可以尝试使用其他CRC算法,以验证CRC校验的正确性。

5. 检查数据传输过程:确保数据在从SD卡传输到STM32的过程中没有出现错误,可以尝试使用其他数据块进行测试。

通过以上方法,你可以找到导致最后80个字节全是0的原因,并采取相应的措施解决问题。
举报

更多回帖

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