2、CF卡的物理和硬件接口特性 CF卡可以工作在PC卡ATA I/O模式、PC卡ATA存储模式和实IDE模式三种模式下,实IDE模式与IDE接口完全歉。CF卡遵从ATA协议,属于块存储设备,存储单元是通过磁头(head)、柱面(cylinder,也称磁道)和扇区(sector)组织起来的;在物理寻址(CHS)方式下,每一组H/C/S参数唯一确定存储卡中的一个扇区,通常一个扇区拥有512字节的数据空间。一个驱动数格式化后的容量为磁头数%26;#215;柱面数%26;#215;扇区数%26;#215;512字节。在物理寻址模式下,扇区(S)是最低的地址单位,其次是磁头(H),最后的柱面(C)为最高寻址单位。此外,还有逻辑寻址方式(LBA)。在这种寻址方式下,CF卡按照以连续序列的逻辑扇区编号进行寻址,主机不必知道CF卡的物理几何结构。使用28个数据位来表示逻辑扇区的地址,可以寻址2 28个扇区,理论上可以寻址136GB的容量。下面给出物理寻址方式与逻辑寻址方式的对应关系。设NS为每磁道扇区数,NH为磁头数,C、H、S分别表示磁盘的柱面、磁头和扇区编号,LBA表示逻辑扇区号,div为整除计算,mod为求余计算,则:LBA=NH%26;#215;NS%26;#215; C+NC%26;#215;H+S-1;C=(LBA div NS)div NH;H=(LBA div NS)mod NH;S=(LBA mod NS)+1。 CF卡为50针接口。其中重要的信号线16根数据线、11根地址线(在TureIDE模式下仅用3根地址线)、2根寄存器组选择信号线(CS0、 CS1)、数据的读写线(IORD、IOWR)、1根中断信号请求线(INTRQ和1根复位线(RESET)。
5、TI公司DSP汇编程序实例 考虑到TI公司的DSP各系列芯片汇编指令的兼容性例于跨平台移植和汇编语言代码的高效性,下面给出基于连接框图将CF卡中一扇区数据(512字节)读到 TMS320LF2407片内RAM中汇编程序。READ_A_SECT: W_CF_RDY: ;检测CF卡是否空闲 LDP #0h IN CF_IN,CFCOM_STAT ;读状态寄存器 LALC CF_IN AND #00FFh XOR #0050h BZ END_WAIT_RDY B W_CF_RDY END_WAIT_RDY: SPLK #0000h,CF_OUT OUT CF_OUT,CFERR_FEA ;写特片寄存器 SPLK #0001h,CF_OUT OUT CF_OUT,CFSET_COU ;写扇区数寄存器 SAR AR3,CF_OUT OUT CF_OUT,CFSEC_NO ;写扇区号寄存器 SAR AR4,CF_OUT OUT CF_OUT,CFCYL_LOW ;写柱面号寄存器(低字节) SAR AR5,CF_OUT OUT CF_OUT,CFCYL_HIG ;写柱面号寄存器(高字节) SAR AR6,CF_OUT OUT CF_OUT,CF_CDH ;写驱动器选择/磁头寄存器 SPLK #0020h,CF_OUT OUT CF_OUT,CFCOM_STAT ;写命令寄存器 W_CF_DRQ:;检测CF卡是否有数据请求 IN CF_IN,CFCOM_STAT LACL CF_IN AND #00FFh XOR #0058h BZ END_WAIT_DRQ B W_CF_DRQ END_WAIT_DRQ: LAR AR2,#0FFh ;作256次循环读取一扇区数据(512字节) MAR *,AR1 INLOOP:IN *+,CFDATA,AR2 ;循环读取数据寄存器 BANZ INLOOP,*-,AR1 RET 程序说明:CFDATA为数据寄存器端口地址;CFCOM_STAT为状态/命令寄存器端口地址;CFERR_FEA为特征寄存器端口地址;CFSEC_COU为扇区数寄存器端口地址;CFSEC_NO为扇区号寄存器端口地址;CFCYL_LOW为柱面号寄存器(低字节)端口地址;CFCYL_HIG为柱面号寄存器(高字节)端口地址;AR1、AR3~AR6辅助寄存器为程序入口参数,其中AR1为RAM数据缓冲区的起始地址;AR3~AR6为CF卡各寄存器待赋的值;CF_IN和CF_OUT为变量。程序中没超时处理,在循环读取数据的过程中,最好禁用时间较长的中断。这是因为CF卡在15ms内没有接收到命令就会进入休眠(sleep),因此不论是读还是写扇区,在命令出后15ms内应将数据取出或填充上,否则会出错。