51单片机与SD卡接口设计
单片机,毕业论文
60
51单片机与SD卡接口设计
51单片机与SD卡接13设计
InterfaceDesignforSDMemoryCard
Based
on
51
Single-ChipMicrocomputer
姚放吾曹木莲卢昭材丁福舜(南京邮电大学计算机学院,江苏南京210003)
摘要
介绍51单片机与SD卡的接口设计原理,以及FAT32文件系统的设计和应用程序控制SD卡读写操作的实现。关键词:单片机,W86L388D,FAT32
Abstract
This
paperintroduces
thedesign
principle
to
interfacesingle-chipmicrocomputerwithSD
memorycard.
aswellaS
FNr32filesystemdesignandimplementationofapplicationstocontrolSDcardread-writeoperation.
Keywords:single-chip
microcomputer,W86L388D,FAT32
近年来,SD存储卡在嵌入式产品中的应用越来越广泛,但SD卡接口一般仅集成在32位ARM处理器中,一般51单片机则由于资源限制没有该接口。因此,如何解决51单片机应用系统存取SD卡大容量数据就显得很有实际意义。本课题使用W86L388D作为单片机与SD卡的接口芯片,采用4线并行方式取代SPI串行方式读写数据,使SD卡的访问速度得到明显提高,并且设计了FAT32文件系统,提高了SD卡的存储效率和兼容性,因此特别适用于需要大容量存储功能的嵌入式仪表和设备中。
1
1.1
跗I
q#【皿f一红II
J(撤批哪【旧世分!ljI|转入并1、蜕块)
硬件设计
SD卡接口芯片简介
单片机与SD卡接口使用了华邦公司的W86L388D芯片。
引㈢瞄单囱㈥窜嘲皤南ws
础r
圈1SD卡软件框架结构
芯片的主要特性包括8/16位CPU总线接口、最高时钟率25MHz、支持SD卡1线或4线数据传输、支持DMA和中断传输模式。由于该芯片内部集成了SD卡操作的全部时序,因此用户只需通过初始化参数配置,然后给相应的寄存器写入控制命令,就可方便的控制SD卡的读写操作。每次命令操作结果的状态,可以通过查询内部的状态寄存器获知,以决定下一步的操作。W86L388D工作电压为3.3V,且采用48脚LQPF小型封装,所以特别适用于要求体积小、功耗低的嵌入式应用场合。1.2接口电路设计
电路中的W86L388D使用8位数据总线与单片机连接,它与处理器的接El采用异步模式(XTYP2引脚接地),芯片还支持另一种同步模式(XTYP2引脚接高电平)。在8位总线下,D15用作A0,与A1一A3共同作用选择内部寄存器。SDl-SD6引脚与SD卡的4根数据线,1根命令线和1根时钟线相连。W86L388D的5个GPIO引脚,一个用于SD卡是否插入的检测,一个用于控制MOS管的导通从而控制SD卡电源的接通与断开,两个分别控制两个发光二极管,可用来指示卡是否插入和对卡的写保护指示,一个检测写保护。32KBSRAM用于文件缓冲区,MA×3232是RS一232接口,用于和HOST机通信。2软件设计
软件设计主要包括三部分:对SD卡进行底层多块读写的驱动程序设计,中间层FAT32文件系统设计,以及跟上位机(HOST)依据传输协议的通信程序设计。整体软件框架结构如图1所示。2.1底层SD卡驱动程序
SD卡有两种总线协议,SDBus协议和SPI协议。现在绝大部分微控制器都集成SPI接El,所以利用这种方式与SD卡
通信相对简单方便,但SPI协议在数据交换时只允许1位数据串行传输,所以速度受到限制。在SDBus协议下,允许1线到4线数据传输,因而提高了传输速度。但SD总线时序要求严格,如果用软件模拟不仅复杂烦琐,而且可靠性也不高,W86L388D支持SDBus方式的4线数据传输,并且根据所收到的命令能自动产生相应的SDBus时序,从而方便用户的使用,提高了系统的性能。
与SD卡通信的命令(CMD)和数据(DATA)由一个起始位同步,由一个结束位终止。发给SD卡的命令采用6字节的格式。命令由主机通过CMD线串行发给SD卡,标志SD卡的行为动作,部分命令要求卡返回一个应答信号,应答信号同样是通过CMD线由卡传送给主机的。当主机发送给卡的命令要求有数据交换时,DAT0~3线将进行相应的数据传输。
在访问SD卡的过程中,所有的操作都由主机发起,主机发起的命令(CMD)有两种类型:广播命令和点对点命令。广播命令对系统中所有的卡都有效,只有被选定的卡才能接受点对点命令。主机对SD卡的操作都是经过以下两种模式:卡识别模式和数据传输模式。
卡识别模式:在这个模式中,主机复位系统中所有卡,得到卡的工作电压、系统分配给卡的地址(RCA)等信息。这些操作对系统中所有的卡都有效,且所有的数据传输都是通过CMD线进行的。系统初始化包括:W86L388D的初始化和SD卡的初始化。
W86L388D的初始化:①设置CPU访问W86L388D的总线宽度为8位,且W86L388D工作在模式1;②进行软件复位;③设置系统时钟,使系统工作于低速状态;④检测是否有卡插
入.如果没有则关闭卡电源,如果有,则进行下一步卡的初始化。
万方数据
单片机,毕业论文
《工业控制计算机)2008年21卷第9期
SD卡的初始化:①W86L388D中断允许设置;②利用
ACMD41命令获取卡操作条件寄存器OCR的内容(使用ACMD41命令之前先使用CMD55命令),获取此卡工作允许的
电压范围;③利用CMD2命令获取卡识别寄存器CID的内容,
获取卡的厂商ID、卡的名称、卡的版本等信息;(多利用CMD3
命令获取系统分配给卡的地址RCA;⑤设置系统时钟,使系统
工作于高速状态;(9如果系统中有多张SD卡,利用CMD7命令选定其中一张卡进行下一步的操作。
数据传输模式:在这个模式中,可以对SD卡进行读、写和擦除等操作,包括:单块的读操作,单块的写操作,多块的读操作,多块的写操作。2.2文件系统的实现
考虑到目前SD卡容量都较大,因此文件系统采用FAT32格式设计。
(1)获取指定逻辑盘信息
调用底层驱动程序从第0块开始.每次读取一个扇区(512字节),如果发现最后结束标志的两个字节是55AA,并且第446(从O开始计数)个字节的值是OX80,则表示此扇区是主引导扇区(MBR)。读出主引导扇区后,根据主引导扇区的第454~457(从0开始编号)的连续四个字节的值(小端模式存储),就可以根据这个数值找到系统分区引导记录BPB扇区的地址了。在实际操作SD卡的过程中,发现用这种方法有时读不出个别SD卡的容量和类型信息,具体原因不明。所以修改的算法如下:从零号扇区开始每次读取一个扇区进行搜索 …… 此处隐藏:4927字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [高中教育]电子线路高频非线性部分2.1
- [高中教育]中班美术活动——我的小手
- [高中教育]常用三极管参数大全
- [高中教育]计算机常见故障及解决办法
- [高中教育]风机基础环水平度控制方法探讨
- [高中教育]机械安全工程(专升本)阶段性作业3
- [高中教育]2009年安徽省高考语文考试说明刍议
- [高中教育]unit5 let's eat公开课教案设
- [高中教育]计算机网络原理课后习题答案
- [高中教育]2016-2022年中国新能源市场研究与投资
- [高中教育]2015-2020年中国会议行业市场评估及投
- [高中教育]经销商大会峰会主持人串词开场白
- [高中教育]2014新版北师大数学三年级上册小熊购物
- [高中教育]七年级第一学期体育与健康全套教案
- [高中教育]第三章:国际金融市场
- [高中教育]六年级下册数学单元测试-2.比例 北师大
- [高中教育]2016年上海海事大学法学院624刑法之《
- [高中教育]中国碳化钙产业竞争现状及未来五年投资
- [高中教育]网络时代,我们怎么玩
- [高中教育]圆锥曲线——高中数学基础知识与典型例
- 高集医院世界艾滋病宣传日活动方案
- 苏教版六年级英语上册期末试卷含答案
- 全民枪战生化英雄模式幽灵怎么玩 生化
- 灿烂的宋元文化一导学案
- 第2章货币资金与应收款项
- 北师大版八年级下册数学第三章《分式》
- 浅析高分子材料成型加工技术
- 华南理工大学2013年度共青团先进集体及
- 教师资格科目二小学教案模板(共合集)
- 工程扩建可研报告
- 中华人民共和国海事局2014年度招录公务
- 提高农村小学生作文能力的教学尝试
- 徒手心肺复苏术操作步骤
- 毛概试题库7-15章
- 2014-2015学年度(上)初中班主任工作计
- 企业驾驶员安全生产责任书
- 第07章 不等式测试题-2016年高考文科数
- 医疗器械经营企业工作程序
- 考研英语必背36篇_彩版_精华
- 初中9月13-15假期作业 (1)




