首页 > 代码库 > SD/MMC的Commands和Responses的总结
SD/MMC的Commands和Responses的总结
1.Command:由host发送到卡设备,使用CMD线发送;
2.Response:从card端发送到host端,作为对前一个CMD的相应,通过CMD线发送;
3.Data:即能从host传输到card,也能从card传输到host,通过data线传输。
一、Commands
以下是四种用于控制卡设备的指令类型,每个command都是固定的48位长度:
1、broadcast commands(bc), no response:广播类型的指令,不需要有响应;
2、broadcast commands with response(bcr):广播类型的指令且需要响应;
3、addressed(point-to-point) commands(ac):由HOST发送到指定的卡设备,没有数据的传输;
4、address(point-to-point) data transfercommands(adtc):由HOST发送到指定的卡设备且伴随有数据传输。
Command format如下:
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。
其中bit[45:40]共6bit组成了Command index,换句话说,总共有2^6次方(64)个CMD,这些CMD伴随在卡的初始化、识别、读写、擦除数据都会用到。
关于命令的详细描述参考《Part_1_Physical_Layer_Specification_Ver3.00_Final_090416》的4.7.4 Detailed Command Description,在P88可以找到相应的CMD的详细介绍。
二、Responses
所有的response都通过CMD线发送到host端,R4和R5响应类型是SDIO中特有的:
1、R1(normal response command):用来响应常用指令;
2、R2(CID,CSD register):用来响应CMD2和CMD10或CMD9,并把CID或CSD寄存器作为响应数据;
3、R3(OCR register):用来响应ACMD41指令,并把OCR寄存器作为响应数据;
4、R6(published RCA response):分配相对卡地址的响应;
5、R7(card interface condition):响应CMD8,返回卡支持的电压信息;
6、R4(CMD5):响应CMD5,并把OCR寄存器作为响应数据;
7、R5(CMD52):CMD52是一个读写寄存器的指令,R5用于CMD52的响应;
Response的格式如下:
关于响应的详细描述参考《Part_1_Physical_Layer_Specification_Ver3.00_Final_090416》的4.9 Responses 在P98可以找到相应的Responses的详细介绍。