CF卡在手机测试系统中的应用
Command=????; //读/写扇区命令,读为0X20,写为0x30
Delay(1); //延时1ms
//写操作为:
for(i=1;i<=512;i++){
DataPort=mem[0xE800+i]; //写512字节
}
NextSector(); //为写下一个扇区作准备读操作为:
for(i=1;i<=512;i++){
mem[0xE800+i]=DataPort; //读512字节
}
NextSector(); //为读下一个扇区作准备
2.2.2 缓冲区的操作
由于CF卡必须以扇区(512字节)为基本单位来进行读写操作,因此,系统需要扩展一片6116作为写缓冲区(地址口为0xE800开始)。系统在平时将收到的测试数据暂存于写缓冲区中。当接收到的数据累计超过一个扇区之后,再传送至CE卡。在实际系统中,开辟了1K的缓冲区,通过一个标志位low和缓冲区指针count来联合确定传送数据的范围。
①low=0,count=0。
②low=0,count<=512、开始写缓冲区的有512字节,每写入一个字节,缓冲区指针自动加1。
③low=1,count>=512、当缓冲区指针大于512,表示前512字节已被填满,此时将low置为1,开将缓冲区前512个字节的内容送入CF卡,标志位由0变为1。
④low=1,count<=512。当缓冲区指针指到1024时,缓冲区指针清0,重新开始计数。此时将后512字节的内容送入CF卡,标志位由1变为0。
⑤low=0,count<=512。下一次循环过程开始。
由于向CF卡写入数据的同时,手机端仍然有数据输出。为了防止在写CF卡的过程中出现数据丢失现象,单片机手同端的通信采用串行口中断方式。程序如下:
void single() interrupt 4 using 2//串行口中断服务子程序,中断号为4
{
if(RI= =1){
《CF卡在手机测试系统中的应用(第3页)》