microSDHC卡CMD25多块写入时返回无效字节的原因及含义
microSDHC卡SPI驱动CMD25多块写入异常排查求助
我正在用C语言编写基于SPI通信的microSDHC卡低阶驱动,目前已完成卡初始化、单块读写、多块读取操作(块大小512字节),但执行CMD25(WRITE_MULTIPLE_BLOCK)多块写入时遇到异常:
- 卡对CMD25的响应正常,返回
0x00表示处于READY状态 - 发送起始数据令牌
0xFE后,卡会立即回显该令牌值;后续数据传输期间,卡周期性返回随机的非0xFF字节,而非预期的全程返回0xFF
补充细节
- CMD25命令帧:
[0x40 | 25, 0x00, 0x00, 0x00, 0x00, 0x01],指定从扇区0开始执行多块写入 - 数据块发送流程:发送
0xFE起始令牌后,紧接着发送514字节的0xA5(包含512字节数据块+16位CRC,卡不校验该CRC) - 硬件与存储卡:使用金士顿32GB microSDHC卡,其规格书明确支持CMD25命令
- 正常参考:单块写入CMD24(WRITE_BLOCK)工作完全正常,已通过读取对应块验证写入正确性
跟踪记录说明
- CMD25异常场景:发送CMD25后卡返回
0x00;发送0xFE令牌后卡立即返回0xFE;数据传输过程中周期性出现随机非0xFF字节,每次运行的字节值不同,但开头必有卡返回的0xFE - CMD24正常场景:发送CMD24后卡返回
0x00;发送0xFE令牌后卡返回0xFF;整个数据传输阶段卡持续返回0xFF,无异常字节
希望得到关于这些异常字节的原因分析,以及具体的排查方向建议。
内容的提问来源于stack exchange,提问作者David V.
相关产品推荐
相关产品推荐

