SDIO DRIVER

SDIO  spa

       SDIO 卡是在 SD 内存卡接口的基础上发展起来的接口, SDIO 接口兼容之前的 SD 内存卡,而且能够链接 SDIO 接口的设备,目前根据 SDIO 协议的 SPEC  SDIO 接口支持的设备总类有蓝牙,网卡,电视卡等。 设计

       SDIO 协议是由 SD 卡的协议演化升级而来的,不少地方保留了 SD 卡的读写协议,同时 SDIO 协议又在 SD 卡协议之上添加了 CMD52  CMD53 命令。因为这个, SDIO  SD 卡规范间的一个重要区别是增长了低速标准,低速卡的目标应用是以最小的硬件开始来支持低速 I/O 能力。低速卡支持相似调制解调器 , 条形码扫描仪和 GPS 接收器等应用。高速卡支持网卡,电视卡还有“组合”卡等,组合卡指的是存储器 +SDIO  orm

       SDIO  SD 卡的 SPEC 间的又一个重要区别是增长了低速标准。 SDIO 卡只须要 SPI  1  SD 传输模式。低速卡的目标应用是以最小的硬件开支来支持低速 I/O 能力,低速卡支持相似 MODEM ,条形扫描仪和 GPS 接收器等应用。对组合卡来讲,全速和 4BIT 操做对卡内存储器和 SDIO 部分都是强制要求的。 接口

       在非组合卡的 SDIO 设备里,其最高速度要只有达到 25M ,而组合卡的最高速度同 SD 卡的最高速度同样,要高于25M  内存

 

SDIO 总线 开发

       SDIO 总线和 USB 总线相似, SDIO 总线也有两端,其中一端是主机( HOST )端,另外一端是设备端( DEVICE ),采用 HOST- DEVICE 这样的设计是为了简化 DEVICE 的设计,全部的通讯都是由 HOST 端发出命令开始的。在 DEVICE 端只要能解溪 HOST 的命令,就能够同 HOST 进行通讯了。 it

       SDIO  HOST 能够链接多个 DEVICE ,以下图所示 : io

 

 

       这个是同 SD 的总线同样的 , 其中有以下的几种信号 function

1.        CLK 信号 :HOST  DEVICE 的时钟信号 . form

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 中都有详细说明,这里就不在罗索了。  

 

CMD52 命令:

SDIO 设备为了和 SD 内存卡兼容, SD 卡全部 Command  Response 彻底兼容,同时加入了一些新的 Command Response 。例如,初始化 SD 内存卡使用 ACMD41 ,而 SDIO 卡设备则用 CMD5 通知 DEVICE 进行初始化。

但两者最重要的区别是, SDIO 卡比 SD 内存卡多了 CMD52  CMD53 命令,这两个命令能够方便的访问某个功能的某个地址寄存器。

CMD52 命令是 IO_RW_DIRECT 命令的简称,其命令格式以下

首先第一位为 0, 代表是起始位,第二位为传输方向,这里为 1 ,表明方向为 HOST  DEVICE 设备传送,其后 6 位为命令号,这里是 110100b ,用十进制表示为 52  CMD52 的名字也由此而来。紧接着是读写标志位。

      而后是操做的功能号。也就是 function   number 。若是为 0 则指示为 CCCR 寄存器组。

       紧接着是寄存器地址,用 17 指示,因为功能寄存器有 128K 地址, 17 位正好能寻址。

       再下来 8  Write data or Staff Bits 的意思是说,若是当前为写操做,则为数据,不然 8 位为填充位。无心义。

       最后 7 位为 CRC 校验码。最后一位为结束位 0 

       对于 CMD52  Response  48 位,命令格式以下:

 

       总结下, CMD52 是由 HOST 发往 DEVICE 的,它必须有 DEVICE 返回来的 Response  CMD52 不须要占用DAT 线,读写的数据是经过 CMD52 或者 Response 来传送。每次 CMD52 只能读或者写一个 byte 

 

CMD53 命令:

CMD52 每次只能读写一个字节,由于有了 CMD53 对读写进行了扩展, CMD53 容许每次读写多个字节或者多个块(BLOCK)  CMD53 的命令格式以下:

       第一位是 1, 为开始位,而后是一位方向位,老是 1 ,表明方向为 HOST  DEVICE 设备传送,其后 6 位为命令号,这里是 110101b ,用十进制表示为 53  CMD53 的名字也由此而来。

       而后是 1 位的读写标志。接着是 3 位功能号,这个同 CMD52 都是相同的。 Block   Mode 若是 1 表明是块传输模式,不然为字节传输模式。

       OP Code 为操做位,若是是 0 ,表明数据往固定的位置读写,若是 1 表明是地质增量读写。例如,对地址 0 固定读写16 个字节,至关于 16 次读写的地址 0 ,而对地址 0 增量读写 16 个字节,至关于读写 0~15 地址的数据。

       而后是 17 位的地址寄存器,能够寻址到 128K 字节的地址,而后是 9 位的读写的计数,对于字节读取,读写大小就是这个计数,而对于块读写,读写的大小是计数乘以块的大小。

       随后的 7 位为 CRC 校验码。最后一位为 1 

       当读写操做是块操做的时候,块的大小是能够经过设置 FBR 中的相关寄存器来设置。

        CMD52 命令不一样的是, CMD53 没有返回的命令的,这里判断是否 DEVICE 设备读写完毕是须要驱动里面本身判断的,通常有 2 个方法, 1. 设置相应的读写完毕中断。若是 DEVICE 设备读写完毕,则对 HOST 设备发送中断。 2.HOST 设备主动查询 DEVICE 设备是否读写完毕,能够经过 CMD 命令是否有返回来判断是否 DEVICE 是否读写完毕。

相关文章
相关标签/搜索