SPI模式下MMC卡的读写机制

spi模式下mmc卡的读写机制
多媒体卡mmc(multimedia card)是由美国sandisk公司和德国simens公司于1997年共同开发的一种多功能flash存储设备。基于arm7芯片lpc2200实现对mmc卡的读写。使用lpc2200的串行外设接口(spi接口)对mmc卡进行控制,在spi模式下对mmc卡进行数据的读写。
关键词 mmc卡 lpc2200 接口设计 spi接口
引言
多媒体卡mmc的特点是闪存功耗低,密度高,体积小,可靠性高,可擦除,可重写,容量大;内置控制电路,可以使用在手机、数码相机、mp3、pda等多种数字设备上,可反复记录30万次;现在市场上的主流容量有128 mb~2 gb。
spi最早是由motorola公司提出的一种串行总线接口,支持mcu与外设的双工、同步串行通信。由于其简单的接口设计,只用4根线即可完成所有的通信工作,因此被大部分的mcu芯片所支持。利用被广泛支持的spi总线来进行mmc卡的读写,可解决没有mmc控制器的问题。
1 mmc卡
1.1 mmc卡简介
mmc卡的面积为24 mm×32 mm,厚度为1.4 mm。mmc卡的工作电压为2.7~3.6 v,时钟频率范围为0~20 mhz。为了支持广泛的应用,mmc卡接口简单(为7引脚),具有最大的可扩展性和可配置性。其中3脚为电源供应,数据操作通过4脚的串行总线完成。作为spi设备,mmc卡的spi通道由以下4个信号组成:cs(片选),clk(时钟),datein(主机到卡的数据信号)和dateout(卡到主机的数据信号)。cs是mmc卡的片选信号线,在整个spi操作过程中,必须保持低电平有效;clk便于同步;datein不但传输数据,还发送命令;dateout除了发送数据外,还传送应答信号。
1.2 mmc卡的spi协议
mmc存储卡有mmc和spi两种工作模式。mmc卡上电后即进入mmc模式;当片选(cs)线被拉低时发送reset(cmd0)指令会使mmc卡进入spi模式。如果需要从spi模式转入mmc模式,只能切断电源重新上电。
spi协议是以主从方式工作的,这种模式通常有一个主设备和一个(或多个)从设备。spi接口是一种通用同步串行接口总线,字长为8位,用来与外部设备进行通信。该接口在工作时,主设备通过提供移位时钟和从使能信号来控制信息的流动。主设备的每次开始传送任务时,都先将片选(cs)线置低以激活mmc卡,使其进入工作状态。
mmc卡的spi协议的特点主要有: 被选中的卡总是对来自于主设备的指令有所响应的;当卡遇到错误时,会返回一个出错响应来代替期望的数据;指令的响应是一个8位或16位的结构;只支持单块读写操作。块的大小可以大到一个扇区(512字节),小到1个字节。
2 硬件电路设计
mmc卡既可以采用mmc总线访问,也可以采用spi总线访问。大部分微处理器都有spi接口而没有mmc总线接口。如果采用i/o口模拟mmc总线,不但增加了软件的开销,而且对大多数微处理器来说,模拟mmc总线远不如真正的mmc总线速度快,这将大大降低总线数据传输的速度。
基于以上考虑,可以采用lpc2200微处理器的spi接口,设计访问mmc的硬件接口电路。lpc2200是系统的核心控制器,它的主要作用是将数据发送至mmc卡内存储。mmc卡的数据写入是以块为单位的,一块为512字节,所以当ram中存放了512字节数据时,lpc2200便将其一次性写入mmc卡中。
lpc2200微处理器与mmc卡卡座接口电路如图1所示,连接引脚如表1所列。
图1 mmc卡spi接口电路
表1 lpc2200与mmc卡卡座的连接引脚
3 spi模式下mmc卡的读写实现
3.1 mmc卡初始化
图2 mmc卡的初始化过程
在对mmc卡读写之前要进行初始化操作,这是确保mmc卡能在spi模式下进行正常数据读写的前提。mmc卡上电后默认进入mmc模式,等待至少74个时钟周期后,片选信号置低,发送cmd0。cmd0的命令索引位是000000,即发送命令字0x40、0x0、0x0、0x0、0x0、0x95。如果收到应答信号01h,则表示出错。然后向mmc卡发送cmd1,cmd1命令索引位是000001。因为进入闲置状态后crc校验默认关闭,故crc校验位可取任意值。收到正确的应答信号00h之后,mmc卡即进入spi模式;如果收到应答信号不是00h,则重发cmd1直到收到正确的应答。初始化过程如图2所示。
3.2 mmc卡块读写
初始化完成后,可使用默认的读写长度(512字节)进行mmc卡的读写;也可用cmd16来设置mmc卡的块读取长度,可以是1~512字节之间的任意值。但是对mmc卡的写过程则要求块长度必须为512字节。mmc卡读写数据时使用的是绝对地址,即从0开始编号的32位地址,这里使用块号来进行读写。块号是从0开始编号的,且每块的大小为一扇区(即512字节),故开始都必须将扇区号转换成绝对地址。
(1) 读取数据块向mmc卡发送cmd17,收到有效应答信号0x00后,开始接收数据。数据由数据起始令牌和数据块组成,其中起始令牌值为0xfe。当收起起始令牌后,随后接收数据块。读操作如图3所示。
图3 mmc卡的读操作
(2) 写入数据块向mmc卡发送cmd24,收到有效应答信号0x00后,开始发送数据。数据同样由数据起始令牌(0xfe)和数据块组成。写操作如图4所示。
图4 mmc卡的写操作
4 小结
spi总线接口简单易用、兼容性好,使用spi接口实现对mmc卡的读写操作是非常简单有效的。用spi接口可以实现每秒约1 mb的读写速度,而用mmc接口则可以达到每秒约3 mb的读写速度。虽然读写速度降低了一些,但是已经可以基本满足读写速度的要求。

骨传导耳机的好处是哪些?骨传导耳机科普
三星首款升降式新机马上来了 Galaxy A80预约时间确认
Intel的核显真的占用了CPU的4根PCI-E通道吗
如何判断高频环形电感的好坏
ccep认证扬尘检测仪哪家好
SPI模式下MMC卡的读写机制
小米6天价拿下卡尔蔡司,实力远超华为P10上的徕卡!
自动化数据采集仪 MCU
Python简单可视化音乐:提取音乐频谱
如何让LED照明设计更智能?
电子电路企业发展需要钱,但钱非万能
通过电力线通信技术实现远距离、高速通信
Vivado提供的参数选项
优化物联网产品技术架构的首选项
贾跃亭喊话乐视网股价要上百元 救“视”主的股价“跌不起”
美国发布世界首款5nm芯片 不再受限于时间限制
华为nova5系列后置拍照实力非凡,超广角模式赢得年轻人喜爱
LG或将发布一款名为Q9的新智能手机 搭载骁龙660AIE处理器
华为徐直军:AI是大产业,生态建设和价格策略是关键
售前工程师的岗位职责有哪些