《电子技术应用》
您所在的位置:首页 > 嵌入式技术 > 设计应用 > CF卡在大容量数据采集中的应用
CF卡在大容量数据采集中的应用
王三武 张红涛
摘要: CF卡和单片机接口的各种模式,比较了各种模式的利弊。给出了2种常用模式下的完整电路原理图,简要说明了IDE模式下存取工作的原理,阐述了映射存储模式下CF卡的存取原理。
Abstract:
Key words :

  摘  要: CF卡单片机接口的各种模式,比较了各种模式的利弊。给出了2种常用模式下的完整电路原理图,简要说明了IDE模式下存取工作的原理,阐述了映射存储模式下CF卡的存取原理。
  关键词: CF卡  单片机  接口模式  读写扇区  大容量数据采集

   在单片机工业应用的许多场合需要存储器来存储大量的数据(如数据采集),而且要求断电时能够保存数据。但一些单片机的Flash Memory芯片容量有限,在大数据量的场合使用难以满足要求。而扩展传统的存储器RAM在断电时又不能保存数据,虽然EPROM等存储器断电时可保存数据,往往因为存储空间小、寻址能力不足、价格过高等诸多问题而受到使用限制。相比较而言,CF(CompactFlash)卡存储容量大(容量可以达到512MB)、携带方便、读写速度快、可与多种电脑操作系统平台兼容且可多次读写。此外,CF卡能与单片机接口,灵活性强,故是一种理想的存储器。
1 CF卡简介
  CF卡广泛应用在数码相机、掌上电脑、MP3等设备中,采用间距50mil 的50针脚双列封装,其电气特性符合ATA规范。通过专用的读卡器,可以将CF卡的50针脚转化为USB接口而能够被PC机读出。CF卡和单片机接口能够用来存储大容量的数据,笔者即用CF卡来存储摄像头采集来的水表图像信息。
  CF卡的结构是在一个纸板火柴盒大小的卡空间上包含了一个单片控制器和闪存模块,集成了控制装置、Flash Memory阵列和读写缓冲区,可以提供相当可观的存储容量和标准的电气接口协议,控制器和主机接口允许闪存模块的数据被读写。
2  CF卡的硬件接口模式
  由于CF卡有一个内置的控制器,因此对CF卡内部数据的存取和对ATA硬盘的存取很相似,而与大多数通过线性地址来存取数据的RAM、ROM和其他闪存却不一样。CF卡和主机的接口灵活,且有多种接口模式。每一种硬件接口模式都有自己的执行设置,引脚的定义也略有差异。CF卡和主机接口一般有以下几种模式。
2.1 真正的IDE模式(True IDE Mode)
  将CF卡连接器的-OE引脚接地,即可实现IDE模式。在IDE模式下,单片机对CF卡的存取如同单片机操作等容量的硬盘一样。这种模式常用于不要求CF卡的可移动性或者是一旦主机系统上电,CF卡被专有使用的情况。CF卡转化成IDE模式的典型电路如图1所示。

 


  通过图1所示的电路可以将CF卡的50个引脚转化成44个引脚的IDE接口,1~40个引脚即可组成标准的IDE接口。转化后的IDE接口和单片机相连使操作CF卡就像操作硬盘一样,引脚CE1、CE2用作片选信号,引脚HD0~HD7用作数据线,IORD、IOWR和单片机读写引脚相连,通过主机发出读写信号来读写CF卡,IORDY作为输入/输出准备好信号,IOCS16用来决定是16位数据存取还是8位数据存取。如果此IDE接口和PC机的IDE接口相连,则能在Windows操作系统中显示一个盘符。如果写入的格式是标准文件格式FAT32,则写入到CF卡的文件能在Windows操作系统中读出来。
2.2 映射存储模式
  在映射存储模式(Memory Mapped Mode)下,CF卡被配置为主存储空间的一个地址范围,CF卡为缺省工作模式。该模式能够通过配置选项寄存器(偏移地址为$200)来设置。
2.3 映射I/O模式
  通过配置选项寄存器(偏移地址为$200)来设置CF卡到映射I/O模式(I/O Mapped Mode)。该模式能和PC-AT(ISA)信号兼容,并通过引脚-SPKR、-IORD、-IOWR、-IREQ、-IOCS16、-INPACK和-STSCHNG来达到这一目的。映射I/O模式允许设计者将闪存地址空间合并到Intel处理器的存储空间,使得CF卡似乎有明确的输入/输出地址线。
2.4 由PCMCIA控制装置控制的PCMCIA卡模式
  这种模式完全独立于主机设计,CF卡能够通过一个PC卡接口芯片控制器(如PD6710 PC,Intel 365卡主机适配器)被主机系统存取。PCMCIA是一种很好的工业标准,能够支持除ATA闪存卡以外的其他存储卡。此外,考虑到该模式下主机上电工作时CF卡的可移动性是很重要时,这种模式的优势更明显。
3 典型接口电路及工作原理
  对于与单片机接口而言,IDE模式和映射存储模式是2种应用最多的模式,而映射I/O模式和PCMCIA卡模式主要用于和PC机接口,不是本文所讨论的范围,故在此不详述。下面以映射存储模式下的典型接口电路为例来说明单片机存取CF卡的工作原理。CF卡的典型电路如图2所示。

 


  CF卡的主要功能引脚有:数据线D0~D15(用于数据的读写),地址线A0~A9,片选及数据选择CS1、CS0,读写控制端ATA SEL、WE,寄存器选择REG,卡读写忙判断INTRQ、RESET等。CF可以工作于16位数据总线方式也可以工作于8位总线方式。在读写速度的要求不是很严格的情况下,为了便于和8位MCU接口,一般选择8位数据总线工作方式。若选择8位工作方式,CS1应接固定高电平,而CS0低电平有效。CF卡在Memory工作方式下,仅地址线A0~A3起作用,用于选择读写端口,其余地址线可以接固定电平。REG用于选择是对CF卡发送命令、状态读写还是读写CF卡的属性寄存器。REG=1时为读写命令。在Memory方式下,对CF的控制和数据读写均是通过对这几个端口的读写来实现的。INTRQ用于判断CF卡是否处于读写忙状态,可以在对CF卡进行读写之前利用此引脚来判断CF卡是否空闲。在数据读写量较小的情况下,使用一定的延时即可。
  图2中:CF卡工作于Memory方式,8位数据总线,单片机按标准的P2、P0口复用方式与CF卡接口。CS0~CS1、REG分别接单片机的P2.6、P2.5、P2.7,端口选择A3~A0接收经373锁存的低4位地址,CF卡的读写引脚分别与单片机的读写信号相接。若把闲置地址引脚接固定电平,则系统分配给CF卡的端口地址为[B000]~[B007]。INTRQ(即BSY/RDY)脚接到单片机的P1.7。
  CF卡读写以扇区为单位,每扇区为512字节,每次可读写1个或多个连续的扇区。设计时使用逻辑块寻址方式(Logical Block Addressing,LBA)访问CF卡数据。读写操作时首先指定读写的扇区数和LBA地址,然后往命令寄存器发出读命令(20H)或写命令(30H),等待CF卡就绪后即可通过数据寄存器连续读写数据。使用LBA模式来存取CF卡的子程序如下:
  

  

  本文给出了CF卡和单片机接口的方法,通过这些方法能够实现大容量的数据采集和存储,存储到CF卡中的数据能长期保存,携带方便。实践证明,CF卡是一种理想的大容量数据存储卡,具有广泛的应用前景。
参考文献
1   CompactFlash Association.CF+ and CompactFlash Specification Revision 2.0.1998~2003
2   苏广川,沈瑛.高级微型计算机系统及接口技术.北京:北京理工大学出版社,2001
3   程拥强,郭凤龙,朱劲.单片机对CF存储卡文件读写的实现.计算机应用,2003;(9)
4   吴产乐.微机系统与接口技术.武汉:华中科技大学出版社,2002
 

此内容为AET网站原创,未经授权禁止转载。