MultiMediacard及其与单片机接口
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初始化与写子程序
《MultiMediacard及其与单片机接口(第2页)》