SDIO—SDIO协议简介

目录

SDIO协议简介

SDIO设备分类

SD卡物理结构

SDIO总线拓扑

SDIO总线

SDIO总线协议

SD卡数据包


SDIO协议简介

        SD卡(Secure Digital Memory Card)在我们生活中已经非常普遍了,控制器对SD卡进行读写通信操作一般有两种通信接口可选,一种是SPI接口,另外一种就是SDIO接口。SDIO全称是安全数字输入/输出接口,多媒体卡(MMC)、SD卡、SD I/O卡都有SDIO接口。STM32F103系列控制器有一个SDIO主机接口,它可以与MMC卡、SD卡、SD I/O卡以及CE-ATA设备进行数据传输。SD卡属于NAND FLASH存储介质,与NOR FLASH的区别主要是NAND FLASH容量大,只能以块为单位进行读写(包括擦除);而NOR FLASH可以以字节为单位进行读取,扇区为单位进行擦除。

参考资料:

  • 多媒体卡协会网站www.mmca.org中提供了有MMCA技术委员会发布的多媒体卡系统规范。
  • SD卡协会网站www.sdcard.org中提供了SD存储卡和SDIO卡系统规范。
  • CE-ATA工作组网站www.ce-ata.org中提供了CE_ATA系统规范。

SDIO设备分类

 

MMC卡可以说是SD卡的前身,现阶段已经用得很少。SD I/O卡本身不是用于存储的卡,它是指利用SDIO传输协议的一种外设。比如Wi-Fi Card,它主要是提供Wi-Fi功能,有些Wi-Fi模块是使用串口或者SPI接口进行通信的,但Wi-Fi SDIO Card是使用SDIO接口进行通信的。并且一般设计SD I/O卡是可以插入到SD的插槽。CE-ATA是专为轻薄笔记本硬盘设计的硬盘高速通讯接口。

        目前SDIO协议提供的SD卡规范版本最新是4.01版本,但STM32F42x系列控制器只支持SD卡规范版本2.0,即只支持标准容量SD和高容量SDHC标准卡,不支持超大容量SDXC标准卡,所以可以支持的最高卡容量是32GB。

SD卡物理结构

一张SD卡包括有存储单元、存储单元接口、电源检测、卡及接口控制器和接口驱动器5个部分

  • 存储单元是存储数据部件,存储单元通过存储单元接口与卡控制单元进行数据传输;
  • 电源检测单元保证SD卡工作在合适的电压下,如出现掉电或上状态时,它会使控制单元和存储单元接口复位;
  • 卡及接口控制单元控制SD卡的运行状态,它包括有8个寄存器;
  • 接口驱动器控制SD卡引脚的输入输出。

SD卡总共有8个寄存器,用于设定或表示SD卡信息。

 

        这些寄存器只能通过对应的命令访问,SDIO定义64个命令,每个命令都有特殊意义,可以实现某一特定功能,SD卡接收到命令后,根据命令要求对SD卡内部寄存器进行修改,程序控制中只需要发送组合命令就可以实现SD卡的控制以及读写操作。

SD卡寄存器列表:

        每个寄存器位的含义可以参考SD简易规格文件《Physical Layer Simplified Specification V2.0》第5章内容。

SDIO总线拓扑

        SD卡一般都支持SDIO和SPI这两种接口,本章内容只介绍SDIO接口操作方式,SD卡与SDIO接口示意图如下:

        虽然可以共用总线,但不推荐多卡槽共用总线信号,要求一个单独SD总线应该连接一个单独的SD卡。

SDIO总线

        SD卡使用9-pin接口通信,其中3根电源线、1根时钟线、1根命令线和4根数据线,具体如下:

  • CLK:时钟线,由SDIO主机产生,即由STM32控制器输出;
  • CMD:命令控制线,SDIO主机通过该线发送命令控制SD卡,如果命令要求SD卡提供应答,SD卡也是通过该线传输应答信息;
  • D0-3:数据线,传输读写数据;SD卡可将D0拉低表示忙状态;
  • VDD、VSS1、VSS2:电源和地信号。

        SDIO的通信时序的物理逻辑非常简单,SDIO不管是从主机控制器向SD卡传输,还是SD卡向主机控制器传输都只以CLK时钟线的上升沿为有效。

        SD卡操作过程会使用两种不同频率的时钟同步数据,一个是识别卡阶段时钟频率FOD,最高为400kHz;另外一个是数据传输模式下时钟频率FPP,默认最高为25MHz,如果通过相关寄存器配置使SDIO工作在高速模式,此时数据传输模式最高频率为50MHz。

        SDIO传输速率之所以比SPI快,是因为SDIO有四根数据线可以同时进行数据传输。

