AT89S52单片机和FAT16文件的SD卡读写设计

最新更新时间:2014-01-16来源: 电源网关键字:AT89S52  单片机  FAT16 手机看文章 扫描二维码
随时随地手机看文章

引 言

长期以来,闪存卡(SD卡、MMC卡等)因其体积小、功耗低、容量大和非易失性等特点,在嵌入式存储领域的应用越来越广泛。特别是近年来,随着闪存技术的发展,闪存卡价格不断下降且存储容量不断提高。当数据采集系统需要长时间地采集和记录海量数据时,应用SD卡作为存储介质是很好的选择,例如电能检测、温度湿度检测、病人心肺数据记录等。FAT16文件系统是。Microsoft公司在其MS-DOS 操作系统中采用的文件系统,具有出色的文件管理性能,能被当前大多数操作系统识别。因此,将SD卡与FAT16文件系统相结合是嵌入式数据存储、记录系统的理想方案,可以将采集记录的数据直接在PC上读取和处理。本文研究和设计了基于AT89S52单片机和FAT16文件系统的SD卡读写系统。

1 系统方案介绍

本系统采用MCS-51架构的AT89S52单片机。AT89S52是一种低成本、低功耗、高性能的CMOS 8位微控制器,具有8 KB在系统可编程Flash存储器。应用AT89S52读写SD卡,首先要确定它们之间的通信方案。SD卡有2种可选的通信协议:SD模式和SPI模式。 SD模式是SD卡的标准读写方式,选用此模式需要选择带SD卡控制接口的MCU或者额外的SD卡控制单元;SPI模式通过SPI总线完成SD卡与主控制器的通信。AT89S52没有集成SD卡控制器,为了不增加额外的SD卡控制单元硬件成本,本设计方案采用SD卡的SPI通信模式。虽然AT89S52也没有集成SPI接口模块,但可以用软件的方式模拟SPI接口时序。

另外一个要解决的问题是SD卡与AT89S52的电平匹配。SD卡的逻辑电平相当于3.3 V的TTL电平标准,AT89S52的逻辑电平为5 V CMOS电平。

解决电平匹配问题的原则有2条:一为输出电平器件输出的高电平的最小值,应该大于接收电平器件识别为高电平的最低电压值;另一条为输出电平器件输出低电平的最大电压值,应该小于接收电平器件识别为低电平的最高电压值。

考虑到SsD卡在SPI工作模式下,数据的传输都是单向的,这样可以在单片机向SD卡传输数据时采用晶体管加下拉电阻的方法,基本电路如图1所示。而在 SD卡向单片机传输数据时可以采用直接连接,因为它们之间的电平刚好满足上述的电平兼容原则,既经济又实用。这个方案需要双电源供电,1个5 V电源,1个3.3 V电源。

2 AT89S52与SD卡接口电路设计

2.1 SD卡接口规范

SD卡工作在2.7~3.6 V电压下,图2是普通SD卡的结构示意图和引脚排列图,表1列出了各引脚在SPI模式下的定义和功能描述。主机与SD卡之间通过指令来实现交互。

2.2 接口电路设计

AT89S52内有256字节的RAM,由于SD卡数据的读出与写入是以块为单位的,而每块为512字节,所以需要在单片机的最小系统上扩展1片RAM。本系统选用的RAM芯片为HM62256,容量32KB。系统硬件电路如图3所示。

3 软件设计

3.1 FAT16文件系统

FAT16文件系统的存储结构如图4所示。

主引导记录区(Main BootRecord,MBR)位于物理磁盘第零扇区。MBR中有硬盘分区记录表(Disk Partition Table,DPT),DPT记录了各逻辑分区的相对偏移。SD卡不支持多分区,在1个SD卡中只有1个分区,因此在SD卡上的DPT只有1个分区表项被占用。系统引导记录区(DOS Boot Record,DBR)位于磁盘逻辑分区的第0扇区,是操作系统可以访问的第1个扇区,它其中包含1个称为BPB(Bios Parameter Block)的本分区参数记录表。BPB记录着本分区的根目录大小、FAT、个数、磁盘介质描述、分配单元大小等重要参数。

DBR之后是FAT(File Allocation Table,文件分配记录表),记录文件在磁盘上的存储位置。在Windows系统中,文件存储的单位是簇而不是字节,1个文件不是连续地存放于磁盘的某一区域,而往往分成若干段,像链子一样存放。FAT表记录了每个文件的起始簇号、后继簇号和终止簇号。FAT表中的每个表项对应数据存储区中的1个簇,由于FAT表对文件管理的重要性,FAT表有1个备份。

DIR是根目录区,紧接着第2个FAT表(FAT2)之后,记录着根目录下每个文件的起始簇号、大小等属性。操作系统根据DIR中文件的起始簇号和大小,结合FAT表来定位文件。FAT16文件系统中1个文件的存储示意图如图5所示。

