AT89S52单片机与CF卡的接口电路设计

发布者:DelightfulGaze最新更新时间:2023-08-01 来源: elecfans关键字:AT89S52  单片机  CF卡  接口电路 手机看文章 扫描二维码
随时随地手机看文章

1 前言
随着计算机应用技术的飞速发展,移动存储设备得到了广泛的应用。其中CF(Compact Flash)卡以其价格低廉、体积小、存储容量大、高速等优点在众多移动存储设备中被广泛地应用于数码相机、PDA和笔记本电脑等当前十分热门的消费类电子产品中。并且CF卡在其他领域中也得到了广泛的应用。本文所述内容就是通过8051单片机对CF卡进行读写。

2.CF卡的操作方式
CF卡的操作方式与计算机的硬盘操作方式类似,其扇区的寻址也有两种方式:物理寻址(CHS)和逻辑寻址(LBA),物理寻址使用柱面、磁头和扇区号表示一个特定的扇区,起始扇区是0道、0头、1区,接下来是2区等等,逻辑寻址将整个CF卡统一寻址。逻辑块寻址和物理寻址的关系为:LBA地址=(柱面号×磁头数+磁头号)×扇区数+扇区数一1

在实际使用过程中,用LBA地址进行寻址,可以大大简化编程的工作量,避免柱面、磁头和扇区之间的换算和切换,并且可以突破CHS对大容量的无法寻址的限制。


3.CF卡的文件管理
CF卡的文件管理系统和硬盘的文件管理是一样的,他将CF卡的存储空间分为五个部分:主引导记录扇区(MBR)、DOS引导区(DBR)、文件分配表(FAT)、文件目录表(FDT)和数据。


主引导记录扇区(MBR)
主引导记录扇区(MBR)在0柱面、0磁头、1扇区。主引导记录记录磁盘最重要的结构信息。主引导记录是硬磁盘作分区时建立的(Fdisk)。主引导记录包括一小段执行代码(主引导代码)、磁盘特征和硬盘分区表。主引导记录结束的两个字节必须是引导自举标记0x55AA。磁盘特征位于0x01B8, 指定磁盘操作系统。


DOS引导区(DBR)
DOS引导区(DBR)的起始扇区在0柱面、1磁头、1扇区,磁盘的逻辑0扇区都称为DOS引导扇区,又称为BOOT区。它由以下5个部分组成:
    跳转指令,占用3个字节的跳转指令将跳至引导代码,其内容随DOS版本变化。
    厂商标识和DOS版本号。该部分总共占用8个字节,其内容随DOS版本而不同。
    BPB(BIOS Paramenter Block, BIOS参数块)。BPB从第12字节起占用19个字节。
    DOS引导程序。DOS引导程序既是占用480字节的BOOT代码,负责完成DOS的3个系统文件的装入工作。这部分内容随DOS版本不同而变化。

结束标志字,结束标志占用2个字节,其值为AA55。
BPB表中所记录的有关参数,能帮助编程者确定磁盘的容量大小、文件分配表FAT的位置和大小、文件目录表FDT的位置和大小。因此以FAT32分区格式为例讨论BPB表的结构。

偏移量为0BH、0CH记录每个扇区的字节数,0DH记录每簇扇区数。0EH、OFH记录保留扇区数,10H记录FAT表的数目,15H磁盘介质描述符,18H每个磁道的扇区数,24H每个FAT表的扇区数,2CH~2FH根目录起始号。

文件分配表(FATl)
文件分配表FAT(File Allocation Tabel)是文件管理系统用来给每个文件分配磁盘物理空间的表格,它告诉操作系统,文件存放在磁盘什么地方。文件分配表(FAT)有表标识和簇映射(旧称表目)的集合组成。一个完全相同的镜像副本连续存储在主 FAT 表后。表标识符包括磁盘介质描述符( 1 字节)和填充字节, 总计占两个簇的簇映射区域(这大概也就是 FAT 文件系统簇号由2开始的原因), 填充字节一般为 FF,FAT32 的填充字节中还包含"脏位", 即系统启动时执行磁盘检查(FAT-ChkDsk/NTFS-AutoChk)。FAT 簇映射中, 0000 表示空簇, FFFF 表示簇链结束, FFF7 表示坏簇, 其余值表示其后续簇的簇号。FAT12 和 FAT32 的存储策略同 FAT16 类似, 例如 FAT12的结束簇为 FFF, FAT32 的坏簇为 0FFFFFF7 等(注意 FAT32 的高 4 位保留)。文件分配表(FAT2)是FAT1的完全备份。

文件目录表(FDT) 在文件目录表中,每个文件占32个字节(用PC-TOOLS或DEBUB读出时占两行),各个字节的含义是这样的:0-7 字节:文件名;8-10 字节:扩展名;11 字节,表示文件属性;12-21 共10个字节为保留字段,没有使用;22-23 为建立文件的时间;24-25 为建立文件的日期;26-27 为文件占用的第一个簇号,即起始簇;28-31 共4个字节为此文件的长度。


