对于SD I/O卡而言,卡识别过程如下:
1. 总线被激活
2. SDIO卡主机发送IO_SEND_OP_COND(CMD5)命令
3. 得到的响应是卡的操作条件寄存器的内容;
-如果有响应,并且响应中的MP位为0,说明对应卡槽中的卡为SDIO卡,进而开始SDIO卡的初始化流
程
–如果发送CMD5命令没有响应,则说明对应卡槽的卡为SD或MMC卡,进而开始SD/MMC卡的初始化流程
–如果发送CMD5命令,有响应,且响应中的MP位为1,说明这个卡不但是SDIO卡,同时也时SD卡,也
就是所谓的combo卡,则进行combo卡的初始化流程
SD卡与SDIO卡的异同
1.SD卡使用的是SD卡协议,而SDIO卡使用的是SDIO协议;协议不一样,初始化/读写方式都不一样
2.SDIO mode 同样也有1bit和4bit 总线模式
3.SD与SDIO卡的引脚的一个最大的区别是:SDIO有个中断引脚DAT[1],在4bit模式下,DAT[1]既做数据线,又
做中断线,因此是分时复用的,在总线发送命令期间,DAT[1]用作中断线。
SDIO协议
–相对于SD协议,SDIO协议特有的命令有:cmd5,cmd52,cmd53
–cmd5命令相当于SD卡协议中的acmd41,用于匹配SDIO卡的电压
–对于SDIO卡中的单个寄存器的读写一般都使用cmd52命令,而对于多字节数据的读写则用cmd53命令。
–cmd53分字节和块传输模式
对于字节传输模式相当于SD协议的单块读写(cmd17,cmd24)
对于块传输模式相当于SD协议的块读写(cmd18,cmd25)
Cmd53
–对于字节传输模式,它可以是1~512之间的任意长度的传输,而不是固定长度
–对于块传输模式,首先它的块长度可以人为设定,但不能超过规定的最大块长度
–相对于SD卡中的块传输模式,在最后一个块传输末尾,是不需要发送块停止命令的(cmd12)