SDIO总线协议

        SD总线通信是基于命令和数据传输的。通讯由一个起始位(“0”),由一个停止位(“1”)终止。SD通信一般是主机发送一个命令(Command),从设备在接收到命令后作出响应(Response),如有需要会有数据(Data)传输参与。

命令与响应交互:

        SD数据是以块(Black)形式传输的,SDHC卡数据块长度一般为512字节,数据可以从主机到卡,也可以是从卡到主机。数据块需要CRC位来保证数据传输成功,还要注意:起始位使用0,结束位还使用1。CRC位由SD卡系统硬件生成。STM32控制器可以控制使用单线或4线传输,本开发板设计使用4线传输。

        SD数据传输支持单块和多块读写,它们分别对应不同的操作命令,多块写入还需要使用命令来停止整个写入操作。数据写入前需要检测SD卡忙状态,因为SD卡在接收到数据后编程到存储区过程需要一定操作时间。SD卡忙状态通过把D0线拉低表示。

        数据块读操作与之类似,只是无需忙状态检测。

写操作:

读操作:

SD卡数据包

使用4数据线传输时,每次传输4bit数据,每根数据线都必须有起始位、终止位以及CRC位,CRC位每根数据线都要分别检查,并把检查结果汇总然后在数据传输完后通过D0线反馈给主机。

SD卡数据包有两种格式,一种是常规数据(8bit宽),它先发低字节再发高字节,而每个字节则是先发高位再发低位,4线传输示意如下图:

        另外一种数据包发送格式是宽位数据包格式,对SD卡而言宽位数据包发送方式是针对SD卡SSR(SD状态)寄存器内容发送的,SSR寄存器总共有512bit,在主机发出ACMD13命令后SD卡将SSR寄存器内容通过DAT线发送给主机。宽位数据包格式示意图如下:

### 回答1: SDIO(Secure Digital Input/Output)是一种在SD卡上支持I/O功能的协议SDIO卡可以在SD卡的存储功能外,提供额外的输入输出接口。 SDIO协议的实现在硬件上需要增加一个SDIO控制器,该控制器负责将SD卡连接到设备的主机控制器上,并处理主机与卡之间的数据传输。同时,需要在软件层面上,利用SDIO卡的驱动程序进行操作和管理。 SDIO协议主要用于满足移动设备对不同设备和接口的扩展需求,如WiFi模块、蓝牙模块、GPS模块等。通过SDIO卡,设备可以方便地扩展其功能,并实现与这些模块的连通。 CSDN是中国最大的IT技术社区,提供丰富的技术文章、问答和博客等资源。在CSDN上可以找到关于SDIO协议的相关文章和讨论,了解SDIO卡的使用、应用和开发等方面的知识。 总结来说,SDIO协议是一种在SD卡上支持I/O功能的协议,通过SDIO卡可以方便地扩展设备的功能。在CSDN等技术社区上可以获取关于SDIO协议的相关信息。 ### 回答2: SDIO协议是一种用于在嵌入式系统中连接外设的协议SDIO全称为Secure Digital Input/Output,它是一种基于SD卡的标准,可以同时支持数据输入和输出,具有更高的数据传输速度和更大的存储容量。 SDIO协议提供了一种简单且快速的方式,用于将各种外设设备(如Wi-Fi模块、蓝牙模块、GPS接收器等)连接到主控制器,以增强嵌入式系统的功能和性能。 SDIO协议的特点是其与SD卡物理接口的兼容性,也就是说,使用SDIO卡的设备可以与支持SD卡的设备进行互操作。此外,SDIO协议还提供了一种标准化的驱动程序模型,使开发者在不同硬件平台上可以轻松地开发和移植设备驱动程序。 SDIO协议的工作原理是通过在SD卡接口上引入多路数据线,实现与外设设备的数据交换和控制。主控制器通过向SDIO卡发送指令和数据来控制外设设备,而外设设备则将响应和数据发送回主控制器。 由于SDIO协议具有高度兼容性和可扩展性,因此被广泛应用于各种类型的嵌入式系统,包括智能手机、平板电脑、物联网设备等。通过使用SDIO协议嵌入式系统能够更加灵活地扩展功能,满足不同应用场景的需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

竹烟淮雨(考研ing)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值