保存桌面快捷方式 - - 设为首页 - 手机版
凹丫丫旗下网站:四字成语大全 - 故事大全 - 范文大全
您现在的位置: 范文大全 >> 理工论文 >> 电子通信论文 >> 正文

单片机实现对CF卡的读写



4 软件实现

按照FAT16方式存储文件,是一个通用的解决方案。因为这样可以得到现有的DOS和Windows系统的支持,但是代价是浪费一部分空间,也就是说存储效率下降了。为了改善这一情况,采用了改进的存储方法。就是先创建一个空文件,并根据需要为其分配一个大的存储空间,写入动作只是从尾部追加数据。这样就避免了很多小文件的产生,既可以充分利用存储空间,又可以使地址连续。

CF卡的读写是通过卡内的缓冲区进行的,不支持直接读写存储区域。缓冲区为一个FIFO结构,读写顺序进行,不支持随机存取,系统只能一次性地按顺序读完或写完所有一个或多个扇区。

设计时使用LBA方式访问CF卡比较方便,读写时只需要先在相应的寄存器写入LBA地址即可。要设定LBA方式,需访问驱动器/磁头寄存器。内存模式下部分寄存器译码如表3所列。

表3 内存模式下部分寄存器译码

REG A10 A9~A4 A3~A0 offset OE=0 WE=0 1 0 X 0000 0 偶字节读 侧字节写 1 0 X 0001 1 错误寄存器 特性寄存器 1 0 X 0010 2 扇区数 扇区数 1 0 X 0011 3 扇区号(LBA7~0) 扇区号(LBA7~0) 1 0 X 0100 4 低柱面号(LBA15~8) 低柱面号(LBA15~8) 1 0 X 0101 5 高柱面号(LBA23~16 高柱面号(LBA23~16) 1 0 X 0110 6 驱动器/磁头(LBA27~24) 驱动器/磁头(LBA27~24) 1 0 X 0111 7 状态寄存器 命令寄存器

驱动器/磁头寄存器结构如下:

1 LBA 1 DRV HS3 HS2 HS1 HS0

LBA—1为LBA方式,0为C/H/S(柱面/磁头/扇区)方式;DRV—选择驱动器0或驱动器1;HS3~HS0—LBA27~24,或为C/H/S方式的磁头号。

文件创建过程也就是针对FAT和FDT的读写过程。首先在FDT中申请表项,创建文件名称、属性、起始簇号、文件大小等,然后修改FAT,分配数据空间,备份FAT。文件存储就是要先从FDT和FAT中获得文件的起始簇号和簇号链,即LBA地址。然后,将此地址送给寄存器3、4、5、6(表3中的offset3、4、5、6),向扇区数寄存器填写读写数据所占的扇区个数,再向CF卡的命令寄存器写入操作的命令字,写操作30H,读操作20H。当写入命令或写入数据后要查询状态寄存器的状态,以判定CF卡是否准备就绪或写入成功。状态寄存器结构如下:

BUSY RDY DWF DSC DRQ CORR 0 ERR

各位的值为1时含义如下:

BUSY—CF卡记,此时不能接受其它命令;

RDY—卡可以接受命令;

DWF—写错误;

DSC—卡准备就绪;

DRQ—CF卡请求数据传送;

COR

《单片机实现对CF卡的读写(第3页)》
本文链接地址:http://www.oyaya.net/fanwen/view/165315.html

★温馨提示:你可以返回到 电子通信论文 也可以利用本站页顶的站内搜索功能查找你想要的文章。