3.AT89S52与CF卡的接口设计
CF卡有3种工作模式可供选择:I/0模式、存储器模式和IDE模式。CF卡的默认模式是存储器模式,使用也最为普遍。如果使用存储器模式则不需要配置任何寄存器。每一种模式的电路连接各不相同。在I/0模式和存储器模式下,可以采用8位的访问方式,也可以采用16位的访问方式。本文所采用的是8位的存储器模式,其接口电路原理图如图1所示。

AT89S52的P0口就为数据线连接CF的DO—D7,CF卡的A0-A10为地址线,P3.6、P3.7分别为读(RD)、写(WE)线。由于 AT89S52是8位的单片机,所以对CF卡的访问采用8位的方式较为方便。通过把-CE2设为‘1’即可通过访问CF卡的D0--D7来存取数据。而- CEl可以作为CF卡的片选信号,通过设-CEl为‘0’来选通CF卡,即-CEl接AT89S52的P2.6来线选CF卡。当REG为‘0’时,访问 CF卡的属性寄存器;REG为‘1’时,CF卡在存储器模式下对数据进行读写操作。RDY/BSY为CF卡状态引脚,当为“0”时,CF卡忙,为“1”时可以对CF卡操作。原理图如图所示:

限于篇幅只将写一个扇区代码编写(读扇区代码基本与此相同)如下:
;写一个扇区
WRITE:   MOV DPTR, #SECTR_CNT
          MOV A, #1
          MOVX @DPTR, A
          MOV DPTR, #SECTR_NO
          MOV A, SECTRNO
          MOVX @DPTR, A
          MOV DPTR, #CYLINDER_LOW
          MOV A, CYLINDERL
          MOVX @DPTR, A    
MOV DPTR, #CYLINDER_HI
          MOV A, CYLINDERH
          MOVX @DPTR, A
          MOV DPTR, #DRV_HEAD
          MOV A, DRVHEAD
          ANL A, #0FH
          ORL A, #0E0H
          MOVX @DPTR, A
          MOV DPTR, #COMMAND
          MOV A, 30H    
          MOVX @DPTR, A
WRITE512:MOV R6,#0  
          MOV R7,#2
WRITE:   MOV DPTR,#DATA_REG
        MOV A,#31H
          MOVX @DPTR,A
      DJNZ R6,WRITE
      DJNZ R7,WRITE
      RET


4.结束语
本设计的接口电路,阐述了CF卡的读写方法,并采用了通用的MCS-51系列单片机为系统控制器,可移植性好。根据此电路可应用于其他单片机对CF卡进行读写,采用CF卡作为存储介质,容量大,体积小,价格低廉,可应用于MP3播放器,数码相机,移动存储等各个领域,本试验在线路板上调试通过,并配合计算机串口对CF卡进行读写操作,并可对CF卡进行数据恢复。


关键字:AT89S52  单片机  CF卡  接口电路 引用地址:AT89S52单片机与CF卡的接口电路设计

上一篇:AT89S8252单片机实现接触式IC卡读写控制的设计
下一篇:基于51单片机驱动A4988实现步进电机逆时针转动

推荐阅读最新更新时间:2024-11-12 16:43

