单片机实现对CF卡的读写
[09-12 17:52:36] 来源:http://www.88dzw.com 单片机学习 阅读:8102次
文章摘要:驱动器/磁头寄存器结构如下:1LBA1DRVHS3HS2HS1HS0LBA—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卡的命令寄存器
单片机实现对CF卡的读写,标签:单片机开发,单片机原理,单片机教程,http://www.88dzw.com驱动器/磁头寄存器结构如下:
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卡请求数据传送;
CORR—数据错误但被修正,不会终止多扇区读操作;
ERR—在上一命令以某种错误结束,可以在错误寄存器中查看错误类型。
下面以向CF卡写一个扇区数据为例,给出图4所示流程和C程序代码。
bit flag_1,flag_2;
void cfwr()
{
unsigned char status;
cfwr_comm(0xe0,0x00,0x00,0x6c);
//写参数命令,指向逻辑6c扇区
do{status=PBYTE[0x07]; //读状态寄存器
if((status & 0x01)==0x01)
flag_1=1; //若ERR=1,置出错标志,做相应处理
while(status!=0x58);
cfwr_dat(); //写入数据
do{status=PBYTE[0x07]; //读状态寄存器
if((status & 0x20)==0x20)
flag_2=1; //若DWF=1时,置出错标志,做相应处理
while(status!=0x50);
}
void cfwr_comm(unsigned char lba27,lba23,la15,lba7) //写参数命令函数
{PBYTE[0x02] 扇区数为1
PBYTE[0x03]=lba7;
《单片机实现对CF卡的读写》相关文章
- › 用AT89C2051单片机实验合弦乐
- › 用单片机实现高频信号的数据采集
- › 单片机实现嵌入式因特网终端的设计
- › 用单片机实现温度远程显示
- › MSP430单片机实现时钟显示
- › PIC单片机实现交通灯控制系统
- 在百度中搜索相关文章:单片机实现对CF卡的读写
- 在谷歌中搜索相关文章:单片机实现对CF卡的读写
- 在soso中搜索相关文章:单片机实现对CF卡的读写
- 在搜狗中搜索相关文章:单片机实现对CF卡的读写