EDN China > 设计实例 > 嵌入式系统 > MCU(单片机应用) > 正文
? 2016博客大赛-不限主题,寻找电子导师,大奖升级??

(多图) ATmega128L单片机的MiCro SD卡读写

西安工程大学 朱大锐 张团善 高文?? 2009年07月24日 ?? 收藏2

  引 言

  随着工业控制系统功能的增强,系统对于存储介质的安全、容量、性能的要求越来越高。Micro SD卡是在SD卡和Mini SD卡基础上发展起来的一种多功能存储卡,具备串行和随机存取能力,可以通过专用优化速度的串行接口访问,数据传输可靠,安全性好,传输速度快,存储容量大,体积小,被列为目前全球最小的迷你存储卡。Micro SD卡支持SD模式和SPI模式。随着高性能单片机的性能不断提高,利用高性能、低功耗的AVR 8位ATmegal28L单片机的串行外设接口SPI与Micro SD卡之间进行高速同步数据传输,设计开发了一种嵌入式文件系统。

  1 硬件电路设计

  MicrO SD卡的接口可以支持两种操作模式:SD模式和SPI模式。主机系统可以选择其中任一模式。SD卡模式允许4线的高速数据传输,传输速率高,但是大部分单片机无此接口,使用软件模拟协议复杂。SPI模式使用简单通用的SPI通道接口就可实现数据传输,目前大多数单片机提供SPI接口。SPI模式的优势在于可以使用标准主机,从而把外设减少到最低。SPI模式相对于SD模式的缺点是损失了传输速度;但是目前的微处理器的处理速度越来越高,利用SPI模式大都能满足工程需要。

  Micro SD卡要求用全双工、8位的SPI操作。

  ATmegal28L单片机和Micro SD卡之间只需要4根信号线就可以完成数据的读写,当CS信号线为低电平时,主机开始所有的总线传输。数据从单片机的MOSI引脚同步输入Micro SD卡的DI引脚,并由Micro SD卡的DO线同步输入单片机的MISO引脚,数据在CLK信号的上升沿同步输入和输出。在每个数据传输的结尾还必须提供8个额外的时钟,以允许Micro SD卡完成任何未完结的操作。由于Micro SD卡的电压为3.3 V,所以选择需要支持3.3 V的I/O端口输出的ATmegal28L单片机。另外,使用SPI模式时,为了防止在无卡接人或卡驱动器呈高阻态时总线悬空,根据SD卡规范,这些信号需要在主机端用10 kQ~100 kΩ的上拉电阻,其硬件连接电路如图1所示。

硬件连接电路

  2 软件设计

  2.1 Micro SD卡初始化为SPI总线模式

  ATmegal28L单片机包含一个串行外设接口SPI,可以方便地对Micro SD卡接口进行配置。为了配置时钟和数据长度,需要对SPI控制寄存器SPCR和SPI状态寄存器SPSR进行设置:使能SPI,选择单片机为主机模式,时钟上升沿锁存数据,并且对SPI时钟进行设置。Micro SD卡的SPI模式通信由主机控制。每一个指令或数据块由8位的字节和CS标志构成,SPI通信由指令、响应和数据组成。主机先将Micro SD卡的片选CS置低,激活MicroSD卡进人工作状态。

  刚上电时,Micro SD卡缺省使用专有的SD总线协议。将Micro SD卡切换到SPI模式,主机需要发出命令(2MD0(GO_IDLE_STATE)。Micro SD卡会检测到SPI模式选择信息,因为卡选择(CS)引脚在该命令和其他所有SPI命令传送过程中都保持为低电平。Micro SD卡以R1作为响应。空闲状态位被置为高电平,此时Micro SD卡进入空闲状态,此阶段的SPI时钟频率不能超过400kHz(将SPCR寄存器设置为0x53)。Micro SD卡进入SPI模式后,主机应该先发一条初始化指令CMD1。此时可将SPI频率设置为高速模式(将SPCR寄存器设置为0x50)。然后发送命令CM1359决定是否开启CRC校验,设置读、写块数据长度,最后延迟8个时钟后返回。MicroSD初始化流程如图2所示。

MicroSD初始化流程

  2.2 Micro SD卡读写单块数据

  从Micro SD卡中读取一个数据块只需要主机发送CMDl7(READl_SINGLE_BLOCK)命令,并将起始地址作为参数(此地址必须和介质上一个块的起始位置对齐),然后.Micro SD卡会验证这个字节地址,并以一个R1命令作为响应。完成了Micro SD卡读取操作后,先发送一个起始数据命令,接着发送固定数量的数据,最后是两个字节CRC校验。

  从Mimro SD卡中写入一个数据块和读取数据块相似,需要主机发送CMI)24(wRITE_BLOCK)命令启动写操作过程,Micro SD卡将以R1命令响应格式进行应答。如果命令响应,则进行写操作,主机发送起始令牌,然后发送固定数量的数据字节(512字节),返回一个数据响应令牌指示需要写入的数据是否完成,最后是两个字节的CRC校验,读写单块数据流程如图3所示。

读写单块数据流程

  2.3 Micro SD卡的文件存储

  为了方便ATmegal28L单片机对Micro SD卡中文件进行操作,以及要使Micro sD卡的数据能在PC机上得到正确的访问,需要在Micro SD卡上创建它们支持的文件系统,这就需要设计自己的文件管理系统FAT。FAT文件系统有FATl2、FATl6、FAT32,它们的主要不同是在磁盘分配表结构中每个记录所占的位数不同。FAT32文件分配表每一表项为32位。本文选择建立FAT32文件系统。


上一页12下一页
?? ?? ??


打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮

1.扫描左侧二维码
2.点击右上角的分享按钮
3.选择分享给朋友
?? ??

CRC校验? ATmega128L? 单片机? SD卡?

相关文章

我来评论
美国的游客
美国的游客 ??? (您将以游客身份发表,请登录 | 注册)
?
有问题请反馈