学海荡舟手机网

主页 > 实用文摘 > 教育文摘_15 > > 详细内容

MultiMediacard及其与单片机接口_单片机论文

摘要:Multimediacard是Sandisc公司推出的大容量串行Flash存储卡,外形尺寸为32mm×24mm×1.4mm,质量小于2g,7针引脚,便于开发设计小型的移动数码设备。本文重点介绍此类存储器与PIC单片机的接口,给出实际的电路设计和软件代码示例。

    关键词:multimediacard 串行flash存储卡 PIC单片机 接口

1 概述

sandisc公司推出的大大容量串行flash存储器产品——multimediacard(mmc),通常叫作多媒体卡。它的体积比smartmedia还要小,不怕冲击,可反复读写记录30万次,驱动电压2.7~3.6v,可变时钟频率范围为0~20mhz,目前常见的容量为64mb/128mb。atp electrionics公司已经率先推出了1gb的高容量mmc。除了体积小、寿命长、容量大等特性外,还具备存储区纠错能力;低功耗;5ms内没有接收到命令字后,自动转入休眠状态;支持热插拔等优点。mmc可以格式化为fat文件系统,便于上位机读写。

2 mmc简介

2.1 引脚排列及功能

根据存储容量的不同,mmc有smdb和sdmj两种构成技术。smdb即二进制nand技术(binary nand),16mb和32mb容量的mmc卡采用此技术。目前常用的64mb和128mb的mmc采用sdmj,即mlc(multi level cell)nand技术。各容量的mmc卡,其外形尺寸及引脚排列相同,如图1所示。

mmc读写接口可以在mmc和spi两种通信 协议下工作。mmc是由mmca协会开发的高性能三线制通信协议,即cmd、clk、dat线,最大可寻址64000张mmc卡,单个地址可叠放30张卡,支持顺序读写及单/多数据块读写操作,是mmc卡默认的通信协议。spi协议为可选协议,工作效率不及mmc协议;但spi协议简单易用,兼容性好,便于和单片机连接使用。本设计采用spi通信协议,下文将详细介绍。

    2.2 内部逻辑结构

mmc卡的内部逻辑结构可分为四部分:mmc/spi接口、单芯片控制器、数据闪存模块、控制线和数据线。mmc/spi接口实现与主控制器的通信。单芯片控制器完成接口协议、数据存储检索、纠错码算法、故障诊断处理、电源管理和时钟控制功能。数据内存模块可以实现整个存储空间内的单字节访问,它不是简单的字阵列,而是被分成了多种结构。512个字节构成1个扇区(sector)。根据mmc卡容量的不同,16或32个扇区构成1个擦除族(erase group)。32个擦除族构成1个写保护族(write protect group)。此设计使mmc操作灵活,使用方便。控制线和数据线实现数据存储区的访问,其内部逻辑结构如图2所示。

3 mmc/spi通信协议

mmc卡上电后,默认进入mmc模式。如果转入spi模式下工作,需进行模式切换。spi模式设定流程如图3所示。

如需从spi模式转入mmc模式,只能切断电源,重新上电,进入默认mmc模式。从实际应用角度出发,spi模式设计简单,操作方便,但数据传输速率逊于mmc模式。基于设计要求,笔者采用了spi通信协议。

4 存储器读写接口

4.1 spi接口及操作模式

spi接口是一种通用同步串行接口总线,字长为8位,用来与外部设备进行通信。spi接口利用clk、datain和dataout三根线进行数据的读写。其中,clk为时钟信号,有外部控制器提供;datain和dataout为数据输入和输出线。cs是mmc片选信号线,在整个spi操作过程中,必须保持低电平有效信号。

spi接口共有四种操作模式,分别为0、1、2和3。spi操作模式决定了设备接收和发送数据时的时钟相位和极性,即决定了时钟信号的上升和下降沿与数据流动方向之间的关系,如图4所示。本设计采用模式3。

4.2 mmc卡命令及答复信号

所有mmc卡命令字长度均为6个字节,传输从高位开始,且包含一个crc校验字。

命令字索引采用二进制编码。比如cmd0的索引位是000000,cmd39的索引位是100111。mmc卡命令字分为10个命令组,每组由多个命令字组成,完成mmc卡功能设定。spi模式下的sandisc mmc卡支持其中的6个命令组,可实现基本设定、数据块读、数据块写、擦除、写保护、mmc卡锁定功能。

mmc卡有多种应答信号格式,传输从高位开始。spi模式下,存在5种应答信号格式,分别为r1、r2、r3、busy、r1b。

接收到每个命令后,mmc卡都发送一个格式为r1的应答信号,卡状态查询命令字cmd13除外。此应答信号占1字节,最高位为0,低7位为错误标志。若某位为1,表示存在相应错误。

busy应答信号长度为多个字节。各位都为0,表示卡正忙。存在非零位表明卡已经准备好接收下一命令。

r2格式应答信号长度为2字节,用于答复卡状态查询命令字cmd13。首字节格式同r1,第2个字节表示的错误类型。

r3格式应答信号长度为5字节,答复卡内ocr豁口读命令cmd58。首字节格式同r1,其余4字节为ocr豁口内容。

r1b格式应答信号包括两部分,r1格式部分和busy格式可选附加部分。

4.3 mmc在spi模式下的传输时序

mmc在spi协议下读写时序如图5所示。主控制器发送读/写命令,当收到out传输互上正确的应答信号后,out/in传输线开始读/写操作。

5 mmc卡与单片机接口实例

5.1 硬件电路设计

图6为笔者采用sandisc公司容量为32mb的mmc卡设计的便携式数据采集系统的一部分。单片机采用美国microchip公司推出的pic16f73b。单片机的工作频率为4mhz,采用port c的硬件spi接口进行mmc卡的读写操作。

5.2 软件设计

访问mmc卡存储单元前,需要设定访问块长度。默认长度为512字节。本设计是通过写缓存芯片fm24cl64,达到512字节后转入主存mmc的(硬件电路图应作相应的修改),所以读写长度不再设定。mmc格式化为fat文件系统的结构后,数据以文件的形式为上位机所读取。

mmc接口部分软件设计流程如图7所示。

5.3 mmc卡spi初始化与写子程序

因为mmc可以在两种协议下工作,且默认为mmc操作模式,所以必须经过初始化才能在spi模式下工作。初始化和写子程序代码见www.dpj.com.cn。

图7