《spi模式下的sd卡的实现.pdf》由会员分享,可在线阅读,更多相关《spi模式下的sd卡的实现.pdf(4页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、多媒体卡 MMC 的特点是闪存功耗低,密度高,体积小,可靠性高,可擦除,可重写,容量大;内部控制电路,可以使用在手机、数码相机、MP3、PDA 等多种数字设备上,可反复记录30万次,现在市场上的主流容量有128MB-2GB。SPI 最早是由摩托罗拉公司提出的一种串行总线接口,支持 MCU 与外设的双工、同步串行通信。由于其简单的接口设计,只用4根线即可完成所有的通信工作,因此被大部分的 MCU 芯片所支持。利用被广泛支持的 SPI 总线来进行 MMC 卡的读写,可解决没有 MMC控制器的问题。1 1 1 1 MMCMMCMMCMMC 卡卡1.11.11.11.1 MMCMMCMMCMMC 卡的
2、简介卡的简介MMC 卡的面积为24mm32mm,厚度为1.4mm,MMC 卡的工作电压为2.7-3.6V,时钟频率范围为0-20MHz,为了支持广泛的应用,MMC 卡接口简单(为7引脚),具有最大的可扩展性和可配置性。其中3脚为电源供应,数据操作通过4脚的串行总线完成。作为 SPI 设备,MMC 卡的 SPI 通道由以下4个信号组成:CS 的反(片选),CLK(时钟),DateIn(主机到卡的数据信号)和 DateOut(卡到主机的数据信号)。CS 的反是 MMC 卡的片选信号线,在整个 SPI 操作过程中,必须保持低电平有效;CLK 便于同步,DateIn 不但传输数据,还发送命令;Date
3、Out 除了发送数据外,还传送应答信号。1.21.21.21.2 MMCMMCMMCMMC 卡的卡的 SPISPISPISPI 协议协议MMC 存储卡有 MMC 和 SPI 两种工作模式。MMC 卡上电后即进入 MMC 模式;当片选(CS)线被拉低时发送 Reset(CMD0)指令会使 MMC 卡进入 SPI 模式,如果需要从SPI 模式转入 MMC 模式,只能切断电源重新上电。SPI 协议是以主从方式工作的,这种模式通常有一个主设备和一个(或多个)从设备,SPI 接口是一种通用同步串行接口总线,字长为8位,用来与外部设备进行通信。该接口在工作时,主设备通过提供移位时钟和从使能信号来控制信息的
4、流动,主设备的每次开始传送任务时,都先将片选(CS 的反)线置低以激活 MMC 卡,使其进入工作状态。MMC 卡的 SPI 协议的特点主要有:被选中的卡总是对来自于设备的指令有所响应的,当卡遇到错误时,会返回一个出错响应来代替期望的数据,指令的响应是一个8位或16位的结构,只支持单块读写操作,块的大小可以大到一个扇区(512字节),小到1个字节。2 2 2 2 硬件电路设计硬件电路设计MMC 卡既可以采用 MMC 总线访问,也可以采用 SPI 总线访问,大部分微处理器都有 SPI 接口而没有 MMC 总线接口,如果采用 I/O 口模拟 MMC 总线,不但增加了软件的开销,而且对大多数微处理器来
5、说,模拟 MMC 总线远不如真正的 MMC 总线速度快,这将大大降低总线数据传输的速度。基于以上考虑,可以采用 LPC2200微处理器的 SPI 接口,设计访问 MMC 的硬件接口电路,LPC2200是系统的核心控制器,它的主要作用是将数据发送至 MMC 卡内存储。MMC 卡的数据写入是以块为单位的,一块为512字节,所以当 RAM 中存放了512字节数据时,LPC2200便将其一次性写入 MMC 卡中。LPC2200微处理器与 MMC 卡卡座接口电路如图1所示,连接引脚如表1所示。3 3 3 3 SPISPISPISPI 模式下模式下 MMCMMCMMCMMC 卡的读写实现卡的读写实现3.1
6、3.13.13.1 MMCMMCMMCMMC 卡初始化卡初始化在对在对 MMCMMCMMCMMC 卡读写之前要进行初始化操作卡读写之前要进行初始化操作,这是确保这是确保 MMCMMCMMCMMC 卡能在卡能在 SPISPISPISPI 模式下进行模式下进行正常数据读写的前提,正常数据读写的前提,MMCMMCMMCMMC 卡上电后默认进入卡上电后默认进入 MMCMMCMMCMMC 模式,等待至少模式,等待至少74747474个时钟周期后,个时钟周期后,片选信号置低片选信号置低,发送发送 CMD0CMD0CMD0CMD0,CMD0CMD0CMD0CMD0的命令索引位是的命令索引位是00000000
7、0000000000000000,即发送命令字即发送命令字0 x400 x400 x400 x40、0 x00 x00 x00 x0、0 x00 x00 x00 x0、0 x00 x00 x00 x0、0 x00 x00 x00 x0、0 x950 x950 x950 x95。如果收到应答信号如果收到应答信号01H01H01H01H,则表示出错则表示出错。然后向然后向 MMCMMCMMCMMC 卡发送卡发送 CMD1CMD1CMD1CMD1,CMD1CMD1CMD1CMD1命令索引位是命令索引位是000001000001000001000001。因此进入闲置状态后。因此进入闲置状态后 CRCC
8、RCCRCCRC 校验默认关闭,故校验默认关闭,故 CRCCRCCRCCRC 校验位可取任意校验位可取任意值值。受到正确的应答信号受到正确的应答信号00H00H00H00H 之后之后,MMCMMCMMCMMC 卡即进入卡即进入 SPISPISPISPI 模式模式;如果收到应答信号不是如果收到应答信号不是00H00H00H00H,则重发则重发 CMD1CMD1CMD1CMD1直到收到正确的应答。初始化过程如图直到收到正确的应答。初始化过程如图2 2 2 2所示。所示。3.2 MMC 卡块读写初始化完成后,可使用默认的读写长度(512字节)进行 MMC 卡的读写;也可用CMD16来设置 MMC 卡
9、的块读取长度,可以是1-512字节之间的任意值。但是对 MMC 卡的写过程则要求块长度必须为512字节。MMC 卡读写数据时使用的是绝对地址,即从0开始编号的32位地址,这里使用块号来进行读写,块号是从0开始编号的,且每块的大小为一扇区(即512字节),故开始都必须将扇区号转换成绝对地址。(1)读取数据块向 MMC 卡发送 CMD17,收到有效应答信号0 x00后,开始接收数据,数据由数据起始令牌和数据块组成,其中起始令牌值为0 xFE。当收起起始令牌后,随后接收数据块,读操作如图3所示。(2)写入数据块向 MMC 卡发送 CMD24,收到有效应答信号0 x00后,开始发送数据。数据同样由数据起始令牌(0 xFE)和数据块组成。写操作如图4所示。4 小结SPI 总线接口简单易用、兼容性好,使用 SPI 接口实现对 MMC 卡的读写操作是非常简单有效的。用 SPI 接口可以实现每秒约1MB 的读写速度,而用 MMC 接口则可以达到每秒约3MB 的读写速度。虽然读写速度降低了一些,但是已经可以基本满足读写速度的要求。
限制150内