您现在的位置: 范文先生网 >> 理工论文 >> 电子通信论文 >> 正文

CF卡在手机测试系统中的应用

时间:2007-1-20栏目:电子通信论文

C52、由于单片机的P0口和P2口采用了引脚复用,所以需要一片地址锁存,地址锁存器选用的是74HC373、CF卡的一次读写操作必须是512字节,而89C52只有256字节的内部RAM,需要在外部扩展一片缓冲器,缓冲器选用的是6116、由于系统是由手机电池统一供电,手机电池输出电压为+3.6V,而上述芯片的正常工作电压为+5V,因此,需要升压芯片作为电源模块,选用的是MAX756。

2.2 软件实现

2.2.1 CF卡的读写操作

CF卡采取的是类似硬盘的分块存储方式,分为柱面Cylinder、头Head和扇区Sector管理。对96MB的CF卡而言,共有733个柱面,每个柱面8个头,每个头32个扇区,每个扇区512字节(8位)。CF卡的读写是以一个扇区为基本单位的,在读写一个扇区之前先送出当前需要读写的柱面、头和扇区,然后发送读写命令,一个扇区的512字节需要一次性连续写入或者读出。下面给出对CF卡进行读和写C51程序段:

#define DataPort XBYTE[0xB800]

#define Feature XBYTE[0xB801]

#define SecCount XBYTE[0xB802]

#define SecNo XBYTE[0xB803]

#define CylLow XBYTE[0xB804]

#define CylHigh XBYTE[0xB805]

#define CardHead XBYTE[0xB806]

#define Command XBYTE[0xB807] //定义CF卡端口

void NextSector(){ //读写下一个扇区

sector++;

if(sector= =32){//一个头的扇区是否全部读写完毕

sector=0;

head++;

if(head= =16){//一个柱面的所有头是否全部读写完毕

head=0;

cylinder++;

if(cylinder= =733){//所有柱面是否全部读写完毕

cylinder--;

DiskFull=1;{//标志位置1,表示CF卡容易已满读写过程结束

}CF卡在手机测试系统中的应用

}

}

}

CardHead=0xA0+head; //置当前头

SecCount=0x01; /*一次读写一个扇区

SecNo=sector; //置当前扇区

CylLow=cylinder%255; //置柱面高位

CylHigh=cylinder/255; //置柱面低位

Command=????; //读/写扇区命令,读为0X20,写为0x30

Delay(1); //延时1ms

上一页  [1] [2] [3] [4] 下一页

下页更精彩:1 2 3 4 下一页