在许多资料上看到关于这个问题的介绍,都有以下的说法:
SD卡的指令由6字节(Byte)组成,如下:
Byte1:0 1 x x x x x x(命令号,由指令标志定义,如CMD39为100111即16进制0x27,那么完整的CMD39第一字节为01100111,即0x27+0x40)
Byte2-5:Command Arguments,命令参数,有些命令没有参数
Byte6:前7位为CRC(Cyclic Redundacy Check,循环冗余校验)校验位,最后一位为停止位0.
然后在许多例程里都看到发送的Byte6是0x95,如下片断:
SPI_SD_SendReceiveByte(cmd | 0x40);
SPI_SD_SendReceiveByte(arg >> 24);
SPI_SD_SendReceiveByte(arg >> 16);
SPI_SD_SendReceiveByte(arg >> 8);
SPI_SD_SendReceiveByte(arg);
SPI_SD_SendReceiveByte(0x95);
do{
// 等待响应,响应的开始位为0
Response = SPI_SD_SendReceiveByte(0xff);
Retry++;
} while( ((Response&0x80)!=0) && (Retry < 200) );
我想问的是这个0x95是怎么来的? |