摘自:上海嵌入式索漫科技培訓教材 作者:下家山
(見Simplified SDIO Card Specification.pdf 35page)因爲,CMD52響應後返回數據爲8bit,所以要送三次。第一次:
rSDICARG == 0x00001200;
rSDICCON == 0x00000B74;
響應
rSDICSTA == 0x00000A34;
rSDIRSP0 == 0x00001000;
解讀0x00001200
0 000 0 0 00 0000 0000 0001 001 0 0000 0000
R/W flag |
Function Number |
RAW flag |
Stuff |
Register Address |
Stuff |
Write data or stuff bits |
1 3 1 1 17 1 8
解讀0x00000B74(略)
解讀0x00000A34(略)
解讀0x00001000
0x00001000的低8位表示從地址0x09讀出來的值爲0x00;
第二次:
rSDICARG == 0x00001400;
rSDICCON == 0x00000B74;
響應
rSDICSTA == 0x00000A34;
rSDIRSP0 == 0x00001010;
解讀0x00001400
0 000 0 0 00 0000 0000 0001 010 0 0000 0000
R/W flag |
Function Number |
RAW flag |
Stuff |
Register Address |
Stuff |
Write data or stuff bits |
1 3 1 1 17 1 8
解讀0x00000B74(略) 解讀0x00000A34(略)解讀0x00001010
0x00001010的低8位表示從地址0x0a讀出來的值爲0x10;
第三次:
rSDICARG == 0x00001600;
rSDICCON == 0x00000B74;
響應
rSDICSTA == 0x00000A34;
rSDIRSP0 == 0x00001000;
解讀0x00001600
0 000 0 0 00 0000 0000 0001 011 0 0000 0000
R/W flag |
Function Number |
RAW flag |
Stuff |
Register Address |
Stuff |
Write data or stuff bits |
1 3 1 1 17 1 8
解讀0x00000B74(略)解讀0x00000A34(略)
解讀0x00001000
0x00001000的低8位表示從地址0x0b讀出來的值爲0x00;
最後,可以得到FN0 CIS指針地址爲0x001000。
3.4 讀出ID號
同樣,讀出ID號也是通過CMD52來實現的。(見5.2 CMD52及響應剖析)
我們可以從SDIO 協議規範中看出CIS 的整個區域地址範圍爲0x00001000~0x00017fff。
而,我剛纔讀出FN0 的CIS指針地址爲0x001000,這證明是正確的。那麼出廠時,這些CIS信息是如何存放在0x001000所在的區域的呢?以FN0爲例,聽我一一道來:
在0x001000起始的區域,SDIO 協議規範是以一個或多個鏈(連起來的列表)被稱爲數據塊或tuples(便士)來組織這些CIS信息的。