单片机实现对CF卡的读写
[09-12 17:52:36] 来源:http://www.88dzw.com 单片机学习 阅读:8102次
文章摘要:簇是存储文件的最小单位,可以包含多个扇区。当文件本身或文件的最后一簇哪怕只有1个字节,也要占去1簇。这样,当这种文件很多时,空间的浪费是很可观的。文件目录表FDT(File Directory Table)是操作系统寻找文件的入口,其内容是每一个文件的目录。FDT中的每一个目录项由32个字节组成。前8个字节是文件名,不足时用空格填满。紧跟着的3个字节是文件扩展名,接下来是10个字节的系统保留字。然后是文件产生的时刻和日期占8个字节,再后的2个字节是文件首簇号,最后4个字节是文件大小。FDT的起始扇区可由FAT的大小计算出,而FAT的大小可在DBR中读出。4 软件实现按照FAT16方式存储文件,
单片机实现对CF卡的读写,标签:单片机开发,单片机原理,单片机教程,http://www.88dzw.com簇是存储文件的最小单位,可以包含多个扇区。当文件本身或文件的最后一簇哪怕只有1个字节,也要占去1簇。这样,当这种文件很多时,空间的浪费是很可观的。
文件目录表FDT(File Directory Table)是操作系统寻找文件的入口,其内容是每一个文件的目录。FDT中的每一个目录项由32个字节组成。前8个字节是文件名,不足时用空格填满。紧跟着的3个字节是文件扩展名,接下来是10个字节的系统保留字。然后是文件产生的时刻和日期占8个字节,再后的2个字节是文件首簇号,最后4个字节是文件大小。FDT的起始扇区可由FAT的大小计算出,而FAT的大小可在DBR中读出。
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 | 状态寄存器 | 命令寄存器 |
Tag:单片机学习,单片机开发,单片机原理,单片机教程,单片机学习
《单片机实现对CF卡的读写》相关文章
- › 用AT89C2051单片机实验合弦乐
- › 用单片机实现高频信号的数据采集
- › 单片机实现嵌入式因特网终端的设计
- › 用单片机实现温度远程显示
- › MSP430单片机实现时钟显示
- › PIC单片机实现交通灯控制系统
- 在百度中搜索相关文章:单片机实现对CF卡的读写
- 在谷歌中搜索相关文章:单片机实现对CF卡的读写
- 在soso中搜索相关文章:单片机实现对CF卡的读写
- 在搜狗中搜索相关文章:单片机实现对CF卡的读写
分类导航
最新更新