版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、大连科技学院2013届本科毕业生设计(论文)大连科技学院毕 业 设 计 (论 文)题 目 基于单片机的sd卡数据操作设计 学生姓名 专业班级 机械电子工程 09 指导教师 许鸣宇 职 称 讲师 所在单位 机械工程系 教研室主任 许鸣宇 完成日期 2012年 6 月 21 日 摘 要许多工业现场需要数据采集器完成各类数据采集工作。实际应用中要求数据采集器工作可靠,成本低廉,操作简单便于数据收集和分析;既要方便与PC机联机,又能独立完成数据采集、存储工作。SD卡在现在的日常生活与工作中使用也非常广泛,时下已经成为最为通用的数据存储卡。在诸如MP3、数码相机等设备上也都采用SD卡作为其存储设备。SD
2、卡之所以得到如此广泛的使用,是因为它价格低廉、存储容量大、使用方便、通用性与安全性强等优点。既然它有着这么多优点,那么如果将它加入到单片机应用开发系统中来,将使系统变得更加出色。这就要求对SD卡的硬件与读写时序进行研究。长期以来,以Flash Memory为存储体的SD卡因具备体积小、功耗低、可擦写以及非易失性等特点而被广泛应用于消费类电子产品中。特别是近年来,随着价格不断下降且存储容量不断提高,它的应用范围日益增广。当数据采集系统需要长时间地采集、记录海量数据时,选择SD卡作为存储媒质是开发者们一个很好的选择。论文介绍了SD卡存储采集数据电路设计原理、电路以及程序,详细阐述了用AT89C51
3、单片机对SD卡进行操作的过程。关键词:单片机 sd卡 串口 通信 ABSTRACTMany industry site need data collector of all kinds of data acquisition work completed. Practical application request data collector reliable, low cost, easy to operate, easy to data collection and analysis; Both convenient and PC online, and independently co
4、mplete the data acquisition, storage work.SD card is widely used in daily life and work. Now, it has become the most common data storage card. Such as MP3, digital cameras and other equipment are also using the SD card as the storage device. SD card is so widely used, because it has the advantages o
5、f low price, the advantages of large storage capacity, convenient use, versatility and strong safety. Since it has so many advantages, so if it is added to the MCU application development system, will make the system better. This requires hardware and read SD card to write time study.Long-term since
6、, to Flash Memory memory SD card has small size, low power consumption, erasable and non-volatile characteristics have been widely used in consumer electronic products. Especially in recent years, with falling prices and increasing storage capacity, its application range is extended. When the data a
7、cquisition system needs a long time to collect, record data, select the SD card as storage medium is the developers a good choice. This paper introduces the SD card store data acquisition circuit design principle, circuit and program.This paper describes in detail the process of operation of SD card
8、 with AT89C51 single chip microcomputer.Key Words:Single chip microcomputer SD card Serial port Signal communication目 录1 前 言12 系统方案设计23 系统硬件部分设计33.1 SD卡简介33.1.1 SD卡的使用33.1.2 SD卡发展历程43.2单片机的介绍43.2.1 单片机历史63.2.2 单片机的特点73.2.3 单片机的基本组成73.3 电源模块83.4 单片机最小系统83.5 sd卡内部结构和工作原理103.5.1 SD卡内部结构103.5.2 sd卡引脚及功能
9、113.6 单片机与sd卡链接123.6.1通讯模式123.6.2电平匹配123.7硬件接口设计134 软件设计144.1 软件设计目标144.2 设计环境144.3 系统软件设计144.3.1 SD卡初始化144.3.2 数据块的读写154.3.3 定时器T0函数流程图18结 论19谢 辞20参考文献21附 录2241 前 言SD卡(Secure Digital Memory Card)中文翻译为安全数码卡,是一种基于半导体快闪记忆器的新一代记忆设备,它被广泛地于便携式装置上使用,例如数码相机、个人数码助理(PDA)和多媒体播放器等。SD卡由日本松下、东芝及美国SanDisk公司于1999年
10、8月共同开发研制。SD卡为9引脚,目的是通过把传输方式由串行变成并行,以提高传输速度。它最大的特点就是通过加密功能,可以保证数据资料的安全保密,它还具备版权保护技术,所采用的版权保护技术是DVD中使用的CPRM技术(可刻录介质内容保护)。大小犹如一张邮票的SD记忆卡,重量只有2克,但却拥有高记忆容量、快速数据传输率、极大的移动灵活性以及很好的安全性。近年来, 单片机系统发展迅猛, 这不仅体现在 CPU处理能力迅速提升、 外界设备与处理器交互能力快速提高, 更体现在单片机系统的复杂性日益提高、 系统存储容量急剧增大。这些变化对于数据操作的灵活性提出了越来越高的要求。 因此, 如何系统地、 灵活地
11、管理数据文件就成了单片机系统开发者无法回避的问题。文件系统的使用使开发者获得“ 路径” 的概念, 从而回避了存储介质的地址空间, 不用每次都从头对物理介质进行操作。文件系统提供清晰明了的 API 函数, 使上层应用层不再关心底层存储介质, 而方便地利用标准接口访问底层存储器。 标准化的接口和层次分明的程序增加了程序的可移植性。 因此在单片机系统中植入文件系统是单片机系统发展的必然结果。由于该系统是通过 SD卡模组向 SD卡写入一系列文件, 这些文件需要被 Windows 系列操作系统正确识别, 并进行读写操作, 因此, 我们选择了应用最为广泛的 FAT16 文件系统。FAT16 是 Micro
12、soft 开发的文件系统, 是一种技术成熟、 结构简单、 系统资源开销小、 易于在单片机系统上的硬件平台上实现的文件系统。它是 Microsoft 公司在其 MS2DOS操作系统中采用的文件系统,具有出色的文件管理性能,能被当前大多数操作系统识别。因此,SD卡与 FAT16 文件系统相结合是嵌入式数据存储、记录系统的理想方案,可以将采集记录的数据直接在 PC上读取和处理。2 系统方案设计本系统采用 MCS 251 架构的 AT89S51单片机。AT89S51是一种低成本、 低功耗、 高性能的 CMOS 8 位微控制器,具有 8 KB 在系统可编程 Flash 存储器。应用AT89S52 读写
13、SD 卡,首先要确定它们之间的通信方案。SD卡有 2 种可选的通信协议: SD 模式和 SPI 模式。SD模式是 SD 卡的标准读写方式,选用此模式需要选择带SD卡控制接口的 MCU 或者额外的 SD 卡控制单元; SPI模式通过 SPI 总线完成 SD 卡与主控制器的通信。AT89S51没有集成 SD 卡控制器,为了不增加额外的 SD卡控制单元硬件成本,本设计方案采用 SD 卡的 SPI 通信模式。虽然 AT89S51也没有集成 SPI 接口模块,但可以用软件的方式模拟 SPI接口时序。另外一个要解决的问题是SD卡与AT89S51的电平匹配。SD卡的逻辑电平相当于3. 3 V 的 TTL 电
14、平标准,AT89S51的逻辑电平为5 V CMOS电平。解决电平匹配问题的原则有2条:一为输出电平器件输出的高电平的最小值,应该大于接收电平器件识别为高电平的最低电压值;另一条为输出电平器件输出低电平的最大电压值,应该小于接收电平器件识别为低电平的最高电压值。考虑到SD卡在SPI工作模式下,数据的传输都是单向的,这样可以在单片机向 SD 卡传输数据时采用晶体管加下拉电阻的方法,基本电路如图2-1所示。而在SD卡向单片机传输数据时可以采用直接连接,因为它们之间的电平刚好满足上述的电平兼容原则,既经济又实用。这个方案需要双电源供电,1 个5 V电源,1 个3.3 V电源。3 系统硬件部分设计3.1
15、 SD卡简介SD卡在24mm32mm2.1mm的体积内结合了SanDisk快闪记忆卡控制与MLC(Multilevel Cell)技术和Toshiba(东芝)0.16u及0.13u的NAND技术,通过9针的接口界面与专门的驱动器相连接,不需要额外的电源来保持其上记忆的信息。而且它是一体化固体介质,没有任何移动部分,所以不用担心机械运动的损坏。 SD卡的技术建是基于MultiMedia卡(MMC)格式上发展而来,大小和MMC差不多,尺寸为32mm x 24mm x 2.1mm。长宽和MMC一样,只是比MMC厚了0.7mm,以容纳更大容量的存贮单元。SD卡与MMC卡保持着向上兼容,也就是说,MMC
16、可以被新的SD设备存取,兼容性则取决于应用软件,但SD卡却不可以被MMC设备存取。(SD卡外型采用了与MMC厚度一样的导轨式设计,以使SD设备可以适合MMC)。 SD接口除了保留MMC的7针外,还在两边加多了2针,作为数据线。采用了NAND型Flash Memory,基本上和SmartMedia的一样,平均数据传输率能达到2MB/s。 SD卡还提供不同的速度,它是按CD-ROM的150kB/秒为1倍速的速率计算方法来计算的。基本上,它们能够比标准CD-ROM的传输速度快6倍(900 kB/秒),而高速的SD卡更能传输66x (10 MB/秒) 以及 133x 或更高的速度。一些数码相机需要高速
17、SD卡来更流畅地拍摄影片,和连续拍摄相片更迅速。直至2005年12月,大部分设备跟从SD卡的1.01规格,而更高速至133x的设备亦跟从1.1规格。 设有SD卡插槽的设备能够使用较簿身的MMC卡,但是标准的SD卡却不能插入到MMC卡插槽。SD卡能够于CF卡和PCMCIA卡上,插上转接器使用;而miniSD卡和microSD卡亦能插上转接器于SD卡插槽使用。一些USB连接器能够插上SD卡,而且一些读卡器亦能够插上SD卡,并由许多连接埠,例如USB、FireWire等存取使用。 SD卡的结构能保证数字文件传送的安全性,也很容易重新格式化,所以有着广泛的应用领域,音乐、电影、新闻等多媒体文件都可以方
18、便地保存到SD卡中。因此不少数码相机也开始支持SD卡。 3.1.1 SD卡的使用 SD卡应用于以下的手提数码装置: 数码相机储存相片及短片 数码摄录机储存相片及短片 个人数码助理(PDA)储存各类资料 手提电话储存相片、铃声、音乐、短片等资料 多媒体播放器 SD卡多用于MP3随身听、数码摄像机、数码相机等,也有用于笔记本电脑上。其投影面积与MMC卡相同,只是略微厚一点,为2.1mm,但是SD卡的容量大得多,且读写速度也MMC卡快4倍。同时,SD卡的接口与MMC卡是兼容的,支持SD卡的接口大多支持MMC卡。目前SD卡在数码相机中正在迅速普及,大有成为主流之势。SD卡在今年的发展很快,已经开始威胁
19、到CF卡的市场分额了。这是由于SD卡的体积要比CF卡小很多,并且SD卡在容量、性能和价格上和CF卡的差距越来越小,而这两年支持SD卡的手机迅速在市场走热,因此,SD卡的迅速成长绝对不是偶然的。最重要的一点就是MMC卡也能和SD卡相兼容,这也正是SD卡迅速走红的原因之一。不过注意的是,在某些产品例如手机上,SD卡和MMS卡是不能兼容的。现在的SD卡容量由8MB到32GB不等。3.1.2 SD卡发展历程在2006年,SD卡容量有8、16、32、64、128、256、或512 MB,1、2 、4、6、8(SDHC) GB。 SD/MMC卡已经替代东芝开发的SM卡,成为了便携式数码相机使用最广泛的数字
20、存储卡格式。2001年 SM卡的市场占有率超过50%,但到了2005年下降到了40%左右,并且还在快速滑落。大部分的数码相机生产商都提供了SD卡的支持,包括佳能、尼康、柯达、松下及柯尼卡美能达等。 三大主要厂商仍然在坚持使用自己的专利格式: 奥林巴斯和 富士使用 xD卡, 索尼使用Memory Stick。另外,SD卡还没有攻入CF卡占绝对地位的 数码单镜反光相机 市场。(除2005年尼康新发布的D50支持SD。) SD卡是东芝在MMC卡技术中加入加密技术硬件而成,由于MMC卡可能会较易让使用者复制数码音乐,东芝便加入这些技术希望令音乐业界安心。类似的技术包括索尼的MagicGate,理论上加
21、密技术可引入一些数码版权管理措施,但这功能甚少被应用。用户可以使用一个USB的读卡器,在个人电脑上使用SD卡。某些新型电脑上已经内置了读卡装置。最新的发展是SD内建了USB插口,省略了读卡器。SanDisk的设计是使用一个可折叠的护套来保护USB插口。尽管Sandisk并不是第一家内建USB功能的SD卡生产商,但由于其在业内的重要地位。这一动作带动了其他厂商跟风。 3.2单片机的介绍 AT89S51是美国ATMEL生产的低功耗,高性能CMOS8位单片机,片内含4K bytes的可系统编程的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准8051指令系统及
22、引脚。它集Flash程序存储器既可在线编程(ISP)也可用传统方法进行编程及通用8位微处理器于单片机芯片中,ATMEL公司的功能强大,低价位AT89S51单片机可为您提供许多高性价比的应用场合,可灵活应用于各种控制领域。AT89S51主要功能列举如下: 为一般控制应用的8位单芯片。 晶片内部具有时钟振荡器(传统最高工作频率可至12MHz)。 内部程式存储器(ROM为4KB)。 内部数据存储器(RAM为128B)。 32条双向输入输出线,且每条均可以单独做 I/O的控制。 5个中断向量源。 2组独立的16位定时器。 单芯片提供位逻辑运算指令。AT89S51管脚排列及系统所用引脚功能介绍。管脚排列
23、如图3-1所示,下面介绍引脚的功能。图1-1 AT89S51引脚图1.VCC:AT89S51 电源正端输入,接+5V。2.GND:电源地端。3.XTAL1:单芯片系统时钟的反相放大器输入端。4.XTAL2:系统时钟的反相放大器输出端。 5.PORT0:(P0.0P0.7):端口0是一个8位宽的开路漏极(Open Drain)双向输出入端口。P0在当做I/O用时可以推动8个LS的TTL负载。6.PORT2(P2.0P2.7):端口2是具有内部提升电路的双向I/O端口,每一个引脚可以推动4个LS的TTL负载,若将端口2的输出设为高电平时,此端口便能当成输入端口来使用。7.PORT1(P1.0P1.
24、7):端口1也是具有内部提升电路的双向I/O端口,其输出缓冲器可以推动4个LS TTL负载,同样地若将端口1的输出设为高电平,便是由此端口来输入数据。8.PORT3(P3.0P3.7):端口3也具有内部提升电路的双向I/O端口,其输出缓冲器可以推动4个TTL负载,同时还多工具有其他的额外特殊功能,包括串行通信、外部中断控制、计时计数控制及外部数据存储器内容的读取或写入控制等功能。其引脚分配如下:9.P3.0:RXD,串行通信输入。P3.1:TXD,串行通信输出。P3.2:INT0,外部中断0输入。P3.3:INT1,外部中断1输入。P3.4:T0,计时计数器0输入。P3.5:T1,计时计数器1
25、输入。P3.6:WR:外部数据存储器的写入信号。P3.7:RD,外部数据存储器的读取信号。3.2.1 单片机历史单片机诞生于20世纪70年代末,经历了SCM、MCU、SoC三大阶段。 1.SCM即单片微型计算机(Single Chip Microcomputer)阶段,主要是寻求最佳的单片形态嵌入式系统的最佳体系结构。“创新模式”获得成功,奠定了SCM与通用计算机完全不同的发展道路。在开创嵌入式系统独立发展道路上,Intel公司功不可没。 2.MCU即微控制器(Micro Controller Unit)阶段,主要的技术发展方向是:不断扩展满足嵌入式应用时,对象系统要求的各种外围电路与接口电路
26、,突显其对象的智能化控制能力。它所涉及的领域都与对象系统相关,因此,发展MCU的重任不可避免地落在电气、电子技术厂家。从这一角度来看,Intel逐渐淡出MCU的发展也有其客观因素。在发展MCU方面,最著名的厂家当数Philips公司。 Philips公司以其在嵌入式应用方面的巨大优势,将MCS-51从单片微型计算机迅速发展到微控制器。因此,当我们回顾嵌入式系统发展道路时,不要忘记Intel和Philips的历史功绩。 3.单片机是嵌入式系统的独立发展之路单片机是嵌入式系统的独立发展之路单片机是嵌入式系统的独立发展之路单片机是嵌入式系统的独立发展之路,向MCU阶段发展的重要因素,就是寻求应用系统
27、在芯片上的最大化解决;因此,专用单片机的发展自然形成了SoC化趋势。随着微电子技术、IC设计、EDA工具的发展,基于SoC的单片机应用系统设计会有较大的发展。因此,对单片机的理解可以从单片微型计算机、单片微控制器延伸到单片应用系统。3.2.2 单片机的特点1 、具有优异的性能价格比;2 、集成度高、体积小、可靠性高; 3 、控制功能强; 4 、低电压、低功耗。 3.2.3 单片机的基本组成 它由 CPU 、存储器(包括 RAM 和 ROM )、 I/O 接口、定时 / 计数器、中断控制功能等均集成在一块芯片上,片内各功能通过内部总线相互连接起来。 输入 / 输出引脚 P0、P1 、P2 、P3
28、 的功能 :P0.0-P0 .7:P0 口是一个 8 位漏极开路型双向 I/O 端口。在访问片外存储器时,它分时作低 8 位地址和 8 位双向数据总线用。在EPROM 编程时,由 P0 输入指令字节,而在验证程序时,则输出指令字节。验证程序时,要求外接上拉电阻。 P0 能以吸收电流的方式驱动8个LSTTL 负载。 P1. 0 P1. 7 ( 18 脚): P1 是一上带内部上拉电阻的 8 位双向 I/O 口。在 EPROM 编程和验证程序时,由它输入低 8 位地址。 P1 能驱动 4 个 LSTTL 负载。 在 8032/8052 中, P1. 0 还相当于专用功能端 T2 ,即定时器的计数触
29、发输入端; P1. 1 还相当于专用功能端T2EX ,即定时器 T2 的外部控制端。P2.0P2.7 ( 2128 脚): P2 也是一上带内部上拉电阻的 8 位双向 I/O 口。在访问外部存储器时,由它输出高 8 位地址。在对 EPROM 编程和程序验证时,由它输入高 8 位地址。 P2 可以驱动 4 个 LSTTL 负载。P3. 0 P3. 7 ( 1017 脚): P3 也是一上带内部上拉电阻的双向 I/O 口。在 MCS-51 中,这 8 个引脚还用于专门的第二功能。 P3 能驱动 4 个 LSTTL 负载。 P3. 0 RXD (串行口输入) P3. 1 TXD (串行口输出) P3
30、. 2 INT0 (外部中断 0 输入) P3. 3 INT1 (外部中断 1 输入) P3. 4 T0 (定时器 0 的外部输入) P3. 5 T1 (定时器 1 的外部输入) P3. 6 WR (片外数据存储器写选通) P3. 7 RD (片外数据存储器读选通) 3.3 电源模块SD卡的工作电平为3.3V,而控制芯片的逻辑电平为5V CMOS电平标准。因此,它们之间不能直接相连,否则可能会烧坏SD卡;出于对安全工作的考虑,有必要解决电平匹配问题。要解决这一问题,最根本的就是解决逻辑器件接口的要有两条:一为输出电平器件输出高电平的最小电压值,应该大于接收电平器件识别为高电平的最低电压值;另一
31、条为输出电平器件输出低电平的最大电压值,应该小于接收电平器件识别为低电平的最高电压值。 一般来说,通用的电平转换方案是采用类似SN74ALVC4245的专用电平转换芯片,这类芯片不仅可以用作升压和降压,而且允许两边电源不同。但是,这个方案代价相对昂贵,而且一般的专用电平转换芯片都是同时转换8路、16路或者更多路数的电平,相对本系统仅仅需要转换4路来说是一种资源的浪费。 电源电路原理图如图3.1。图3-1 电源电路原理图3.4 单片机最小系统单片机最小应用系统,指的是用最少的元件组成的单片机并且可以正常工作的系统,对本次设计使用单片机来说,最小系统一般应该包括:单片机,晶振电路以及复位电路。 复
32、位电路:主要由电容串联电阻组成,结合“电容电压不能突变”的性质和图例,可以知道,每当系统一上电,RST脚则会出现由电路RC值决定的高电平。最为典型的51单片机每当RST脚的高电平一直持续两个机器周期以上就会复位,所以,适当组合RC的取值就可以保证可靠的复位。一般教科书推荐C 取10u,R取8.2K当然也有其他取法的,原则就是要让RC组合可以在RST脚上产生不少于2个机周期的高电平至于如何具体定量计算,可以参考电路分析相关书籍。晶振电路:典型的晶振值取11.0592MHz(因为可以准确地得到9600波特率和19200波特率,用于有串口通讯的场合)/12MHz。(1)复位电路的用途单片机复位电路就
33、好比电脑的重启部分,当电脑在使用中出现死机,按下重启按钮电脑内部的程序从头开始执行。单片机也一样,当单片机系统在运行中,受到环境干扰出现程序跑飞的时候,按下复位按钮内部的程序自动从头开始执行。单片机复位电路如图3-2所示。图3-2 89S51最小系统图(2)复位电路的工作原理在单片机系统中,系统上电启动的时候复位一次,当按键按下的时候系统再次复位,如果释放后再按下,系统还会复位,所以可以通过按键的断开和闭合在运行的系统中控制其复位。在电路图中,电容的大小是10uF,电阻的大小是10k。所以根据公式,可以算出电容充电到电源电压的0.7倍(单片机的电源是5V,所以充电到0.7倍即为3.5V),需要
34、的时间是10K*10UF=0.1S。也就是说在电脑启动的0.1S内,电容两端的电压时在03.5V增加。这个时候10K电阻两端的电压为从51.5V减少(串联电路各处电压之和为总电压)。所以在0.1S内,RST引脚所接收到的电压是5V1.5V。在5V正常工作的51单片机中小于1.5V的电压信号为低电平信号,而大于1.5V的电压信号为高电平信号。所以在开机0.1S内,单片机系统自动复位(RST引脚接收到的高电平信号时间为0.1S左右)。在单片机启动0.1S后,电容C两端的电压持续充电为5V,这时候10K电阻两端的电压接近于0V,RST处于低电平所以系统正常工作。当按键按下的时候,开关导通,这个时候电
35、容两端形成了一个回路,电容被短路,所以在按键按下的这个过程中,电容开始释放之前充的电量。随着时间的推移,电容的电压在0.1S内,从 5V释放到变为了1.5V甚至更小。根据串联电路电压为各处之和,这个时候10K电阻两端的电压为3.5V,甚至更大,所以RST引脚又接收到高电平,单片机系统自动复位。3.5 sd卡内部结构和工作原理SD卡(Secure Digital Memory Card)是一种为满足安全性、容量、性能和使用环境等各方面的需求而设计的一种新型存储器件,SD卡允许在两种模式下工作,即SD模式和SPI模式,本系统采用SPI模式。本小节仅简要介绍在SPI模式下,STM32处理器如何读写S
36、D卡,如果读者如希望详细了解SD卡,可以参考相关资料。3.5.1 SD卡内部结构图3-3 SD卡内部图3.5.2 sd卡引脚及功能图3-4 sd卡管脚图SD卡主要引脚和功能为:CLK:时钟信号,每个时钟周期传输一个命令或数据位,频率可在025MHz之间变化,SD卡的总线管理器可以不受任何限制的自由产生025MHz的频率;CMD:双向命令和回复线,命令是一次主机到从卡操作的开始,命令可以是从主机到单卡寻址,也可以是到所有卡;回复是对之前命令的回答,回复可以来自单卡或所有卡;DAT03:数据线,数据可以从卡传向主机也可以从主机传向卡。SD卡以命令形式来控制SD卡的读写等操作。可根据命令对多块或单块
37、进行读写操作。在SPI模式下其命令由6个字节构成,其中高位在前。SD卡命令的格式如表1所示,其中相关参数可以查阅SD卡规范。一般我们用单片机操作SD卡时,都不需要对FAT分区表信息做处理,原因如下:1)、操作FAT分区表要增加程序代码量、增加SRAM的消耗,对于便携应用来说代码大小和占用SRAM的多少至关重要。2)、即使我们对FAT分区表不做任何了解,实际上我们一样可以向SD卡上写入数据,这就表明使用FAT对我们做数据存储应用来说如同鸡肋。3)、耗费大量经历和时间去了解FAT分区表对于我们做嵌入式软件开发的人来说有些得不偿失。4)、SD卡支持两种操作模式,SD模式和SPI模式,SPI模式做SD
38、数据操作时根本不需要知道FAT,这时候SD卡对于我们来说实际上就是个大的、快速的、方便的、容量可变的外部存储器。基于以上原因,一般情况下对SD卡的操作只需要了解SPI通讯就可以了,而现在大部分单片机都有SPI接口,那么操作SD卡易如反掌。3.6 单片机与sd卡链接应用AT89S51读写SD卡有两点需要注意。首先,需要寻找一个实现AT89S51单片机与SD卡通讯的解决方案;其次,SD卡所能接受的逻辑电平与AT89S51提供的逻辑电平不匹配,需要解决电平匹配问题3.6.1通讯模式SD卡有两个可选的通讯协议:SD模式和SPI模式。SD模式是SD卡标准的读写方式,但是在选用SD模式时,往往需要选择带有
39、SD卡控制器接口的MCU,或者必须加入额外的SD卡控制单元以支持SD卡的读写。然而,AT89S51单片机没有集成SD卡控制器接口,若选用SD模式通讯就无形中增加了产品的硬件成本。在SD卡数据读写时间要求不是很严格的情况下,选用SPI模式可以说是一种最佳的解决方案。因为在SPI模式下,通过四条线就可以完成所有的数据交换,并且目前市场上很多MCU都集成有现成的SPI接口电路,采用SPI模式对SD卡进行读写操作可大大简化硬件电路的设计。虽然AT89S51不带SD卡硬件控制器,也没有现成的SPI接口模块,但是可以用软件模拟出SPI总线时序。本文用SPI总线模式读写SD卡。3.6.2电平匹配SD卡的逻辑
40、电平相当于3.3V TTL电平标准,而控制芯片AT89S51的逻辑电平为5V CMOS电平标准。因此,它们之间不能直接相连,否则会有烧毁SD卡的可能。出于对安全工作的考虑,有必要解决电平匹配问题。要解决这一问题,最根本的就是解决逻辑器件接口的电平兼容问题,原则主要有两条:一为输出电平器件输出高电平的最小电压值,应该大于接收电平器件识别为高电平的最低电压值;另一条为输出电平器件输出低电平的最大电压值,应该小于接收电平器件识别为低电平的最高电压值。一般来说,通用的电平转换方案是采用类似SN74ALVC4245的专用电平转换芯片,这类芯片不仅可以用作升压和降压,而且允许两边电源不同步。但是,这个方案
41、代价相对昂贵,而且一般的专用电平转换芯片都是同时转换8路、16路或者更多路数的电平,相对本系统仅仅需要转换3路来说是一种资源的浪费。考虑到SD卡在SPI协议的工作模式下,通讯都是单向的,于是在单片机向SD卡传输数据时采用晶体管加上拉电阻法的方案,基本电路如图3-6所示。而在SD卡向单片机传输数据时可以直接连接,因为它们之间的电平刚好满足上述的电平兼容原则,既经济又实用。 图3-5 电平转换电路这个方案需要双电源供电(一个5V电源、一个3.3V电源供电),3.3V电源可以用AMS1117稳压管从5V电源稳压获取。3.7硬件接口设计SD卡提供9Pin的引脚接口便于外围电路对其进行操作,9Pin的引
42、脚随工作模式的不同有所差异。在SPI模式下,引脚1(DAT3)作为SPI片选线CS 用,引脚2(CMD)用作SPI总线的数据输出线MOSI,而引脚7(DAT0)为数据输入线MISO,引脚5用作时钟线(CLK)。除电源和地,保留引脚可悬空。本文中控制SD卡的MCU是ATMEL公司生产的低电压、高性能CMOS 8位单片机AT89S51,内含8K字节的可反复擦写的只读程序存储器和256字节的随机存储数据存储器。由于AT89S51只有256字节的数据存储器,而SD卡的数据写入是以块为单位,每块为512字节,所以需要在单片机最小系统上增加一片RAM。本系统中RAM选用存储器芯片HM62256,容量为32
43、K。对RAM进行读写时,锁存器把低8位地址锁存,与P2口的8位地址数据构成16位地址空间,从而可使SD卡一次读写512字节的块操作。4 软件设计4.1 软件设计目标最终能实现同时将四路模拟电压(0-5V)进行A/D转换,转换结果为十进制有效数字3位;要求每秒钟转换一次,并将结果转换为ASCII码形式;并将四路结果分别存储到SD卡预先建立好的CH1.txt、CH2.txt、CH3.txt、CH4.txt文档中。采集实时的4个通道电压值显示在TFT彩屏上;按S1按键进行采集及存储,再按S1按键暂停采集及存储,按S2键清除SD卡中的内容;按S按键系统进行复位。4.2 设计环境Keil C51是美国K
44、eil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。下面介绍Keil C51开发系统各部分功能和使用。Keil C51单片机软件开发系统的整体结构:Uvision 与Ishell分别是C
45、51 for Windows和for Dos的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。然后分别由C51及A51编译器编译生成目标文件(.OBJ),目标文件可由LIB51创建生成库文文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。 ABS文件由OH51转换成标准的Hex文件,以供调试器dScope51或tScope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM中。4.3 系统软件设计设计主要在Keil环境下进行编程。4.3.1 SD
46、卡初始化对SD卡进行初始化,初始化的过程中设置SD卡工作在SPI模式,其流程图如图4-1所示。在复位成功之后可以通过CMD55和ACMD41判断当前电压是否在工作范围内。主机还可以继续通过CMD10读取SD卡的CID寄存器,通过CMD16设置数据Block长度,通过CMD9读取卡的CSD寄存器。从CSD寄存器中,主机可获知卡容量,支持的命令集等重要参数。图4-1 SD卡初始化流程图4.3.2 数据块的读写完成SD卡的初始化之后即可进行它的读写操作。SD卡的读写操作都是通过发送SD卡命令完成的。SPI总线模式支持单块(CMD24)和多块(CMD25)写操作,多块操作是指从指定位置开始写下去,直到
47、SD卡收到一个停止命令CMD12才停止。单块写操作的数据块长度只能是512字节。单块写入时,命令为为CMD24,当应答为0时说明可以写入数据,大小为512字节。SD对每个发送给自己的数据块都通过一个应答命令确认,它为1个字节长,当低5位为00101时,表明数据块被正确写入SD卡。可见,读写SD卡的操作都是在初始化后基于SD卡命令和响应完成操作的,写SD卡的程序流程图如图4-2所示。 图4-2写SD卡流程图 写单块1):发送命令CMD24;2):接收R1响应;3):发送Data Tokens (Single Block Write: Oxfe);4):发送一个block(一般为512个字节);5
48、):发送两个CRC16码;6):循环接收数据,等待写完成,直到写完成接收到0xff。 写多块1):发送命令CMD25;2):接收R1b响应;3):发送Data Tokens (Single Block Write: 0xfe);4):发送一个block(一般为512个字节;5):发送两个字节CRC16码;6):循环接收数据,等待写完成,直到写完成接收到0xff;7):重复步骤3,继续发送下一个数据包,直到所有数据包发送完成,至步骤8继续;8):发送命令CMD12,数据传输结束;9):接受R1b相应。在需要读取SD卡中数据的时候,读SD卡的命令字为CMD17,接收正确的第一个响应命令字节为0xF
49、E,随后是512个字节的用户数据块,最后为2个字节的CRC验证码。读SD卡的程序流程图如图4-3所示。图4-3 读SD卡流程图 读单块l):发送命令CMD17;2):接收R1响应;3):等待Data Tokens (Single Block Read:0xfe);4):接收一个Block(一般为512个字节);5):接收两个宇节CRC16码。 读多块l):发送命令CMD 17;2):接收R1响应;3):等待Data Tokens (Single Block Read:0xfe;4):接收一个Block(一般为5121个字节);5):接收两个字节CRC16码;6):重复步骤3,继续接收下一个数据
50、包,直到接收所有数据包完成后,至步骤7继续;7):发送命令CMD12 ,数据传输结束;8):接收R1b响应。4.3.3 定时器T0函数流程图系统要求四个通道每一秒中分别进行一次A/D转换,系统采用24MHz晶振,一个周期0.5us,定时器初值赋值为50ms,则1s/(50ms*0.5us)=40,即溢出40次中断一次为1s。具体见流程图4-4所示。图4-4 定时器T0函数流程图结 论设计实现了利用单片机对SD卡进行读写控制的功能,基本达到了设计的目的。根据理论设计,并用计算机编程进行了模拟,制作出了实物并经测试功能完全符合设计要求。本设计应用单片机读写SD卡有两点需要注意。首先,需要寻找一个实
51、现单片机与SD卡通讯的解决方案:SD卡有两个可选的通讯协议:SD模式和SPI模式SD模式是SD卡标准的读写方式,但是在选用SD模式时,往往需要选择带有SD卡控制器接口的MCU,或者必须加入额外的SD卡控制单元以支持SD卡的读写。然而,单片机没有集成SD卡控制器接口,若选用SD模式通讯就无形中增加了产品的硬件成本。在SD卡数据读写时间要求不是很严格的情况下,选用SPI模式可以说是一种最佳的解决方案。因为在 SPI模式下,通过四条线就可以完成所有的数据交换,并且目前市场上很多MCU都集成有现成的SPI接口电路,采用SPI模式对SD卡进行读写操作可大大简化硬件电路的设计。设计用SPI总线模式读写SD
52、卡。其次,SD卡所能接受的逻辑电平与单片机提供的逻辑电平不匹配,需要解决电平匹配问题。要解决这一问题,最根本的就是解决逻辑器件接口的电平兼容问题,原则主要有两条:一为输出电平器件输出高电平的最小电压值,应该大于接收电平器件识别为高电平的最低电压值;另一条为输出电平器件输出低电平的最大电压值,应该小于接收电平器件识别为低电平的最高电压值。谢 辞基于SD卡存储采集数据电路设计终于告一段落了,在此我想对帮助我的老师们和同学们真诚的说声谢谢。论文的研究工作是在许鸣宇老师的悉心指导下完成的。论文的每一步进展都倾注着老师的关怀、教导和帮助。老师渊博的知识和丰富的经验使我受益匪浅,此外,陈老师言传身教,不仅
53、使我开拓了视野,增加了知识,更重要的是使我系统的掌握了科学研究的方法和自己动手的能力。在这里,向我的陈老师表示我由衷的谢意!与此同时也非常感谢我的同学在设计过程中给我的帮助和鼓励。最后,还要向所有关心和帮助过我的人致以最衷心的感谢!论文的工作是在我的导师陈锡华教授的悉心指导下完成的,陈教授严谨的治学态度和科学的工作方法给了我极大的帮助和影响。在此衷心感谢陈老师对我的关心和指导。还要向百忙之中抽时间对本文进行审阅,评议和参与本人论文答辩的各位老师表示感谢!参考文献1 潘水雄.新编单片机原理与应用.西安:西安电子科技大学出版社.20082 赵威.SD存储卡的设计和实现.上海:上海交通大学软件学院.
54、20073 于振南.51单片机读写SD卡.哈尔滨:哈尔滨工程大学信息学院.20094 康华光.电子技术基础.北京:高等教育出版社.20055 潘新民.王燕芳.微型计算机控制技术.北京:电子工业出版社.20066 龚运新.单片机C语言开发技术.北京:清华大学出版社.20067 张宋润.单片机应用设计200例.北京:北京航空航天大学出版社.20068 关德新.冯文全.单片机外围器件实用手册电源器件分册M.北京:北京航空航天大学出版社.19989 华成英.模拟电子技术基础(第三版).高等教育出版社.200110 王伟.高性能.低功耗带RAM实时时钟芯片DS1302 (上).电子世界:第一期.1995 附 录SD卡程序#include sd.h#include myfun.h /公共函数头文件bit is_init; /在初始化的时候设置此变量为1,同步数据传输(SPI)会放慢unsigned char bdata _dat;sbit _dat7=_dat7;sbit _dat6=_dat6;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 米面主食制作工操作管理测试考核试卷含答案
- 2026年医院行风建设专题培训课件
- 2026年针刺伤防护与职业暴露处置课件(含案例分析)
- 水路危险货物运输员岗前测试验证考核试卷含答案
- 真空电子器件金属零件制造工创新意识评优考核试卷含答案
- 2026年临床药师工作规范课件(学习辅导版)
- 味精原料粉碎工岗位专业能力考核试卷含答案
- 仲钼酸铵制备工岗位规划考核试卷含答案
- 实验测试员安全实操模拟考核试卷含答案
- 护工岗前工作规范考核试卷含答案
- FDE模式行业观察与实践
- HL1ST601-2023 钢结构焊接连接节点通 用图B册 (Q355钢)
- APQC跨行业流程分类框架 (8.0 版)( 中文版-2026年4月)
- 2025年劳动人事争议仲裁员培训考试试题及答案
- TB-T 3356-2021铁路隧道锚杆-PDF解密
- 农药生产经营使用检查表
- 母婴初级理论知识考核试卷
- 母婴护理理论知识考核试卷
- 《幼儿园课程概论》课件-第一章 幼儿园课程概述
- 膀胱阴道瘘修补术后护理查房
- 工程伦理第2章工程中的风险、安全与责任
评论
0/150
提交评论