i目录第1章SD/MMC卡读写模块.....................................................................................11.1SD/MMC卡的外部物理接口..................................................................................11.1.1SD模式.............................................................................................................21.1.2SPI模式............................................................................................................31.2访问SD/MMC卡的SPI模式硬件电路设计.........................................................41.2.1SPI总线............................................................................................................51.2.2卡供电控制.......................................................................................................51.2.3卡检测电路.......................................................................................................51.3SD/MMC卡读写模块的文件结构及整体构架......................................................51.3.1SD/MMC卡读写模块的文件组成..................................................................51.3.2SD/MMC读写模块整体框架..........................................................................61.4SD/MMC卡读写模块的使用说明..........................................................................61.4.1SD/MMC卡读写模块的硬件配置..................................................................61.4.2SD/MMC卡读写模块提供的API函数..........................................................91.5SD/MMC卡读写模块的应用示例一....................................................................111.5.1硬件连接与配置.............................................................................................111.5.2实现方法.........................................................................................................111.6SD/MMC卡读写模块的使用示例二....................................................................181.6.1实现方法.........................................................................................................181.6.2例子建立与运行步骤.....................................................................................201.6.3参考程序.........................................................................................................241.7SD/MMC软件包应用总结....................................................................................27广州致远电子有限公司Tel:(020)3873097638730977Fax:38730925卡读写模块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.1SD/MMC卡的外部物理接口SD和MMC卡的外形和接口触点如图1.1所示。其中SD卡的外形尺寸为:24mmx32mmx2.1mm(普通)或24mmx32mmx1.4mm(薄SD存储卡),MMC卡的外形尺寸为24mmx32mmx1.4mm。图1.1SD卡和MMC卡实物图图1.2SD卡和MMC卡接口示意图(上视图)表1.1为SD/MMC卡各触点的名称及作用,其中MMC卡只使用了1~7触点。表1.1SD/MMC卡的焊盘分配SD模式SPI模式引脚名称1类型描述名称类型描述1CD/DAT32I/O/PP3卡的检测/数据线[Bit3]CSI片选(低电平有效)2CMDPP4命令/响应DII5数据输入3VSS1S电源地VSSS电源地广州致远电子有限公司Tel:(020)3873097638730977Fax:38730925数据线[Bit0]DOO/PP数据输出8DAT1I/O/PP数据线[Bit1]RSV9DAT2I/O/PP数据线[Bit2]RSV注: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_DETECT(ACMD42)命令断开上拉电阻的连接。MMC卡的该引脚在SD模式下为保留引脚,在SD模式下无任何作用。4.MMC卡在SD模式下为:I/O/PP/OD。5.MMC卡在SPI模式下为:I/PP。由表1.1可见,SD卡和MMC卡在不同的通信模式下,各引脚的功能也不相同。这里的通信模式是指微控制器(主机)访问卡时使用的通信协议,分别为SD模式和SPI模式。在具体通信过程中,主机只能选择其中一种通信模式。通信模式的选择对于主机来说是透明的。卡将会自动检测复位命令的模式(即自动检测复位命令使用的协议),而且要求以后双方的通信都按相同的通信模式进行。所以,在只使用一种通信模式的时候,无需使用另一种模式。下面先简单介绍这两种模式。1.1.1SD模式在SD模式下,主机使用SD总线访问SD卡,其总线拓扑结构如图1.3所示。由图可见,SD总线上不仅可以挂接SD卡,还可以挂接MMC卡。图1.3SD存储卡系统(SD模式)的总线拓扑结构广州致远电子有限公司Tel:(020)3873097638730977Fax:38730925所示。表1.2SD总线信号线功能描述信号线功能描述CLK主机向卡发送的用于同步双方通信的时钟信号CMD双向的命令/响应信号DAT0~DAT34个双向的数据信号(MMC卡只有DAT0信号线)VDD电源正极,一般电压范围为2.7~3.6VVSS1、VSS2电源地SD存储卡系统(SD模式)的总线拓扑结构为:一个主机(如微控制器)、多个从机(卡)和同步的星形拓扑结构(参考图1.3)。所有卡共用时钟CLK、电源和地信号。而命令线(CMD)和数据线(DAT0~DAT3)则是卡的专用线,即每张卡都独立拥有这些信号线。请注意,MMC卡只能使用1条数据线DAT0。1.1.2SPI模式在SPI模式下,主机使用SPI总线访问卡,当今大部分微控制器本身都带有硬件SPI接口,所以使用微控制器的SPI接口访问卡是很方便的。微控制器在卡上电后的第1个复位命令就可以选择卡进入SPI模式或SD模式,但在卡上电期间,它们之间的通信模式不能更改为SD模式。卡的SPI接口与大多数微控制器的SPI接口兼容。卡的SPI总线的信号线如表1.3所示。表1.3SD卡与MMC卡的SPI接口描述信号线功能描述CS主机向卡发送的片选信号CLK主机向卡发送的时钟信号DataIn主机向卡发送的单向数据信号DataOut卡向主机发送的单向数据信号SPI总线以字节为单位进行数据传输,所有数据令牌都是字节(8位)的倍数,而且字节通常与CS信号对齐。SD卡存储卡系统如图1.4所示。图1.4SD存储卡系统(SPI模式)的总线拓扑结构广州致远电子有限公司Tel:(020)3873097638730977Fax:38730925卡时,主机利用CS信号线对卡进行寻址。例如:在图1.4中,当主机需要向SD存储卡A传输数据或需要从该卡接收数据时,必须将CS(A)置为低电平(同时其它卡的CS信号线必须置为高电平)。CS信号在SPI处理(命令、响应和数据)期间必须续持有效(低电平)。唯一例外的情况是在对卡编程的过程。在这个过程中,主机可以使CS信号为高电平,但不影响卡的编程。由图1.4可见,当SPI总线上挂接N张卡时,需要N条CS片选线。1.2访问SD/MMC卡的SPI模式硬件电路设计SD/MMC卡可以采用SD总线访问,也可以采用SPI总线访问,考虑到大部分微控制器都有SPI接口而没有SD总线接口,而且如果采用I/O口模拟SD总线,不但增加了软件的开销,而且对大多数