SDIO接口WIFI驱动之一:初始化过程

文摘   2024-08-19 12:23   湖南  

一. 前言

本文分享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设置RES1CCCR中地址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的正常响应是SDSPI格式的R4

一旦SDIO卡收到CMD5,该卡的I/O部分将能够正常响应所有其他命令。

命令格式如下

S:开始位,始终为0

D:方向位,始终为1表示方向为主机到卡

Command Index: 5CMD5

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 00是必须的。

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 R1SPI模式特有,对应如下

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 OCRb[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波形

命令如下

响应如下,返回RCA0x10

这个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]=1111bIO模式保留为1111. 其他状态位都是为0

三. 总结

SD模式,I/O only WIFI卡初始化非常简单, 仅需3条命令即可,以上分享了三条命令对应其波形,对照波形能更加清晰的了解其过程,如果有问题可以方便对照分析。后面就开始CMD52CMD53进行WIFI卡的配置和数据收发。












嵌入式Lee
嵌入式软硬件技术:RTOS,GUI,FS,协议栈,ARM,总线,嵌入式C,开发环境 and blablaba....多年经验分享,非硬货不发,带你扒开每一个技术背后的根本原理。
 最新文章