SDIO卡
SDIO卡是在SD内存卡接口的基础上发展起来的接口,SDIO接口兼容曾经的SD内存卡,而且能够衔接SDIO接口的设备,现在依据SDIO协议的SPEC,SDIO接口支撑的设备总类有蓝牙,网卡,电视卡等。
SDIO协议是由SD卡的协议演化晋级而来的,许多当地保留了SD卡的读写协议,一起SDIO协议又在SD卡协议之上添加了CMD52和CMD53指令。因为这个,SDIO和SD卡规范间的一个重要区别是增加了低速规范,低速卡的方针运用是以最小的硬件开端来支撑低速I/O才能。低速卡支撑相似调制解调器,条形码扫描仪和GPS接收器等运用。高速卡支撑网卡,电视卡还有“组合”卡等,组合卡指的是存储器+SDIO。
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进行通讯了。
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中都有具体阐明,这儿就不在罗索了。
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的姓名也由此而来。紧接着是读写标志位。
然后是操作的功用号。也便是functionnumber。假如为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.