基于AVR单片机的有害气体红外检测及语音警示系统的设计
利用红外感应系统感应附近有无有害气体,当红外感应系统感受到有有害气体接近时,送出持续一段时间的高电平;单片机通过开启中断,启动语音芯片,单片机通过串口通信,从上位机提取的有害气体参数提示给附近人体,并经过与安全值的比较判定当前环境是否安全。对语音芯片的使用,先将必要的文字、数字信息录制进去,放音时,通过单片机自动寻址,把实时参数读取出来。为便于以后系统改进或移植到其他系统,可设计录音、放音电路,通过切换录制不同内容。系统设计友好、方便,给人的信息也更加直接。 1系统总体设计方案 在气体浓度是现有可利用的数据的基础上,考虑了系统的衔接性和可移植性。系统总体方案见图1。 本系统分为四大模块:核心控制模块、语音电路模块、红外感应模块以
[单片机]
基于AVR<font color='red'>单片机</font>的有害气体红外检测及语音警示系统的设计
单片机C语言软件开发系统Keil C51的使用教程
KEIL C51标准C编译器为8051微控制器的软件开发提供了C语言环境,但是界面是英文的好多初学者看很多教程都是一头雾水,本站特地制作了一个相对简单的教程。他能能嵌入汇编语言保留了汇编代码高效,快速的特点。KEIL C51编译器的功能不断增强,使你可以更加贴近CPU本身,及其它的衍生产品,其效率已经达到了相当搞的程度。C51已被完全集成到uVision2的集成开发环境中,这个集成开发环境包含:编译器,汇编器,实时操作系统,项目管理器,调试器。uVision2 IDE可为它们提供单一而灵活的开发环境。 Keil C51 软件是众多单片机应用开发的优秀软件之一,它集编辑,编译,仿真于一体,支持汇编,PLM 语言和 C 语言的程序
[单片机]
<font color='red'>单片机</font>C语言软件开发系统Keil C51的使用教程
赛普拉斯PSoC、MCU及蓝牙低功耗解决方案组合日益丰富
对于智能家电到可穿戴健康跟踪装置以及工厂自动化产品等互联设备的设计人员而言,物联网具体应用中某些特殊要求的实现难度已经远超过了物联网 (IoT)互联技术的实现。嵌入式解决方案供应商赛普拉斯半导体公司 (Nasdaq: CY)凭借其基于ARM -Cortex -M的PSoC 可编程片上系统、微控制器(MCU)和蓝牙低功耗(BLE)解决方案组成的扩展产品组合,解决了物联网的多样性以及上市时间和功耗等常见设计问题。 自2015年3月与Spansion合并后,赛普拉斯PSoC 4系列已经推出了超过180个新型号,原Spansion开发的FM4和FM0+ 灵活微控制器系列也推出了超过150个新型号。在本次2016嵌入式电子与工业电脑应用展
[物联网]
Spansion 1.48亿美元完成富士通MCU和模拟业务部门收购
近日,Spansion 公司宣布已经完成对富士通半导体有限公司微控制器和模拟业务部门的收购。根据双方所达成的协议,Spansion将为此交易出资约1.1亿美元,另加约3800万美元收购库存。该收购有望增强Spansion 2013年的公司业绩。 Spansion 公司总裁兼首席执行官John Kispert 先生表示:“本次收购将创造出的新产品和业务机会,对此我们倍感兴奋。凭借闪存、微控制器、模拟业务、模拟信号及系统级芯片在内的更丰富的产品线,我们将扩大Spansion在嵌入式市场的领导地位,服务我们的客户群体,并塑造电子产品的未来。”
[单片机]
基于MSP430G2微控制器闪烁LED:使用数字读/写引脚
这是一系列教程的第二篇教程,我们正在使用Energia IDE学习德州仪器的MSP430G2 LaunchPad开发板。在上一篇 闪烁LED 教程中,我们将介绍了使用Energia IDE开发LaunchPad开发板,同时我们还上传了第一个程序,在固定的时间周期内闪烁板上的LED。 在本教程中,我们将学习如何使用数字读取和数字写入选项读取输入设备(如开关)的状态,并控制LED等多个输出。在本教程结束时,您将学会如何使用数字输入和输出,这些输入可用于连接诸如红外传感器、PIR传感器等许多数字传感器,以及点亮或熄灭LED、蜂鸣器等输出。听起来很有趣,对不对!!?让我们开始吧。 所需材料 ● MSP430G2 Launc
[单片机]
基于MSP430G2<font color='red'>微控制器</font>闪烁LED:使用数字读/写引脚
MCS-51系列单片机各种不用的类型特点介绍
MCS是Intel公司生产的单片机的系列符号,例如,Intel公司的MCS-48、MCS-51、MCS-96系列单片机。MCS-51系列单片机是Intel公司在MCS-48系列的基础上于20世纪80年代初发展起来的,是最早进入我国并在我国得到广泛应用的单片机主流品种。 MCS-51系列单片机主要包括基本型产品8031/8051/8751(对应的低功耗型80C31/80C51/87C51)和增强型产品8032/805218752。虽然它们是8位的单片机,但是具有品种全、兼容性强、性能价格比高等特点,且软硬件应用设计资料丰富齐全,已为我国广大工程技术人员所熟悉和掌握。在20世纪80年代和90年代,MCS-51系列单片机是在我国应用
[单片机]
STM8L151C8单片机学习例程(12)——Active-HALT
STM8L_12_Active-Halt: 1.User:工程及main文件 2.Hardware:RTC,CLK,LED,Delay 3.STM8L15x_StdPeriph_Driver:STM8自带库文件 4.Debug:hex文件存放于EXE文件夹 5.Function: Active-halt低功耗测试 低功耗设计时,如要功耗低,且可RTC定时唤醒采集数据,则需要使用active-halt模式,实测功耗为1.37uA,与手册基本一致。 可对比LSI和LSE的功耗,具体细节在手册当中,可自行查找。 /** ***********************************************
[单片机]
STM8L151C8<font color='red'>单片机</font>学习例程(12)——Active-HALT
简单记录一个CH340T的小问题解决方法
前几天做了块单片机的板子,用的USB供电+下载程序,片子是CH340T,驱动好找,用起来也方便。 做了板子焊上这一块也没什么问题,下载,串口通信也都正常(废话都是按照官方文档做的能不正常么) 但是也有不正常的地方,就是外围器件带的一多,就下载不了程序,冷启动的时候,串口总是会重启识别一次CH340T。 之前怀疑是电压不稳,准备加个二极管,不让后级影响前级,但是一时也没想好加到哪。 现在看到有人遇到同样问题,mark一记,下一版PCB修改一下看看。 已经测试可用!以后吸取经验都这么着。 关键点: MCU_RXD +IN4148- CH340_TXD MCU_TXD 300 CH340_RXD ch34
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved