摘要:本文介绍了CF卡和单片机接口的各种模式,比较了各种模式的利弊。给出了2种常用模式下的电路原理图,简要说明了IDE模式下存取工作的原理,阐述了映射存储模式下CF卡的存取原理。 
关键词: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卡进行数据恢复。

参考文献
[1]CompactFlash Association.CF+and CompactFlash Speci—fication Revision 2.0.1998—2003
[2]宋群生 宋亚琼 硬盘扇区读写技术-修复硬盘与恢复文件 北京:机械工业出版社  2004.4
[3]杜峰,周涛,施春荣.CF卡大容量数据存储系统,雷达与对抗,2004.1;
[4]程拥强,郭凤龙,朱劲.单片机对CF卡文件读写的实现,计算机应用,2003.9;

AT89S52与CF卡的接口设计相关推荐

  1. Xscale PXA255处理器与CF卡的接口设计

    Xscale PXA255处理器与CF卡的接口设计 以导航设备存储系统应用为例,本文讨论了Intel Xscale PXA255嵌入式处理器与CF卡的硬件接口设计,并以读写CF卡扇区的程序为例,给出了 ...

  2. PXA270处理器PCMCIA/CF接口设计及WinCE 5.0驱动实现 ----eetchina.com

    PXA270处理器PCMCIA/CF接口设计及WinCE 5.0驱动实现 ----eetchina.com 2008年09月19日 星期五 21:20 本文以Intel PXA270开发平台Mains ...

  3. ZigBee On Windows Mobile—利用CF卡接口外扩

    目前,Windows Mobile设备的体积越来越小巧,带串口的设备工业用的比较多,而民用的较少.带CF卡接口的Windows Mobile设备还是有的,但是也在逐渐退出市场的舞台,取而代之的是更加小 ...

  4. A7600C USIM卡接口设计

    A7600C支持1.8V和3.0V 的USIM卡.USIM卡的接口电源由模块内部的电压稳压器提供,正常电压值为3V或者1.8V. 1.8V 模式时 USIM 接口电气参数(USIM_VDD=1.8V) ...

  5. 在CF卡上实现TrueFFS

    CF卡是一种基于Flash技术的容量大.携带方便的存储介质,已在嵌入式系统等领域得到广泛的应用:但是,有限的擦写次数极大地限制了CF卡的使用寿命.TrueFFS通过一系列算法,能够延长CF卡的使用寿命 ...

  6. linux卸载cf卡命令,嵌入式Linux 中CF卡的驱动和管理技术研究

    在嵌入式Linux系统中,为了在没有PCMCIA控制器的情况下仍然要利用CompactFlash存储卡(简称CF卡)作为存储设备,作者从CF卡的硬件特性入手,在系统层基于CF卡的memory寻址访问方 ...

  7. cf卡格式化后还能数据恢复么?相机cf卡误删怎么恢复

    cf卡格式化后还能数据恢复么?即使它自身有着比较大的优势,但是在日常使用过程中,还是会遇到数据丢失的问题,比如说在操作时,不小心误删除,意外格式化,或者中病毒等等.那么对于误格式化的情况来说,如果没有 ...

  8. 未备份cf卡数据删除了怎么办?有这3个恢复方法

    对于cf卡相信大家都不陌生,它被广泛用于相机,摄像机等电子设备中,然而,随着它的不断普及,可能会因为不同原因导致cf数据丢失,比如因病毒感染.误格式化导致删除,如果cf卡上的数据没有备份却删除了怎么办 ...

  9. 04【Verilog实战】SPI协议底层硬件接口设计(附源码RTL/TB)

    脚  本:makefile 工  具:vcs 和 verdi 写在前面 这个专栏的内容记录的是个人学习过程,博文中贴出来的代码是调试前的代码,方便bug重现. 调试后的程序提供下载,[下载地址] 发现 ...

最新文章

  1. mysql 主被切换_mysql 主从切换
  2. 移植uboot第十步:制作uboot补丁
  3. 《Spark与Hadoop大数据分析》——1.2 大数据科学以及Hadoop和Spark在其中承担的角色...
  4. Python实训day10am【Python中的地址引用、os模块】
  5. flutter --- 使用dio包
  6. 视频播放器for android
  7. python在另一个函数中使用其他函数的变量_在另一个函数中访问函数的变量,如function() . var in python...
  8. 一文搞懂物联网Modbus通讯协议
  9. linux 访问centos共享,CentOS访问Windows共享
  10. java怎么引入矢量图标库,阿里巴巴矢量图标库Iconfont的使用方法
  11. Bzoj 3654 图样图森波 题解
  12. python鸭制作类代码_python之类的多态(鸭子类型 )、封装和内置函数property
  13. 教师节快乐,全网最全编程学习网站汇总来了,还不赶快收藏
  14. win7配置TomCat环境
  15. USB协议详解第20讲(USB包-帧首包SOF)
  16. 关于Linux内核学习(经典)
  17. 自燃的特斯拉,渐失“民心”的电动车
  18. Linux--指令(六) cp
  19. 搞了一天存储过程,现在又说历史数据不用处理了。。。
  20. 计算机实验室教师岗位职责,实验室实验教师岗位职责

热门文章

  1. 我们热爱的国足(真是这样的啊)
  2. [转]ARM9 2410移植之Nand flash 驱动的编写与移植
  3. 倍福--控制器添加路由
  4. Unity中通过mask组件裁剪出圆形图片,制作出圆形头像
  5. linux usb 黑 白 名单_安卓手机如何一键提升手机性能?用黑阈
  6. 遗传算法在计算机视觉上的应用,基于LTS Hausdorff距离与遗传算法的图像配准方法...
  7. JSP页面请求响应过程中的编码解码
  8. 大数据流式计算:关键技术及系统实例
  9. android 剪切大图,Android大图裁剪解决办法
  10. 医用显示器在数字影像系统中的作用和选配