一. 前言
本文分享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
2.1CMD5
2.1.1命令
参考[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响应
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模式特有,对应如下
2.1.3波形
实测波形如下
请求如下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.
2.2CMD3
2.2.1命令
见[REF2] 4.7.4章节,请求卡返回RCA地址,参数为0
2.2.2响应
见[REF1]的4.3章节
CMD3的响应是R6,高16位是RCA,低16位为状态。
2.2.3波形
命令如下
响应如下,返回RCA为0x10
这个RCA卡是掉电保存的,下一次获取就会递增,比如这里递增到了0x11
2.3CMD7
2.3.1命令
见[REF2] 4.7.4章节,根据RCA选择卡,参数高16位为刚才CMD3获取到的RCA地址。
2.3.2响应
响应为R1b 见[REF2]的4.9.1 4.9.2章节
card status见[REF2]的4.10.1章节
card status的位定义如下
以下表格,表示哪些命令对应哪些位可能置位
2.3.3波形
命令如下,RCA为刚才CMD3获取的RCA
响应如下
状态的bit[12:9]=1111b,IO模式保留为1111. 其他状态位都是为0
三. 总结
SD模式,I/O only WIFI卡初始化非常简单, 仅需3条命令即可,以上分享了三条命令对应其波形,对照波形能更加清晰的了解其过程,如果有问题可以方便对照分析。后面就开始CMD52和CMD53进行WIFI卡的配置和数据收发。