對於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)