3.2 SD卡指令规范

单片机通过相应指令与SD卡进行交互。SD卡有特定的指令格式,都是6字节长,最高有效位(MSB)传输优先,如图6所示。

SD卡指令的最高2位“01”是SD卡指令的开始标志,最后1位“1”是结束标志。6位的指令是SD卡的指令序号,例如CMD17的6位指令即17的二进制表示010001。指令参数占4字节,具体内容参照SD卡规范。7位CRC校检的生成多项式为G(x)=x7+x3+1。事实上SD卡在进入SPI模式后,不再通过CRC码来确认指令的传输正确与否,指令中的7为CRC校检,只在SD模式下起作用。因此仅SD卡上电后的第1条切换SPI模式指令CMd0 需要校检码,而此校检码是固定的0x95,其他指令的CRC均置1即可。SD卡响应有4种格式,不同指令对应不同响应,具体内容可参看SD卡规范。

3.3 SD卡读写驱动

3.3.1 SPI时序模拟

用软件来模拟SPI总线的具体方法是:将SCK的初始状态置0,允许接收后(即CS置0)将SCK置1,这样单片机由DI线输出1位数据到SD卡;接着再将SCK置0,单片机由DO线从SD卡读1位数据。至此,模拟1位数据输入输出完成。此后再将SCK置1,依次循环8次,完成SPI总线1字节数据的输入输出。

以下是本系统软件模拟SPI时序的汇编代码。以通用寄存器A作为函数参数,实现将寄存器A中的数据通过SPI总线发送出去,并将从SPI总线读到的数据存到寄存器A中。

3.3.2 SD卡的初始化

SD卡的初始化流程如图7所示。SD卡上电延时74个时钟周期后,单片机向SD卡发送复位命令CMDO,使SD卡进入SPI模式。之后循环发送激活SD卡指令CMD1,直到接收到SD卡响应的第0位为0。

3.3.3 SD卡数据块的读写

完成SD卡的初始化后,就可以对SD卡进行读写操作。读写操作都是通过指令来完成的:单块写命令CMD24,多块写命令CMD25;单块读命令 CMD17,多块读命令CMD18。单块读写时,数据块的长度为512字节,多块读写时SD卡收到1个停止命令CMD12后停止读写。图8、图9分别是单块读、写SD卡的软件流程。

3.4 FAT16文件读写

按照FAT16文件系统的文件组织规范,编写读文件函数和写文件函数。FAT16文件读写的软件流程如图10所示。

结 语

通过串口将本系统连接到PC进行测试,结果表明本系统完成了对FAT16文件系统下文件的读写。当采用11.059 2 MHz晶振时,读写速度和质量都令人满意。本系统采用51架构的AT89S52单片机,实现了基于FAT16文件系统的读写SD卡设计,整套系统成本较低,在嵌入式数据记录和存储中有广泛应用前景。

关键字:AT89S52  单片机  FAT16 编辑:探路者 引用地址:AT89S52单片机和FAT16文件的SD卡读写设计

上一篇:AT90S2343低功耗单片机的串行接口智能转换器
下一篇:DIY遥控手柄程序入驻单片机需要几步

推荐阅读最新更新时间:2023-10-12 22:34

单片机通过串口中断与电脑连接技术
  本实验实现串口中断实验,通过中断和计算机进行通信   首先接受联机信号,然后接受计算机的相关控制信号   本实验中,采用发送不同的字符给计算机来模拟接收到的不同的计算机控制命令   通过扩展,可以实现不同的功能   * *   *   * *   *****************************************************************/   #include   #define uchar unsigned char   uchar time,b_break,b_break_3;   uchar buf;   vo
[单片机]
基于51单片机的太阳能环境参数测试仪设计
  引 言   为了确保太阳能发电系统能够正常的工作,需要对太阳能发电系统的各项环境参数进行测量,从而有效地控制其运行。本文介绍了一种基于单片机的太阳能参数测试仪,提供了3种参数的测量功能和通信接口,以及2种供电方式,既可作为手持设备使用,又能安装在发电系统中,具有较高的实用价值。 1 硬件电路设计 1.1 总体结构   该测试仪以AT89S52单片机为核心,外接温湿度传感器SHTll、照度传感器TSL2561、四位共阴数码管、RS485总线通信接口以及显示切换按键。单片机上电工作后,对当前温度、湿度、光强度进行实时测量,通过按键切换将测得的3种参数通过LED数码管进行轮流显示;此外,还可以通过RS485总
