SD/MMC 卡读写模块---SD/MMC 卡的外部物理接口

来源:互联网 发布:python模拟鼠标点击 编辑:程序博客网 时间:2024/05/21 19:29

转载地址:http://www.8951.com/book/jiao1n21.htm

SD/MMC    卡是一种大容量(最大可达 4GB)、性价比高、体积小、访问接口简单的存储卡。SD/MMC 卡大量应用于数码相机、MP3 机、手机、大容量存储设备,作为这些便携式设备的存储载体,它还具有低功耗、非易失性、保存数据无需消耗能量等特点。SD 卡接口向下兼容 MMC(MutliMediaCard 多媒体卡)卡,访问 SD 的 SPI 协议及部分命令也适用于 MMC 卡。SD/MMC       卡读写模块是 ZLG     系列中间件的重要成员之一,又称为 ZLG/SD。该模块是一个用来访问 SD/MMC 卡的软件读写模块,目前最新版本为 2.00,本版本不仅能读写SD 卡,还可以读写 MMC 卡;不仅能在前后台系统(无实时操作系统)中使用,还可以在嵌入式操作系统 μC/OS-II 中使用。本文模块只支持 SD/MMC 卡的 SPI 模式。在本章中,除了特别说明以外,“卡”都是指 SD 卡或 MMC 卡。
1.1 SD/MMC 卡的外部物理接口
SD 和 MMC 卡的外形和接口触点如图 1.1 所示。其中 SD 卡的外形尺寸为:24mm x 32mm x 2.1mm(普通)或 24mm x 32mm x 1.4mm(薄 SD 存储卡),MMC 卡的外形尺寸为24mm x 32mm x 1.4mm。

表 1.1 为 SD/MMC 卡各触点的名称及作用,其中 MMC 卡只使用了 1 ~ 7 触点。

注:1.  S:电源;I:输入;O:推挽输出;PP:推挽 I/O。
    2.  扩展的 DAT 线(DAT1 ~ DAT3)在上电后处于输入状态。它们在执行 SET_BUS_WIDTH 命令后作为 DAT 线操作。当不使用 DAT1 ~ DAT3 线时,主机应使自己的DAT1~DAT3 线处于输入模式。这样定义是为了与 MMC 卡保持兼容。
     3.  上电后,这条线为带 50KΩ 上拉电阻的输入线(可以用于检测卡是否存在或选择 SPI 模式)。用户可以在正常的数据传输中用 SET_CLR_CARD_DETEC(ACMD42)命令断开上拉电阻的连接。MMC 卡的该引脚在 SD 模式下为保留引脚,在 SD 模式下无任何作用。
     4.  MMC 卡在 SD 模式下为:I/O/PP/OD。
     5.  MMC 卡在 SPI 模式下为:I/PP。
由表 1.1 可见,SD 卡和 MMC 卡在不同的通信模式下,各引脚的功能也不相同。这里的通信模式是指微控制器(主机)访问卡时使用的通信协议,分别为 SD 模式和 SPI 模式。在具体通信过程中,主机只能选择其中一种通信模式。通信模式的选择对于主机来说是透明的。卡将会自动检测复位命令的模式(即自动检测复位命令使用的协议),而且要求以后双方的通信都按相同的通信模式进行。所以,在只使用一种通信模式的时候,无需使用另一种模式。下面先简单介绍这两种模式。
1.1.1 SD 模式
在 SD 模式下,主机使用 SD 总线访问 SD 卡,其总线拓扑结构如图 1.3 所示。由图可见,SD 总线上不仅可以挂接 SD 卡,还可以挂接 MMC 卡。


SD 总线上的信号线的详细功能描述如表 1.2 所示。



SD 存储卡系统(SD 模式)的总线拓扑结构为:  一个主机(如微控制器)、多个从机(卡)和同步的星形拓扑结构(参考图 1.3)。所有卡共用时钟  CLK、电源和地信号。而命令线(CMD)和数据线(DAT0 ~ DAT3)则是卡的专用线,即每张卡都独立拥有这些信号线。请注意,MMC 卡只能使用 1 条数据线 DAT0。
1.1.2  SPI 模式
在 SPI 模式下,主机使用 SPI 总线访问卡,当今大部分微控制器本身都带有硬件 SPI接口,所以使用微控制器的 SPI 接口访问卡是很方便的。微控制器在卡上电后的第 1 个复位命令就可以选择卡进入 SPI 模式或 SD 模式,但在卡上电期间,它们之间的通信模式不能更改为 SD 模式。卡的 SPI 接口与大多数微控制器的 SPI 接口兼容。卡的 SPI 总线的信号线如表 1.3 所示。
表 1.3  SD 卡与 MMC 卡的 SPI 接口描述

                                 图1.3

SPI 总线以字节为单位进行数据传输,所有数据令牌都是字节(8 位)的倍数,而且字节通常与 CS 信号对齐。SD 卡存储卡系统如图 1.4 所示。

                               图1.4
当主机外部连接有多张 SD 卡或 MMC 卡时,主机利用 CS 信号线对卡进行寻址。例如:在图 1.4 中,当主机需要向 SD 存储卡 A 传输数据或需要从该卡接收数据时,必须将 CS(A)置为低电平(同时其它卡的 CS 信号线必须置为高电平)。CS 信号在 SPI 处理(命令、响应和数据)期间必须续持有效(低电平)。唯一例外的
情况是在对卡编程的过程。在这个过程中,主机可以使 CS     信号为高电平,但不影响卡的编程。
由图 1.4 可见,当 SPI 总线上挂接 N 张卡时,需要 N 条 CS 片选线。

0 0