目录

一、SDIO:安全数字输入输出 

目录

定义

功能

二、SDIO协议

介绍

信号

协议

一般协议

写协议

读协议

命令

命令格式

命令应答

数据

三、一文搞懂SDIO

四、SDIO简介

 五、SD卡引脚定义和图连接

 六、SDIO协议简介

七、MMC、SD、TF、SDIO、SDMMC简介 


一、SDIO:安全数字输入输出 

SDIO_百度百科

SDIO(Secure Digital Input and Output)中文名称:安全数字输入输出,定义了一种外设接口

中文名 安全数字输入输出

外文名 Secure Digital Input and Output Card

目录

  1. 定义
  2. 功能

定义

SDIO在SD标准上定义了一种外设接口。SDIO主要有两类应用——可移动和不可移动。可移动设备作为Palm和Windows Mobile的扩展设备,用来增加蓝牙、照相机、GPS802.11b功能。不可移动设备遵循相同的电气标准,但不要求符合物理标准。某些手机内包含通过SDIO连接CPU802.11芯片。此举将“珍贵”的I/ O管脚资源用于更重要的功能。

蓝牙、照相机、GPS和802.11b设备有专为它们定义的应用规范。这些应用规范与为PCIUSB设备定义的类规范很相像。它们允许任何宿主设备与任意外设“通话”,只要它们都支持应用规范。

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

SDIO

SDIO和SD卡规范间的一个重要区别是增加了低速标准。SDIO卡只需要SPI和1位SD传输模式。低速卡的目标应用是以最小的硬件开支支持低速I/ O能力。低速卡支持类似调制解调器条码扫描仪和GPS接受器等应用。对“组合”卡(存储器+ SDIO)而言,全速和4位操作对卡内存储器和SDIO部分都是强制要求的。

功能

转换设备的能力:

SD标准有很大的弹性:

比方说,SD插槽不仅能插入内存卡,SDIO卡还是一种界面。即由使用标准SD卡插槽来扩展设备的功能,让设备拥有新的功能。

新功能列举如下:GPS相机、Wi-Fi调频广播、以太网条形码读卡器蓝牙等。

拥有与SD memory card同样的终端、形状的卡槽,利用于扩张卡的规格,把对应SDIO卡槽(插口)统称为SDIO卡,扩张卡则被称为SDIO卡。

是为了在个人电脑和PDA等中添加功能而使用SD卡的规格,由于可以使用比PC卡形状还小的卡和插槽,相比于笔记本电脑,更多采用于小巧的PDA中。主要销售的产品有,面向PDAPHS通讯卡和蓝牙通讯卡,无线网卡,小型数码相机等。

为了使用SDIO,必须要有对应的插槽,数码相机等memory card的专用缝儿插槽不对应SDIO卡。SDIO插槽中能够插入SD memory card来读写。

词条图册

更多图册 

 

二、SDIO协议

SDIO协议 - 知乎

介绍

SDIO是安全数字输入输出接口(Secure Digital Input and Output)的缩写,是从SD内存卡接口的基础上演化出来的一种外设接口。SDIO接口兼容以前的SD内存卡,并且可以连接支持SDIO接口的设备。SDIO的应用比较广泛,目前,有许多手机都支持SDIO功能,并且很多SDIO外设也被开发出来,使得手机外接外设更加容易。常见的SDIO外设有WLAN、GPS、CAMERA、蓝牙等。SDIO总线有两端,其中一端是主机端(HOST),另一端是设备端(DEVICE)。所有的通信都是由HOST端发出命令开始的,在DEVICE端只要能解析HOST的命令,就可以同HOST进行通信了。SDIO的HOST可以连接多个DEVICE。sdio通常工作在25mhz或50mhz的时钟下。

SDIO总线拓扑

信号

SDIO信号有三种模式,“单线模式”、“4线模式”、“SPI模式”。

CLK:HOST给DEVICE的时钟信号。

VDD:电源信号。

VSS:Ground信号。

DAT0-DAT3:4条数据线

CMD:用于HOST发送命令和DEVICE回复响应。

三种模式的信号定义

协议

SDIO协议,其中包括“无数据传输的一般命令”,“有数据传输的写命令”,“有数据传输的读命令”。协议包含三个要素:命令Command应答Response数据Data

Command:由HOST发送,DEVICE接收,在CMD信号线上传输。以一个起始位为开始,中止位为结束,命令的长度为48位。

Response:由DEVICE发送,HOST接收,在CMD信号线上传输。应答根据不同命令分为4种,长度有48位或136位。

