现在的位置: 首页 > 综合 > 正文

SDIO相关学习

2018年04月17日 ⁄ 综合 ⁄ 共 2980字 ⁄ 字号 评论关闭
        这段时间在研究SDIO接口,所以要求对MMC、SD、SDIO都要有所了解,网上找过这些概念,不过总是流传的是Jollen 笔记里面的一份,许多地方未能清楚交待,所以我在其基础上加上一些自己的了解来加深对SDIO的学习。并一并学习下SDIO总线。
一、首先从SD和MMC说起
MMC(Multimedia Card)与 SD(Secure Digital Memory Card)
MMC:MultiMedia Card的缩写,即多媒体卡。24mm*32mm*1.mm。以前的MMC规范的数据传输宽度只有1位,最新的1.0版MMC中拓宽了4位和8位带宽,时钟频率也达到了52MHZ,从而理所当然的支持50MHZ的传输速率。值得一提的是,对于SD时代提倡的“数据安全”特性,MMC协会也终于接纳了具有竞争性的安全卡协议——Secure MMC1.1规范。
SD(Secure Digital Memory Card),即安全数码存储卡,我建议的读法是SD存储卡。它在MMMC的基础上发展而来,并且增加了相对于MMC的两个新特色:传输速率比2.11版本的MMC快了将近4倍,另外SD存储卡强调数据的安全,可以设定数据的使用权限,防止他人复制。
        所以可以这样讲SD 是一种 flash memory card 的标准,也就是一般常见的 SD 记忆卡,而 MMC 则是较早的一种记忆卡标准,目前已经被 SD 标准所取代。在数据和物理规范上,SD存储卡向前兼容MMC卡,在外观上,SD存储卡只是在厚度上比MMC卡厚了0.7mm。
二、SDIO(Secure Digital I/O)概述
SDIO 是目前我们比较关心的技术,SDIO 故名思义,就是 SD 的 I/O 接口(interface)的意思,不过这样解释可能还有点抽像。更具体的说明,SD 本来是记忆卡的标准,但是现在也可以把 SD 拿来插上一些外围接口使用,这样的技术便是 SDIO。
所以 SDIO 本身是一种相当单纯的技术,透过 SD 的 I/O 接脚来连接外部外围,并且透过 SD 上的 I/O 数据接位与这些外围传输数据,而且 SD 协会会员也推出很完整的 SDIO stack 驱动程序,使得 SDIO 外围(我们称为 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
SDIO 的应用将是未来嵌入式系统最重要的接口技术之一,并且也会取代目前 GPIO 式的 SPI 接口。
三、SDIO总线协议
SDIO协议是由SD卡的协议演化升级而来的,很多地方保留了SD卡的读写协议,同时SDIO协议又在SD卡协议之上添加了CMD52和CMD53命令。 由于这个,SDIO和SD卡规范间的
一个重要区别是增加了低速标准,低速卡的目标应用是以最小的硬件开始来支持低速I/O能力。低速卡支持类似调制解调 器,条形码扫描仪和GPS接收器等应用。高速卡支持网卡,电视卡还有“组合”(combo)卡等,组合卡指的是存储器+SDIO。
       SDIO和SD卡的SPEC间的又一个重要区别是增加了低速标准。SDIO卡只需要SPI和1位SD传输模式。低速卡的目标应用是以最小的硬件开支来支持低速I/O能力,低速卡支持如MODEM,条形扫描仪和GPS接收器等应用。对组合卡来说,全速和4BIT操作对卡内存储器和SDIO部分都是强制要求 的。
       在非组合卡的SDIO设备里,其最高速度要只有达到25M,而组合卡的最高速度同SD卡的最高速度一样,要高于25M。
       SDIO总线和USB总线类似,SDIO总线也有两端,其中一端是主机(HOST)端,另一端是设备端(DEVICE),采用HOST-DEVICE这样的设计是为了简化DEVICE的设计,所有的通信都是由HOST端发出命令开始的。在DEVICE端只要能解溪HOST的命令,就可以同 HOST进行通信了。
        SDIO的HOST可以连接多个DEVICE,这个是同SD的总线一样的,其中有如下的几种信号:
1.CLK信号:HOST给DEVICE的时钟信号.
2.CMD信号:双向的信号,用于传送命令和反应。
3.DAT0-DAT3 信号:四条用于传送的数据线。
4.VDD信号:电源信号。
5.VSS1,VSS2:电源地信号。
在SDIO总线定义中,DAT1信号线复用为中断线。在SDIO的1BIT模式下DAT0用来传输数据,DAT1用作中断线。在SDIO的4BIT模式下DAT0-DAT3用来传输数据,其中DAT1复用作中断线。
四、SDIO命令
       SDIO总线上都是HOST端发起请求,然后DEVICE端回应请求。其中请求和回应中会数据信息。
1.Command:用于开始传输的命令,是由HOST端发往DEVICE端的。其中命令是通过CMD信号线传送的。
2.Response:回应是DEVICE返回的HOST的命令,作为Command的回应。也是通过CMD线传送的。
3.Data:数据是双向的传送的。可以设置为1线模式,也可以设置为4线模式。数据是通过DAT0-DAT3信号线传输的。
        SDIO的每次操作都是由HOST在CMD线上发起一个CMD,对于有的CMD,DEVICE需要返回Response,有的则不需要。
        对于读命令,首先HOST会向DEVICE发送命令,紧接着DEVICE会返回一个握手信号,此时,当HOST收到回应的握手信号后,会将数据放在4位的 数据线上,在传送数据的同时会跟随着CRC校验码。当整个读传送完毕后,HOST会再次发送一个命令,通知DEVICE操作完毕,DEVICE同时会返回 一个响应。
       对于写命令,首先HOST会向DEVICE发送命令,紧接着DEVICE会返回一个握手信号,此时,当HOST收到回应的握手信号后,会将数据放在4位的 数据线上,在传送数据的同时会跟随着CRC校验码。当整个写传送完毕后,HOST会再次发送一个命令,通知DEVICE操作完毕,DEVICE同时会返回 一个响应。
五、SDIO的寄存器
      SDIO卡的设备驱动80%的任务就是操作SDIO卡上的有关寄存器。SDIO卡最多允许有7个功能(function),这个同其功能号是对应的(0~7),每个功能都对应一个128K字节大小的寄存器。功能号之所以取值范围是1~7,而没有包含0,是因为功能0并不代表真正的功能,而代表CIA寄存器,即Common I/O Area,这个纪录着SDIO卡的一些基本信息和特性,并且可以改写这些寄存器。其中地址0x1000~0x17fff是SDIO卡的CIS区域,就是基本信息区域,Common Information
Structure。初始化的时候读取并配对SDIO设备。

       这些寄存器的详细分区已经其对应的功能,在开发过程中都是需要仔细研读的,这些都在协议的SPEC中都有详细说明,这里就不在啰嗦了。

抱歉!评论已关闭.