更新时间: 2023-11-01
在自身设计上,CF卡注重软硬件两方面的配合。软硬件的协同设计可以实现CF卡热插拔、即插即用的功能。
一是硬件提供判断条件。CF卡硬件电路提供了两个用来检测CF卡是否存在的引脚(nCD1和nCD2)。nCD1和nCD2的有效电平均为低电平,当主机检测到与其相连的nCD1和nCD2引脚同时为低电平时,可判断出CF卡与主机相连;当主机检测到与其相连的nCD1和nCD2两个引脚不同时为低电平,则可判断出CF卡未与主机相连。
二是软件。首先定义全局变量(如:Cf_IsInsert),用于记录CF卡是否与主机相连:当Cf_IsInsert为0时表示CF卡未与主机相连;当Cf_IsInsert为1时表示CF卡与主机相连。然后,在每次操作CF卡之前都先检测CF卡的nCD1和nCD2引脚。当检测到nCD1和nCD2引脚同时为低电平(有卡插入)且Cf_IsInsert为0时,复位CF卡,重新检测CF卡的FAT表,统计还有多少剩余空间可以分配。检测完毕后,置变量Cf_IsInsert为1,然后设置MECR寄存器CIT比特位。当检测到nCD1和nCD2引脚同时为低电平,且Cf_IsInsert为1时,设置MECR寄存器CIT比特位,继续CF卡的正常操作。当检测到nCD1和nCD2引脚为高时(无卡插入),停止CF卡操作,清除MECR寄存器CIT比特位,置变量Cf_IsInsert为0。
读/写CF卡扇区程序的编写方法
CF卡的读写是以一个扇区为基本单位的。在读写一个扇区之前必须先指明当前需要读写的柱面、头和扇区或LBA地址,然后发送读写命令。一个扇区的512字节需要一次性连续读出或者写入。主机读/写CF卡上一个文件的过程是这样的:
1.CF卡初始化。CF卡上电复位和统计剩余空间的大小。
2.CF卡内部控制器向CF卡某些寄存器填写必要的信息。如向扇区号寄存器填写读写数据的起始扇区号或LBA地址、向扇区数寄存器填写读写数据所占的扇区个数、设置CF卡的扇区寻址方式等。
3.向CF卡的命令寄存器写入操作CF卡的命令。如写操作向CF卡的命令寄存器写入30H,读操作向CF卡的命令寄存器写入20H。
4.CF卡有数据传输请求之后,主机读写CF卡的数据寄存器,从而实现从CF卡数据缓冲读出数据或向CF卡数据缓冲写入数据。
5.在执行以上操作的过程中,每执行一步,都应该检测状态寄存
器,确定CF卡的当前状态,从而确定下一步应该执行什么操作(参考状态寄存器的BIT位的意义,编写检测代码)。
上一篇:7410195452C
下一篇:1394AM07