Data:数据是双向的传送的。可以设置为1线模式,也可以设置为4线模式。数据是通过DAT0-DAT3信号线传输的。

一般协议

一般协议传输无应答(no response)命令和无数据(no data)命令。无应答命令只需要传输CMD,不需要应答,命令即携带了所有信息。无数据命令需要在CMD传输之后,返回相应的应答,但无数据传输。应答格式有多种。

写协议

写数据的传输是分块进行的。数据块后面总是跟着CRC位。定义了单块和多块操作。多块操作模式更适合更快的写入操作。当CMD线路上出现停止命令时,多块传输终止。主机可以将数据传输配置为使用单条或多条数据线,此文档只会讨论4位数据线模式。图4-3表明了多块写操作的协议图。单块写操作与多块写操作类似。

读协议

读数据的传输与写数据时类似,参看上面写协议。图4-2表明了多块读操作的协议图。单块读操作与多块读操作类似。

命令

命令分为四种类型:

广播命令(bc):通过SD总线发送到总线上所有从设备,并且不需要应答的命令。

需要应答的广播命令(bcr):通过SD总线发送到总线上所有从设备,并且需要所有的从设备分别应答的命令。

指向地址的命令(ac):没有数据传输的,到某一个指定从设备的命令。

指向地址的数据传输命令(adtc):对指定的从设备进行数据传输的命令。

命令格式

SD命令是一个6字节组成的命令包,其中BYTE1是命令号。命令号bit7表示起始位,bit6表示主机发出的命令。Bit5~bit0表示具体的命令号。BYTE2~BYTE5表示命令内容。BYTE6为7bit的CRC校验以及1bit的结束位。如下。

一种命令格式

一些命令

一部分命令

*R1b:All data blocks are responded to with a data response token followed by a busy signal. The data transferred must not cross a physical block boundary.

*RCA:Relative card address:相对卡地址,卡的本地系统地址,初始化时由主机配置。

命令应答

以R1应答为例。R1:Bit45~bit40表示它所响应的命令的索引。从设备的状态用32位编码。请注意,当涉及到向从设备的数据传输时,在传输每个数据块后,数据线上可能会出现一个忙信号。数据块传输后,主机将检查是否繁忙。

R1应答格式

R1b与R1相同,在数据线上传输可选的繁忙信号。根据命令接收前的状态,从设备在接收到这些命令后可能会变得繁忙。主机将在响应时检查是否繁忙。

其中[39:8] card status被定义如下。

card status

数据

此文只讨论4位总线情况,数据一次传输4位(见图4-6)。开始和结束位,以及循环冗余校验位,为每一条数据线路传输。对每个数据行单独计算和检查循环冗余校验比特。CRC校验状态响应和忙指示将由从设备发送到仅在DAT0上的主设备。

数据结构

面向块的数据传输的有效载荷由CRC校验保护。生成多项式是标准的CCITT多项式。

请注意,CRC校验是计算出来的,并附加到块末尾的每个dat行。在宽总线操作的情况下(DAT0-DAT3),单独为每条DAT信号线计算一个16bit的CRC校验。

FPGA 实现

实现的是FPGA作为Device,与SOC通信,实现SOC通过SDIO将数据写入FPGA的DDR中,再从FPGA的DDR中取走数据。这样做的目的是FPGA片上实现编码操作,SDIO接口负责传输原始码流和编码码流。

SDIO IP分为cmd模块和data模块。

cmd模块,根据sdio命令格式设置状态机,正确收取命令,然后通过应答格式将应答回传给主机。sdio有标准的命令,如cmd0~cmd54这些标准命令,需要从机做出相应的执行和应答。命令可以自定义命令,sdio是个标准协议集,所以有wifi-sdio,有card-sdio,这些不同的sdio协议有共同的标准部分,也有自定义的部分。我们实现的sdio也有自定义的部分,可以自定义一些命令,用来使SOC对FPGA侧进行控制。

data模块,通过接收的cmd命令做出读或写的操作,通过data0~data4传输数据,根据crc16校验数据。

三、一文搞懂SDIO

一文搞懂SDIO_曼巴精神传承人的博客-CSDN博客

 

四、SDIO简介

SDIO简介_江波ZK的博客-CSDN博客

 

 五、SD卡引脚定义和图连接

详谈SD卡/微型SD卡的引脚定义与连接(精美多图) - 知乎

 

 六、SDIO协议简介

SDIO协议简介 

 

七、MMC、SD、TF、SDIO、SDMMC简介 

MMC、SD、TF、SDIO、SDMMC简介_撒哈拉的初学者的博客-CSDN博客 

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