SD(Secure Digital)与 MMC(Multimedia Card) SD 是一种 flash memory card 的标准,也就是一般常见的 SD 记忆卡,而 MMC 则是较早的一种记忆卡标准,目前已经被 SD 标准所取代。在维基百科上有相当详细的 SD/MMC 规格说明:[http://zh./wiki/Secure_Digital]。 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 卡)有:
SDIO 的应用将是未来嵌入式系统最重要的接口技术之一,并且也会取代目前 GPIO 式的 SPI 接口。 SD/SDIO 的传输模式 SD 传输模式有以下 3 种:
SDIO 同样也支持以上 3 种传输模式。依据 SD 标准,所有的 SD(记忆卡)与 SDIO(外围)都必须支持 SPI mode,因此 SPI mode 是「required」。此外,早期的 MMC 卡(使用 SPI 传输)也能接到 SD 插糟(SD slot),并且使用 SPI mode 或 1-bit mode 来读取。 SD 的 MMC Mode SD 也能读取 MMC 内存,虽然 MMC 标准上提到,MMC 内存不见得要支持 SPI mode(但是一定要支持 1-bit mode),但是市面上能看到的 MMC 卡其实都有支持 SPI mode。因此,我们可以把 SD 设定成 SPI mode 的传输方式来读取 MMC 记忆卡。 SD 的 MMC Mode 就是用来读取 MMC 卡的一种传输模式。不过,SD 的 MMC Mode 虽然也是使用 SPI mode,但其物理特性仍是有差异的:
为避免混淆,有时也用 SPI/MMC mode 与 SPI/SD mode 的写法来做清楚区别。 1、什么卡会处于busy状态? 当数据送到卡里,其实只是送到了卡的内部控制器的buffer中。真正存到存储单元里面去还需要过一阵子。当这个buffer处于full的时候,就是卡处于busy状态的一种情况。此时SDCLK会暂时终止。 2、CRC校验是必须的吗? 不是。SD卡,MMC卡都支持CRC校验,但是当SPI模式的时候,可以选择不做CRC校验,不过也可以有CRC校验,这个是由用户决定的。 3、SD/SDIO/MMC/SPI之间的关系? SD/SDIO/MMC是三种不同的卡,这3种卡的管脚很类似,卡的样子也类似。最开始是先由MMC卡,然后在MMC的基础上做了修改有了SD卡,SD卡的基础上有了SDIO卡。所以SD/SDIO/MMC的协议大同小异,只有少量差异。 SPI在SD的大军里,只是一种传输模式。若是慢速的情况下,可选择SPI传输模式,这样SD接口就变成SPI协议了。Host也要根据SPI的协议对卡进行操作。 具体的区别需参考各协议。 4、SDSC/SDHC/SDXC的区别? 容量上不同,速度上不同。每一种新的协议在原有基础上功能会变得更完善。 5、SD双沿采集的时候,data block size自动变成固定512bytes,不管是否设置了BLOCK_LEN。 SD双沿采集的时候,只是数据传输的时候是双沿的,其他时候还都是单沿的。包括CRC,start bit,end bit都是单沿的。 还有SPI模式下,每个block的大小也一定是固定的512byte。 6、MMC4.0以下的卡中,小尺寸的卡称为RS-MMC。MMC4.0以上的卡中,大尺寸的卡称为MMCPLUS,小尺寸的卡称为MMCMOBILE,BGA封装的称为EMMC。 7、Inactive和IDLE状态的区别? 当卡进入inactive状态,卡不能被操作。只能通过重新上电才能回到IDLE状态。除了inactive以外的其他状态,CMD0都可以令卡回到IDLE状态。 8、SD/MMC/SDIO的命令格式都一样,所以三种卡才有可能通过同一个控制器来控制。 9、哪种MMC会事8个bit的? 所谓的8线MMC是指数据线为8线的MMC卡。当MMC4.x以上的卡,都支持8线的数据宽度,所以这类MMC就有13根线啦,其中data线占8根。 10、SDXC中的SDR、DDR,是怎么回事? 这是速率上的一种叫法。DDR50标示电压1.8V,速度50MHz的一种模式。SDXC分为两种卡:UHS50和UHS104,他们都支持SDR、DDR模式。 11、同一个控制器,支持SD/MMC/SDIO的所以卡,如何区分出现在卡槽里的是个什么卡呢? 这个需要软件来区分。软件不停的循环访问卡,对卡按照一定的顺序发出对应格式的命令,那么不同的卡会做出不同的反应。几个CMD发完,根据不用的反应就可以分出是什么卡了。比如已经判断出是SD卡了,但是不知道是什么类型的SD卡。那么我们就发一个CMD8,如果没有response,那么这个卡就是SD1.X的卡;如果有response,那么就是SD2.0以上的卡。 |
|