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.wikipedia.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
• GSM/GPRS modem card
• Bluetooth card
• Radio/TV card
3.总线协议(此文章只解析 1-bit/4-bit mode)
SD总线上的通信基于命令和数据位流,数据流由起始位启动,由停止位终止。
• CMD:命令是启动操作的令牌。命令从主机发送到单个卡(寻址命令)或所有连接的卡(广播命令)。命令在命令行上串行传输。
• Response:响应是从寻址卡或(同步)从所有连接的卡发送到主机的令牌,作为对先前接收到的命令的应答。响应在命令行上串行传输。
• Data:数据可以从卡传输到主机,反之亦然。数据通过数据线传输。
3.1 总线传输类型
在这里插入图片描述


在这里插入图片描述

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

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 usb 逻辑分析仪检测SDIO数据通讯。下图2是一个完整的数据包分析截图。从图中可以看到,LA5016的SDIO解析模块,将协议数据分析为 DIR(通信方向),CMD(命令序号),ARG(Argument),CRC(8bits)。

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

圆形绿点:帧起始。

方形红点:帧结束。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
参考资料:
(1)SD Specifications Part 1:Physical Layer Simplified Specification //物理层
(2)SD Specifications Part A2 :SD Host Controller Simplified Specification //主机控制器
(3)SD Specifications Part E1 :SDIO Simplified Specification //简化规范
(4)SD Specifications Part E2 :SDIO Card Bluetooth Type-A Simplified Specification //蓝牙

链接:https://pan.baidu.com/s/18gf_YuXnGqzx5nvQvxeAug
提取码:t8m8
或者:
CSDN资源下载

### 回答1: SDIO2.0(Secure Digital Input/Output)是一种用于在嵌入式系统中实现数据读写和通信的接口协议SDIO2.0协议定义了设备之间的时序,主要包括传感器、存储设备和其他外设设备之间的通信流程。 SDIO2.0协议时序的主要流程如下: 1. 主机发起命令:主机向设备发送命令,包括命令类型、读写操作、寄存器地址等信息。 2. 设备响应:设备接收到命令后,根据命令的类型和参数执行相应的操作,并将响应反馈给主机。设备的响应可能包括操作成功/失败、数据传输准备就绪等状态。 3. 数据传输:如果命令需要传输数据,主机会在设备准备好数据后发起数据传输请求。设备将数据按照指定的格式(如字节、块等)发送给主机。 4. 结束命令:主机在完成操作后,发送结束命令给设备,告知设备当前操作已经结束。 5. 设备确认:设备接收到结束命令后,发送确认信号给主机,表示设备已经收到结束命令并确认操作已完成。 6. 设备复位:在一些情况下,主机可以向设备发送复位信号,重新初始化设备的状态。 需要注意的是,SDIO2.0协议通过时钟信号和数据信号完成设备之间的通信,时钟信号用于同步数据传输,数据信号用于传输命令和数据。时序的严格控制保证了设备之间的数据传输的准确性和可靠性。 总之,SDIO2.0协议时序是设备之间进行数据读写和通信的具体流程,通过发送命令、设备响应、数据传输和结束命令等步骤完成数据的传输和操作。 ### 回答2: SDIO2.0协议是用于在SDIO总线上实现高速数据传输的一种协议。它定义了数据传输的时序和规范,确保数据能够准确、快速地从SDIO设备传输到主机或从主机传输到SDIO设备。 SDIO2.0协议的时序包括以下几个方面: 1. 主机发送命令:主机通过CMD线发送命令到SDIO设备。主机先发送命令的索引和参数,然后SDIO设备会返回一个响应。 2. 主机发送数据:主机发送数据到SDIO设备的时序包括以下几个步骤:主机发送数据块的大小、主机等待ACK响应、主机发送数据块的起始地址和实际数据。 3. SDIO设备回应:SDIO设备会根据主机发送的命令或数据给出相应的回应。回应类型有响应响应(R1响应)、响应响应加数据块(R1b响应)、响应加数据(R2响应)和无响应(R3和R4响应)。 4. 数据传输结束:主机在某个时刻结束数据传输,即发送结束标志。 总的来说,SDIO2.0协议的时序是通过主机发送命令和数据,SDIO设备根据主机的指令进行操作并给出相应的响应,最后主机结束数据传输。保证了数据的准确和高效传输。以上是对SDIO2.0协议时序的简要回答。 ### 回答3: SDIO2.0(Secure Digital Input/Output)是一种用于连接外部设备的接口协议,该协议可以让主机设备(如智能手机、平板电脑等)与外部设备(如Wi-Fi模块、蓝牙模块等)进行数据传输和通信。 SDIO2.0协议时序指的是在SDIO接口下,各个信号线的时钟和数据传输顺序。具体来说,SDIO2.0协议时序有以下几个关键步骤: 1. 初始化步骤:在通信开始前,主机设备要向外部设备发送初始化命令,以确保通信正常开始。 2. 时钟同步:主机设备会发送一个时钟信号给外部设备,用于同步数据传输的时钟。 3. 命令传输:主机设备发送指令给外部设备,包括读写操作和其他控制命令。这些命令通过命令线传输。 4. 数据传输:在命令传输完成后,主机设备通过数据线发送数据给外部设备或从外部设备接收数据。数据传输的顺序可以是单字节传输或者多字节传输。 5. 响应传输:外部设备在接收到命令后,会返回一个响应给主机设备,表示命令的执行结果。响应传输的方式可以是使用命令线来传输响应码。 需要注意的是,SDIO2.0协议时序非常重要,若时序不正确,会导致数据传输错误或通信失败。所以在设计和实现SDIO2.0接口时,需要根据协议规范精确控制时钟和数据传输的顺序,以确保稳定可靠的数据传输和通信。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值