当前位置:首页 > 手机资讯 > 正文

SDIO - 1bit / 4bit V2.0 协议深度解析-简单易懂协议详解v i v o 手机「SDIO - 1bit / 4bit V2.0 协议深度解析-简单易懂协议详解」

SDIO - 1bit / 4bit V2.0  协议深度解析-简单易懂协议详解v i v o 手机「SDIO - 1bit / 4bit V2.0  协议深度解析-简单易懂协议详解」

1.简介
SDIO接口是在SD内存卡接口的基础上发展起来的接口,SDIO接口兼容以前的SD内存卡,并且可以连接SDIO接口的设备。SDIO1.0标准定义了两种类型的SDIO卡:
全速的SDIO卡,传输率可以超过100Mbps。高速卡支持网卡,电视卡以及组合卡等。组合卡指的是存储器+SDIO,对组合卡来操作需要全速和4BIT的传输模式,这是SDIO1.0标准规定的;
低速的SDIO卡,支援的时脉速率在0至400KHz之间。低速卡的目标应用是以最小的硬件开支来支持低速I/O能力。低速卡支持类似调制解调器,条形码扫描仪和GPS接收器等。
SD/SDIO的传输模式SD传输模式有以下3种:
• SPI mode(required)
• 1-bit mode
• 4-bit mode
备注:此文章只解析 1-bit/4-bit mode。
2.SD/MMC/SDIO概念区分概要
SD(Secure Digital)是一种flash memory card的标准,是一般常见的SD记忆卡。
MMC(Multimedia Card)则是较早的一种记忆卡标准,目前已经被SD标准所取代。在上有相当详细的SD/MMC规格说明:[http://zh..org/wiki/Secure_Digital]。
SDIO(Secure Digital I/O):就是SD的I/O接口(interface)的意思,更具体的说明,SD本来是记忆卡的标准,但是现在也可以把SD拿来插上一些外围接口使用,这样的技术便是SDIO。现在已经有非常多的手机或是手持装置都支持SDIO的功能(SD标准原本就是针对mobile device而制定),而且许多SDIO外围也都被开发出来,让手机外接外围更加容易,并且开发上更有弹性(不需要内建外围)。目前常见的SDIO外围(SDIO卡)有:
• Wi-Fi card(无线网络卡)
• CMOS sensor card(照相模块)
• GPS card
• G/GPRS modem card
• Bluetooth card
• Radio/TV card
3.总线协议(此文章只解析 1-bit/4-bit mode)
SD总线上的通信基于命令和数据位流,数据流由起始位启动,由停止位终止。
• CMD:命令是启动操作的令牌。命令从主机发送到单个卡(寻址命令)或所有连接的卡(广播命令)。命令在命令行上串行传输。
• Response:响应是从寻址卡或(同步)从所有连接的卡发送到主机的令牌,作为对先前接收到的命令的应答。响应在命令行上串行传输。
• Data:数据可以从卡传输到主机,反之亦然。数据通过数据线传输。
3.1 总线传输类型
在这里插入图片描述


在这里插入图片描述

3.2 SD卡数据包传输格式
• 常用数据(8位宽度):在单个字节中,以M优先发送。
• 宽数据(SD内存寄存器):宽数据以M位优先发送。
在这里插入图片描述
在这里插入图片描述

3.3 CMD命令格式(1.92us@25MHz & 0.96us@50MHz)
在这里插入图片描述
3.3.1 CMD5 (The IO_SEND_OP_COND Command)
在这里插入图片描述

• Stuff Bits: 保留,0.
• I/O OCR: Operation Conditions Register. 提供电压的最大/最小值范围。如下表。
在这里插入图片描述
在这里插入图片描述
3.3.2 CMD8 (SEND_CSD Command)
在这里插入图片描述

• [19:16]voltage supplied(VHS):提供电压范围,如下所示:
在这里插入图片描述

3.3.3 CMD52 (IO_RW_DIRECT Command)
在这里插入图片描述

• R/W Flag: 0:Read,数据在R5中返回; 1:Write.
• Function Number:I/O卡中要读或写的功能编号.
• RAW Flag: 写后读标志。
R/W为1,若该位为1,则该命令应在写入后读取寄存器的值。这对于允许写入控制寄存器并在同一地址读取状态非常有用。若该位为0,则R5响应中返回的值应与命令中的写入数据相同。
R/W为0,忽略此位。
• Register Address: 读写数据地址.
• Write Data/Stuff Bits: 若R/W=1,写入数据,若R/W=0,读取命令,设置为0.
• Stuff Bits: 保留,0.

[39]R/W Flag[35]RAW Flag描述11主机写入数据,并在R5中返回寄存器值10主机写入数据,并在R5中返回此数据0x主机读取数据

3.3.4 CMD53 (IO_RW_EXTENDED Command):提供了最高的传输速率
在这里插入图片描述

• R/W Flag: 该位决定I/O操作的方向。
该位为0,则该命令从SDIO卡读取由功能编号和寄存器地址指定的地址的数据到主机。读取的数据应返回DAT[x]行。
该位为1,则命令应将DAT[x]行的字节写入由功能编号和寄存器地址寻址的I/O位置。
• Function Number: I/O卡中要读或写的功能编号。
• Block Mode:
块模式 = 1时,使用的块大小和每个命令使用的最大字节数。
块模式 = 0时,从CIS元组中读取最大值。
• OP code: 读写操作码
操作码0用于从单个I/O寄存器地址读取或写入多个字节的数据。当使用I/O卡内部的FIFO传输I/O数据时,此命令非常有用。在这种情况下,多个字节的数据被传输到(从一个寄存器地址传输)。对于此操作,寄存器的地址被设置到寄存器地址字段中。数据在为SD存储卡定义的DAT[0]或DAT[3:0]行上传输。
操作码1用于在每次操作后递增1的I/O寄存器地址中读取或写入多个字节的数据。当I/O卡中存在大量I/O数据时,可使用此命令。在此操作中,起始地址加载到寄存器地址字段中。第一个操作发生在I/O卡中的那个地址。下一个操作将发生在地址+1,地址递增1,直到操作完成。与操作码0一样,字节数是在命令的字节计数字段中设置的。
• Register Address: 读写I/O寄存器的起始地址。范围为 [0x1FFFF:0].

3.4 Responses 回应格式
Response与CMD对应关系如下表所示:
在这里插入图片描述

3.4.1 R1 R1b
在这里插入图片描述
3.4.2 R2: CMD2,CMD9,CMD10的响应
在这里插入图片描述
备注:【127:0】CID/CSD寄存器宽度为128bits。
•【127:8】为寄存器数据,
•【7:1】为寄存器的CRC,用来代替R2中的CRC,
•【0】为保留位,置“1”,用来代替R2中的end bit。

3.4.3 R3: ACMD41的响应
在这里插入图片描述
3.4.4 R4: CMD5的响应
在这里插入图片描述
• Reserved: 保留,1.
• C: 如果卡在初始化后准备运行,则设置为1.
• Number of I/O Functions:表示该卡支持的I/O功能总数,范围是0-7. I/O功能应从功能1开始按顺序执行。
• Memory Present: SD卡1, IO卡0.
• Stuff Bits: 保留位,0.
• I/O OCR: 支持的电压最大/最小范围

3.4.5 R5: CMD52的响应
在这里插入图片描述
• Stuff Bits:保留, 0.
• Response Flags: 指示SDIO卡状态的8位标志数据,如表5-1所示.
• Read or Write Data:
(R/W=1)写操作,对于(RAW=1)设置,此字段应包含写入命令中包含的数据后从寻址寄存器读取的值。注意,在这种情况下,读回的数据可能与写入寄存器的数据不同,这取决于硬件的设计。
(R/W=1)写操作,对于(RAW=0)设置,SDIO函数不应执行写后读操作,且该字段中的数据应与写入命令中的数据字节相同。
(R/W=0)读操作,该字段为实际读数据。
在这里插入图片描述
在这里插入图片描述
3.4.6 R6: CMD3的响应
在这里插入图片描述
3.4.7 R7: CMD8的响应
在这里插入图片描述
在这里插入图片描述

4 附录C - SD和SDIO的CMD区别
在这里插入图片描述
5. SDIO通信实例实测
本实例使用 Kingst LA5016 u 逻辑分析仪检测SDIO数据通讯。下图2是一个完整的数据包分析截图。从图中可以看到,LA5016的SDIO解析模块,将协议数据分析为 DIR(通信方向),CMD(命令序号),ARG(Argument),CRC(8bits)。

下图为SDIO解析参数设置
在这里插入图片描述
下图为主机与从机的一次交互发送,主机发送数据为CMD7:标识选择SD卡。

圆形绿点:帧起始。

有话要说...