文章目录
本文章主要讲解关于SD2.0中的CRC应用,其它基础概念和其它内容请参考以下文章。
SD2.0 Specification简述
CRC全称为Cyclic Redundancy Code,中文名称是循环冗余校验,该方法通过附加冗余数据来保证数据的完整性,即用于检测数据是否发生错误,但不能用于纠正错误。
在SD2.0中使用CRC7和CRC16两种。
- CRC7
所用命令都会使用CRC7生成检验码并附在命令参数后面,而对于Response,除了R2和R3特殊,其它CRC7使用方式都跟命令一样。如下图所示,R2只对CID和CSD的内容进行CRC7的检验码计算,而R3则没有校验码。
- CRC16
CRC16是针对在DAT线上传输的数据做CRC计算,如果使用4根DAT线传输数据,则每根DAT线是独立计算CRC的。
当SD卡接收命令时使用CRC校验发现命令数据出错了,那SD卡不会执行该命令,也不会回Response,而是在状态寄存器里标记有CRC错误。