1、基于嵌入式系统的多媒体存储卡接口设计 嵌入式系统由于本身存储容量的限制,急需扩展外存,多媒体卡(MMC)就是解决外存扩展的一个很好的方案。多媒体卡在多媒体领域广泛用作外部存储介质,但是大多数微处理器(MCU)并没有专门的多媒体卡控制器,多媒体卡的串行外设模式给了不具有多媒体卡控制器而需要读写多媒体卡的微处理器另一种选择,串行外设接口协议是广泛支持的总线协议,它通过串行外设接口总线与多媒体卡相连。本文介绍了MMC 卡的工作原理和多媒体卡的串行外设接口协议(SPI)模式,给出了微处理器与 MMC 卡的接口电路、程序流程图及部分程序代码。1 MMC(多媒体卡)简介MMC 卡(Multimedia C
2、ard)是由美国 SanDisk 公司和德国西门子公司在1997 年共同开发研制的一种多功能、体积小巧而容量大的快闪存储卡。1998年 1 月十四家公司联合成立了 MMC 协会(Multi-Media Card Association 简称MMCA)。MMC 卡的发展目标主要是针对移动电话、数码相机、数码摄像机、MP3音乐、PDA、电子书、玩具等产品。MMC 卡在一定程度上改善了 CF 卡读写速度较慢的缺点,并且体积轻巧,抗冲击性强,可反复读写 30 万次左右。MMC 卡4.0 标准提供了更宽的数据带宽和更快的传输速率,并支持双电压操作模式。MMC 存储卡还具备存储区纠错能力和低功耗特性,如果
3、在 5 ms 内没有接收到命令控制字,MMC 卡会自动转入休眠状态,MMC 卡同时还支持热插拔。MMC 存储卡可以分为 MMC 和 SPI 两种工作模式,MMC 模式是 MMC 卡的标准默认模式,具有 MMC 的全部特性。而 SPI 模式则是 MMC 存储卡可选的第二种模式,这个模式是 MMC 协议的一个子集,主要用于只需要小数量的卡和低数据传输率的系统,这个模式可以把设计成本减到最小,但性能不如 MMC 工作模式。2 MMC 的结构及工作原理2.1 MMC 卡的引脚及功能MMC 卡通常设计为一种低成本的数据平台和通讯介质,目前 MMC 存储卡的容量可达 2 GB。它的接口设计非常简单:MMC
4、 卡采用 7 针的接口(如图 1 所示),低成本的串行总线时钟频率可达 20MHz,MMC 的工作电压为 2.7 V3.6 V,写/读电流只有 27 mA 和 23 mA。它的读写模式包括流式、多块和单块。最小的数据传送是以块为单位的,缺省的块大小为 512 字节。MMC 读写接口机可在 MMC 和 SPI 两种通信协议下工作,MMC 是 MMCA 协会开发的高性能三线制通信协议,即图 l 中的 CMD、CLK 和 DAT 三根线,可寻址64 000 张 MMC 卡,单个物理寻址可叠放 30 张卡,支持顺序读/写、单/多数据块读/写操作,MMC 工作模式是 MMC 卡默认的通信协议。SPI 协
5、议作为 MMC 卡的可选协议,工作效率不及 MMC 协议,但 SPI 协议简单易用、兼容性好、便于嵌入式系统连接使用。表 1 是 MMC 卡使用 SPI 协议时的引脚定义。2.2 MMC 卡的内部逻辑结构及功能MMC 卡的内部逻辑结构可分为四部分:MMC/SPI 通信协议接口、单芯片控制器、数据闪存模块、控制线和数据线。MMC/SPI 接口实现与主控制器的通信;单芯片控制器完成接口协议、数据存储检索、纠错码算法、故障判断处理、电源管理和时钟控制等功能;数据闪存模块可以实现整个存储区空间的单字节访问;控制线和数据线可以实现单芯片控制器与数据闪存模块的访问。2.3 MMC/SPI 通信协议MMC
6、卡上电后,以默认方式进入 MMC 协议模式,如果要转入 SPI 协议模式,还需要进行协议模式切换。如果要从 SPI 协议模式转入 MMC 协议模式,则只能切断电源后重新通电,本设计采用 SPI 通信协议。2.4 MMC 卡的文件系统MMC 卡的文件格式定义并不包括在系统规范内,不过为了提高资料的交换性,还是定义了三种基本的文件系统,其中除了不带分区的 DOS-FAT 文件系统和类似硬盘带分区的文件系统外,开发者还可以定义自己独特的文件系统。这些定义同样使得 MMC 卡具有广泛的操作平台(如 DOS、Windows 系统)支持性。3 MMC(多媒体卡)的 SPI 协议3.1 SPI 通信协议模式
7、及接口简介SPI 是一个高速同步串行输入/输出端口或同步串行外围接口,是一种通用同步串行接口总线,字长为 8 位,主要用于与各种外围器件进行通讯。SPI接口很容易与许多厂家的各种外围器件直接相连,这些外围器件可以是简单的TTL 移位寄存器、复杂的 LCD 显示驱动器或 A/D 转换子系统。还可应用于嵌入式系统、MCU 与外部移位寄存器、D/A 转换器、A/D 转换器、串行 EEPROM、LED显示驱动器等外部设备之间的通信接口扩展。SPI 接口有主、从两种工作模式,在多主机系统中,SPI 还可用于不同 MCU 之间的通讯。SPI 接口的传送速率可编程,其内部有 125 个可编程的波特率,接收或
8、发送操作均可通过中断或查询方式来进行。整个工作状态要通过设置其内部的几个控制寄存器来完成,如:(1)SPICCR:SPI 配置控制寄存器。(2)SPICTL:SPI 操作控制寄存器。(3)SPISTS:SPI 状态寄存器。(4)SPlBRR:SPI 波特率寄存器。(5)SPIRXEMU:SPI 仿真缓冲寄存器。(6)SPIRXBUF:SPI 串行输入缓冲寄存器。(7)SPITXBUF:SPI 串行发送缓冲寄存器。(8)SPIDAT:SPI 串行数据寄存器。(9)SPIPRI:SPI 优先级控制。如图 2 和表 1 所示,SPI 接口利用 CLK、DataIn、DataOut 三线进行数据的读写
9、操作,其中,CLK 为时钟信号,由外部控制器提供,DataIn 和 DataOut为数据输入和输出线,CS 是 MMC 卡的片选信号线,在整个 SPI 操作过程中,CS必须保持低电平有效。3.2 MMC 卡命令的 CRC 校验MMC 卡在数据处理时为了确保数据存储的准确性,均采用了 CRC 校验字,MMC 卡的 CRC 校验分为两种:CRC7 和 CRCl6。CRC7 适合于 MMC 卡的所有命令,只有应答信号格式为 R3 的除外,它的算法表达式为:G(x)=x7+x3+1。CRCl6 用于数据块传输模式的保护处理,它的算法表达式为:G(x)=x16+x12+x5+1 。3.3 MMC 卡的命
10、令及答复信号所有 MMC 卡的命令字长度为 6 个字节,传输从高位开始,且包含一个CRC 校验字,命令字的格式如表 2 所示。3.3.1 MMC 卡的命令MMC 卡的命令字共分为 10 个命令组,每组由多个命令字组成。SPI 协议模式下支持其中的 6 个命令组,可实现基本设定、数据块读、数据块写、擦除、写保护和 MMC 卡锁定等功能。以堆栈的检查管理命令 CIM_CHECK_STACK 为例,它是命令组中的基本设定命令之一,主要是通过命令 SEND_CSD(CMD9)来读取MMC 卡的信息后,与进入系统中堆栈表的接口卡信息对比,如果不是上一张卡,再判定是否超时和超出卡的数量,从而确定该卡是否已
11、进入系统。堆栈的检查管理命令流程图如图 3 所示。3.3.2 MMC 卡的应答信号格式 对于 MMC 卡的命令,MMC 卡有多种应答信号格式,其应答信号的传输也是从高位开始,在 SPI 协议模式下,有 5 种应答信号格式:即Rl、R2、R3、Busy 和 Rlb。接收到每个命令字后,MMC 卡都会发送一个格式为 R1 的应答信号(除卡状态查询命令字 CMDl3 外),此应答信号为 1 字节,最高位为 O,其他位为错误标志,如表 3 所示。Busy 格式应答信号的长度为多个字节,各位均为 0 时,表示卡正忙,如果存在非 O 位,表明 MMC 卡已经准备好接受下一个命令。R2 格式应答信号的长度为
12、 2 个字节,用于答复卡状态查询命令字CMDl3,首字节同 R1,第 2 字节表示的是错误类型,如表 4 所示。R3 格式应答信号的长度为 5 个字节,用于答复卡内 OCR 寄存器,R3 的首字节同 Rl,其余 4 字节为 OCR 寄存器的内容。Rlb 格式应答信号包括两部分,Rl 格式部分和 Busy 格式可选附加部分。4 MMC 与嵌入式系统的接口4.1 硬件设计图 2 是 MMC 卡与嵌入式系统芯片的硬件接口,图中可增加一个片外存储器作缓存芯片,采用 Port C 的硬件 SPI 接口对 MMC 卡进行读写操作,对 MMC 卡的文件系统进行读写操作可参阅参考文献4。4.2 软件设计访问
13、MMC 卡存储单元前,需要设定访问块的长度,默认的长度为 512 个字节,系统通过写缓存储芯片,当写入的数据达到 512 个字节后即转入主存MMC,故读写长度不再设定。MMC 格式化为 FAT 文件系统的结构后,数据以文件的形式保存,这样方便上位机对主存 MMC 的读取。MMC 接口的部分软件设计流程如图 4 所示。SPI 模式支持单数据块和多数据块的写命令,以下的程序为单数据块写子程序的部分代码:5 结束语和 CompactFlash 一样,MMC 也是把存储单元和控制器一同做到了卡上,智能的控制器使得 MMC 保证了较好的兼容性和灵活性。实际上所有的 MMC 是向上兼容的,而且能保证与以后出现的新规格的产品兼容。Sanyo 和 Fujitsu 联合推出了 Secure MMC,这种新的 MMC 采用了 Hitachi 的 SuperHRISC 微处理器内核,能高速执行与安全相关的操作(如加密解密等),具有很强的版权保护功能,Secure MMC 也是向上兼容的,可以插入 MMC 插槽中使用,这种卡配合应用Hitachi、Sanyo 和 Fujitsu 开发的 UDAC-MB(universal distribution with accesscontrol-media base)版权保护技术,可以用于提供基于移动电话的音乐发行服务,且具有低功耗、携带方便、性能价格比高等特点。