一文搞懂SDIO

简介: SDIO(Secure Digital Input and Output),即安全数字输入输出接口。它是在SD卡接口的基础上发展而来,它可以兼容之前的SD卡,并可以连接SDIO接口设备,比如:蓝牙、WIFI、GPS等。

SDIO总线简介

SDIO(Secure Digital Input and Output),即安全数字输入输出接口。它是在SD卡接口的基础上发展而来,它可以兼容之前的SD卡,并可以连接SDIO接口设备,比如:蓝牙、WIFI、GPS等。

90c2b480b249a4af24571a978c194a2c.png


什么是SDIO卡

SDIO卡,是使用SD总线以及SD指令的IO设备。SDIO卡的外形和接口和SD卡是兼容的,但是实现的不只是存储功能,还能实现其它的功能,如蓝牙、WIFI等。比如下面的就是一个实现了WIFI功能,而且外形和接口与SD卡兼容的SDIO卡。

2b677913845974b73425c7e9c63a3204.png


什么是组合卡

组合卡指带有memory(存储器)的SDIO卡(memory+SDIO)。

b6eebd926db7d7be617eec0f0d46b2f9.png


SDIO卡类型

  1. 全速卡: 传输速率超过100Mbps,时钟范围0-25MHz。
  2. 低速卡:时钟范围0-400KHz。

低速卡支持类似调制解调器, 条形码扫描仪和GPS接收器等应用。高速卡支持网卡,组合卡等。


SDIO卡模式

SDIO卡有三种总线模式:

  • SPI模式
  • 1-bit SD传输模式
  • 4-bit SD传输模式


SDIO接口定义

ffb7fbdd8237c00eba91f71f83cfb77e.png

  • CLK: HOST给DEVICE的时钟信号
  • CMD: 双向的信号,用于传送命令和应答
  • DAT0-DAT3: 用于传输的数据线


不同模式下的引脚定义:

引脚

4bit模式

1bit模式

SPI模式

1

DAT3

数据线3

CD

卡侦测

CS

片选

2

CMD

命令/应答

CMD

命令/应答

DI

串行输入(MOSI)

3

VSS1

地线

VSS1

地线

VSS

地线

4

VDD

电源线

VDD

电源线

VDD

电源线

5

CLK

时钟线

CLK

时钟线

CLK

SPI时钟

6

VSS2

地线

VSS2

地线

VSS

地线

7

DAT0

数据线0

DAT0

数据线0

DO

串行输出(MISO)

8

DAT1

数据线1/中断

NC/IRQ

中断

NC/IRQ

中断

9

DAT2

数据线2

NC

NC



SDIO命令

SDIO总线上的设置和控制都是通过命令来实现,SDIO总线上都是HOST端发起请求,然后DEVICE端回应请求,其中请求和应答中会包含数据信息

  1. Command: 用于开始传输的命令,是由HOST端发往DEVICE端的,其中命令是通过CMD信号线传送的。
  2. Response: DEVICE返回的应答。也是通过CMD线传送的;
  3. Data: 数据是双向传送的。可以设置为1线模式,也可以设置为4线模式。数据是通过DAT0-DAT3信号线传输的。


命令格式:

8907615cf5c4aa1ff250e4d62dab06d2.png

  • Start: 起始位,值固定为0。
  • Transmission:传输方向,值为1表示host发出, 0则表示device发出。
  • Command Index: 代表命令索引,例如CMD0 这项值为0 ,CMD5则这项值为5,它的范围是0-63。
  • Argument:CMD所附带的一些参数,不同的CMD,这32bit每一位所代表的含义是不一样的。
  • CRC7:7位CRC校验值
  • End:结束位,值固定为1


应答格式:

SD内存卡支持五种response type:R1,R1b,R2,R3,R6

SDIO卡额外支持2种response type:R4,R5


  • R1(正常应答命令)

16fa43c89977d9c374dceeb7e6796dd1.png

  • R2(CID,CSD寄存器)

9a62ff3d907b738d36daeab1ecafc9ee.png

  • R3(OCR寄存器)

c560b5c2fc707d5da4e67cd0571915ae.png

  • R6(Published RCA应答)

22fe50daaa385e75854139aec2650a5b.png

  • R7(卡接口条件)

c45535ba0ee06a52bcaad2b7326c8cb8.png

  • R4

56c727b20648e8538c7bdb91ba19c805.png

用来回复CMD5,该CMD是给SDIO card专用的,用来查询card中支持的电压域。


  • R5

c85919c3dd27ca5159c48151c92e9b2c.png

用来回复CMD52,该CMD是给SDIO card专用的。

不同的外设使用的命令会有差异,具体命令要查看Spec。


更多详细命令介绍请参考:

《Physical Layer Simplified Specification Version8.00》

《SDIO_Simplified_Specification_Ver3.00》


总结

SDIO卡和SD存储卡的命令上是有差异的,里面的寄存器也是有差异的。所以具体命令需要查看官方文档,对于初始化流程,哪条命令对应哪个应答等都有详细的描述。


相关文章
|
存储 Linux Shell
initrd是什么?
initrd是什么?
449 0
|
物联网
低功耗蓝牙(BLE)设备常用的4种角色
对于主从设备的其它说法,大家需要了解一下。对于Central和Peripheral有多种说法,上面我们说的是主从,还有客户端/服务端,中心设备/外围设备,我们这里简单介绍一下,客户端(Client)对应上面的Central,接收数据;服务端(Server)对应上面的额Peripheral,提供数据,这个需要和网站的服务器/客户端区别一下;中心设备(Central)和外围设备(Peripheral),其实上面叫中心设备和外围设备。上面主设备(Master)和从设备(Slave)应该对应主/从。这个根据个人习惯,主/从用的比较多,如果在蓝牙中提到这些知道就行了。
1423 0
|
编译器 Linux 调度
makfile的编译选项:CFLAGS、CPPFLAGS、LDFLAGS、LIBS
makfile的编译选项:CFLAGS、CPPFLAGS、LDFLAGS、LIBS
3018 0
|
算法 量子技术
|
存储 数据管理 数据处理
处理STM32 DMA方式下的HAL_UART_ERROR_ORE错误
通过正确配置UART和DMA、实现有效的错误处理回调函数以及优化数据处理和缓冲区管理,可以有效处理STM32中DMA方式下的 `HAL_UART_ERROR_ORE`错误。这些方法确保了数据的高效传输和处理,避免了因数据溢出导致的通信中断和数据丢失。希望这些解决方案能够帮助您在实际应用中更好地应对和解决此类问题。
1581 0
|
物联网 API 数据库
一文带你认识蓝牙 GATT 协议
正所谓磨刀不误砍柴工,我们有必要先深入的学习一下 GATT 以及 GATT 相关的一些知识。 本文我们就来了解一下 蓝牙 GATT 到底是什么?同时了解下我们使用的 ESP32-C3 GATT示例的工程的代码结构。
8206 4
一文带你认识蓝牙 GATT 协议
|
Dragonfly 安全 算法
|
Linux API
Linux驱动分析之MMC子系统框架
Linux内核中,MMC不仅是一个驱动,而是一个子系统。内核把mmc, sd以及sdio三者的驱动代码整合在一起,俗称MMC子系统。源码位于drivers/mmc下。mmc目录下有core和host两个文件夹(以前的版本可能还有card目录,现在已经和core目录合并了)。
|
消息中间件 资源调度 算法
FreeRTOS最全教程(目录)
FreeRTOS最全教程(目录)
1586 1