[单片机]
基于51<font color='red'>单片机</font>的太阳能环境参数测试仪设计
AVR单片机中未用的I/O口设置
如果有引脚未被使用,建议给这些引脚赋予一个确定电平。虽然在深层休眠模式下大多数数字输入被禁用,但还是需要避免因引脚没有确定的电平而造成悬空引脚在其它数字输入使能模式( 复位、工作模式、空闲模式) 消耗电流。 最简单的保证未用引脚具有确定电平的方法是使能内部上拉电阻。但要注意的是复位时 上拉电阻将被禁用。如果复位时的功耗也有严格要求则建议使用外部上拉或下拉电阻。不推荐直接将未用引脚与VCC 或GND 连接,因为这样可能会在引脚偶然作为输出时出现冲击电流。
[单片机]
PIC单片机精通_串口通信模块C实现
1.串口通讯头/定义文件 usart.h #ifndef _SERIAL_H_ #define _SERIAL_H_ #define BAUD 9600 #define FOSC 9216000L #define NINE 0 /* Use 9bit communication? FALSE=8bit */ #define DIVIDER ((int)(FOSC/(16UL * BAUD) -1)) #define HIGH_SPEED 1 #if NINE == 1 #define NINE_BITS 0x40 #else #define NINE_BITS 0 #endif #if HIG
[单片机]
单片机---HLK-W801驱动触摸屏
背景介绍 最近在学习lvgl,这是个开源的嵌入式图像显示框架,足够支撑一些资源匮乏的单片机,来显示一些看起来比较专业的界面,例如下面这种 还有这种 是不是很酷 放下Lvgl姑且不表。因为是用户操作的界面,现在的大部分屏幕都可以配备触摸操作,不再需要额外的键盘鼠标,所以,今天就来学习一下配置我手中这块支持触摸的屏幕。 电阻屏 不像我们的手机,嵌入式设备大部分配备的是电阻屏,因为精准度高,并且廉价。 最常见的就是我这种4线电阻屏。就是4根线,X+,X-,Y+,Y-。 原理如下: 四线主要是由镀有ITO镀层的两层薄膜所组成。其中的一层在屏幕的左右边缘,各有一条垂直的总线,另外一层是在屏幕的顶部和底部都各有一条水平的总
[单片机]
<font color='red'>单片机</font>---HLK-W801驱动触摸屏
MSP430单片机热敏电阻温度测量系统设计
MSP430单片机计数法测温原理 以NE555定时器为核心组成典型的多谐振荡器,把被测热敏电阻Rt 作为定时元件之一接入电路中,NE555定时器输出引脚接MSP430单片机的P1.2脚(Timer_A:捕获、CCIlA输入引脚)。系统电路如图所示。 由上述测量原理可知,误差主要来源为:R1、R2精度,单片机的定时器和电容器的精度以及稳定度。这里选用高精度(士O.001%)、温度系数小于土O.3×10-6/℃的精密金属箔电阻器。因此当选用高精度、高稳定度的电容器,且单片机的工作频率足够高,就可以得到较好的测温精度。 由测量原理知:被测电阻的阻值越大,测量误差越小。笔者已应用该方法设计出一款温度计,测量范围为一10~
[单片机]
MSP430<font color='red'>单片机</font>热敏电阻温度测量系统设计
大厂纷推智能车 车用MCU等IC发展潜力十足
五年内,物联网终端装置数量将破百亿个,但半导体研调机构IC Insights最新预测指出,今年全球IC市场成长7%,又以车用IC独领风骚,因各大厂纷推出智能车,推升车用电子成长上看20%。 车用电子将成今年IC市场主要成长引擎,工研院产经中心(IEK)计画副组长杨瑞临指出,物联网应用市场种类众多,具高成长潜力,但仍不见 杀手级 应用。他说,台湾推动物联网脚步落后邻近韩国、新加坡,不过,物联网发展是 学不来的 ,必须因地制宜,衣服才能穿得合身。 杨瑞临归纳出台湾三大最具潜力的物联网应用领域:一是智慧制造,结合物联网、机器人与工具机自动化等,让科技制造再上一层楼;其次为零售业和医疗照护,是
[汽车电子]
51单片机CPU的基本构成及作用
单片机是什么,是在一个集成硅片中集成了一些部件,构成了一个微型的计算机系统的东西,这些只是对单片机的基础概念是简单了解,会用单片机C语言的编程来实现一些简单的ALU的操作,但是这些还是远远不够的,我们还需要了解单片机的运行机制,工作原理。 这一期来了解一些关于单片机的其他重要知识,51单片机的CPU是多少位,CPU的主要作用是什么,51单片机它的基本构成是由哪些部件或者哪些东西来构成的。 51单片机它的CPU位数是多少位? 51单片机是8位的CPU,表示数据处理一次能够处理的数据的位宽是8个比特位,也就是一个字节,这个叫做它的位数,51单片机除了具备八位的CPU之外,实际上它有两个,它还有一个位处理器,一个字节处理器,所以
[单片机]
51<font color='red'>单片机</font>CPU的基本构成及作用
小广播
最新电源管理文章
换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved