本文分享SD模式,I/O only WIFI卡初始化過程,結合命令/響應格式和波形,能清晰的了解整個過程。
這里以RTL8189FTV-VC-CG為例,初始化過程參考其規格書,時序如下,這里以SDIO接口為例。
1)上電則至少需要T33Ramp’時間以上,可以維持久一點等穩定再進行后續操作。3.3V如果下電要維持下電Toff時間,掉電不充分,可能影響下次上電,然后上電T33Ramp時間使得電壓穩定。
2)VDDON,上電時間T12Ramo,等其穩定,這個一般和3.3V同步上電即可。
3)上電穩定,TPOR時間之后,硬件自動產生POR復位,Ton_ndy之后硬件的復位自動完成, 此時就會對CMD5進行響應C=1(見后續命令說明),如果在Ton_ndy之前發送CMD5則響應C=0。我們一般都是等的比較久才發CMD5,所以一般遠遠超過Ton_ndy這個時間,所以第一個CMD5就會響應C=1.
4)CMD5響應后,只需要CMD3/CMD7獲取并選擇RCA即可,此后就可以使用CMD52/CMD53操作WIFI卡了。

對應的時序參數如下

復位命令(CMD0)僅用于內存或組合卡的內存部分。僅I/O卡或組合卡的I/O部分不會用CMD0復位,而是用I/O復位(通過CMD52設置RES位為1(CCCR中地址6的位3))。在CMD52響應后調用I/O復位。
參考
[REF1]SD Specifications Part E1 SDIO Simplified Specification Version 3.00 July 25, 2018
[REF2]SD Specifications Part 1 Physical Layer Specification Version 3.01 February 18, 2010
參考[REF1]的3.2章節。
IO卡的IO_SEND_OP_COND命令(CMD5),功能類似于SD存儲卡的ACMD41操作。用于查詢I/O卡所需的電壓范圍。對CMD5的正常響應是SD或SPI格式的R4。
一旦SDIO卡收到CMD5,該卡的I/O部分將能夠正常響應所有其他命令。
命令格式如下

S:開始位,始終為0
D:方向位,始終為1表示方向為主機到卡
Command Index: 5即CMD5
Stuff bits:為0.
S18R: 是否請求切換到1.8V,設置為1請求。
I/O OCR: 操作條件寄存器, 即支持的VDD的范圍,
對應如下,HOST發送支持的范圍,卡也會返回一個范圍,兩者的公共部分就是可以工作的范圍。SDIO 2.0版本支持2.7~3.6V范圍,一般通訊沒有強制支持2.0V~2.7V, 所以注意支持SDIO 2.0時在一般通訊時不要使用2.0V~2.7V.

Crc7:校驗
E:停止位,始終位1
2.1.2參考[REF1]的3.3章節。
SD模式和SPI模式下的R4響應如下,超時時間是Ncr。

S:開始位,始終為0
D:方向位,始終為0表示方向為卡到主機
Reserved:保留位,設置為1
C:如果卡初始化完成則設置為1, 所以用戶需要充份股發送CMD5直到卡返回該位置位。
Number of I/O functions:卡支持的功能數,0~7,注意不包含Function 0,0是必須的。
Memory Present: 如果為1表示卡還支持SD存儲,否則僅僅是I/O卡。如果是memory only卡則Memory Present = 1 且Number of I/O Functions = 0. SD卡則不對CMD5響應。
S18A: 設置為1表示切換到了1.8V模式(僅SD模式支持,SPI模式不支持)。
I/O OCR: 操作條件寄存器, 即支持的VDD的范圍,見命令解釋
Modified R1是SPI模式特有,對應如下

實測波形如下
請求如下S18R=0 2.7~3.6[23:15]=1 Reserved[7:0]=1

響應如下
C=1表示卡已經初始化完成,可以接收后續命令
Number of I/O functions=1表示除了function 0還有一個function
Memory Present=0表示為I/O only卡
S18A=0,主機沒有S18R請求或者不支持切換到1.8V
I/O OCR,b[24:18]表示支持3.0~3.6V,其他Reserved位都是為1.

見[REF2] 4.7.4章節,請求卡返回RCA地址,參數為0

見[REF1]的4.3章節
CMD3的響應是R6,高16位是RCA,低16位為狀態。

命令如下

響應如下,返回RCA為0x10

這個RCA卡是掉電保存的,下一次獲取就會遞增,比如這里遞增到了0x11

見[REF2] 4.7.4章節,根據RCA選擇卡,參數高16位為剛才CMD3獲取到的RCA地址。

響應為R1b 見[REF2]的4.9.1 4.9.2章節
card status見[REF2]的4.10.1章節

card status的位定義如下


以下表格,表示哪些命令對應哪些位可能置位

命令如下,RCA為剛才CMD3獲取的RCA

響應如下
狀態的bit[12:9]=1111b,IO模式保留為1111. 其他狀態位都是為0


SD模式,I/O only WIFI卡初始化非常簡單, 僅需3條命令即可,以上分享了三條命令對應其波形,對照波形能更加清晰的了解其過程,如果有問題可以方便對照分析。后面就開始CMD32和CMD52和CMD53進行WIFI卡的配置和數據收發。