《电子技术应用》
您所在的位置:首页 > 嵌入式技术 > 设计应用 > 基于单片机的Microdrive接口设计
基于单片机的Microdrive接口设计
赵 巍
广州暨南大学电子工程系(510632)
摘要: 介绍了IBM的Microdrive的基本结构和工作原理,详细说明了Microdrive接口设计的软硬件关键技术。同时以AT89C52型单片机为基础,设计完成了Microdrive的接口电路,实现了对Microdriver的数据访问及管理功能。
关键词: PowerPC Microdrive AT89C52
Abstract:
Key words :

摘 要: 介绍了IBM的Microdrive的基本结构和工作原理,详细说明了Microdrive接口设计的软硬件关键技术。同时以AT89C52型单片机为基础,设计完成了Microdrive的接口电路,实现了对Microdriver的数据访问及管理功能。
关键词: Microdrive  AT89C52

  随着科学技术的不断发展,存储技术正向着大容量、低功耗、小型化的方向发展。尤其是近年来,各种大容量的小型存储器不断涌现,在便携式设备中得到了广泛的应用。目前常见的存储卡类型有:Smart Media Card、MemoryStick、MultiMedia Card、CompactFlash Type I Card、IBM 的Microdrive等,各存储卡在容量、功耗、体积上各有特色,但IBM的Microdrive尤为出色。
  Microdrive 是由IBM日本分公司研发生产的产品。它的接口符合CFA(CompactFlash Association)协会所制定的CF+TypeⅡ规范,具有容量大(170MB~3GB)、体积小(42.8 mm×36.4mm×5.0mm)、耗电量小等特点,已在数码相机、笔记本电脑、掌上电脑、便携式音乐播放器等设备的存储领域中得到了较广泛的应用。可以预见,在各种智能设备小型化的趋势中,在大容量便携式数据存储和传输的过程中,Microdrive 有着非常广泛的应用前景,将会为各种便携式产品带来高容量、高品质且价格合理的数据存储能力。
  虽然目前市面上已有多家国内外公司(其中有IBM公司)生产出操作Microdrive的接口,但其价格居高不下,这对于需要将此类便携式大容量存储器直接嵌入到其便携设备的厂商来说,将会大大提高产品的成本。为降低生产厂商的成本,实现对Microdrive的数据访问和管理功能。本文给出了一种基于单片机的Microdrive接口设计。
1  Microdrive简介
   Microdrive性能参数如下:
      容量:1 000MB/512MB/340MB;缓冲区大小:128B;扇区大小:512B;盘片数量:1;平均寻道时间:12ms;平均等待时间:8.33ms;最大内部数据传输速率:59.9MBps;最大外部数据传输速率:13.3MBps;接口:CF+(兼容ATA和PCMCIA);数据密度:15.2GB/英寸;大小:5mm×43mm×35mm;重量:17g;磁盘旋转速度:3 600rpm。
  Microdrive的主要特点:
  体积小,总量轻,容量大;可靠性高,有效的数据保护及数据编码技术,使得其出错率极低;读写速度快,连续读写速率最高可达到4.2MBps,抗冲击(1 500g),耐振动(5g);兼容性好,支持3.3V或5V工作电压,具有广阔的使用范围。
2  Microdrive硬件接口设计
2.1 Microdrive接口简介及访问模式的选择
  Microdrive接口符合CF+TypeⅡ标准,支持3.3V或5V直流工作电压,提供了完整的PCMCIA-ATA功能且通过ATA/ATAPI-4兼容TrueIDE。但与68针接口的PCMCIA卡不同的是,Microdrive接口只有50针,采用50脚双列0.05英寸间距标准接口。其管脚排列如表1所示。

  Microdrive的数据都是以512B的扇区单元进行操作,能够通过IDE和Memory等模式对其进行访问。
虽然IDE模式被广泛地应用在计算机硬盘接口,但也经常被应用于内嵌式的系统中,得到绝大多数的BIOS和工业单板机的支持。然而,IDE模式需要涉及到复杂的文件管理,使得控制操作相对复杂,不符合简单可行的设计要求。
  由于本系统由单片机实现嵌入式设计,且Memory模式是Microdrive的默认模式,该模式可以避免繁琐的寄存器设置,同时支持8位的数据带宽,控制操作也相对简单,可以极大地简化设计和节省系统的资源,故本系统采用Memory模式。
2.2 硬件接口
  系统的电路连接框图如图1所示,主要包含以下5个部分。

  (1)AT89C52。AT89C52拥有比8051多1倍的数据存储器(256 B的RAM),有8KB的内部ROM,操作命令以及各引脚都与8051基本一致。在本系统中,AT89C52的作用是至关重要的,它担负着与外部的通信及实现对Microdrive的各种操作。
  (2)外部数据存储器。该存储器主要用作硬盘数据读写的缓存,因而必须具有非易失性、简便的操作及合适的容量。62HC64容量为8K×8位,具有非易失性及功耗低等特点。
  (3)通信电平转换芯片。RS-232C是目前异步串行通信中应用最广泛的标准总线,适用于数据中断设备(DTE)和数据通信设备(DCE)之间的接口,而单片机使用TTL电平,二者互不兼容,因而使用了MAX-232电平转换芯片对它们之间的通信电平进行转换,作为对外的通信接口。
  (4)CF+适配口。使用了标准的50针CF+适配口。
  (5)地址锁存器74LS373和地址译码器74LS138。
  系统的主要连线(见图1和表1)叙述如下。
  其中:Address/Data(0~7)为复用的8位数据或低8位地址总线。Address(8~12)为用于寻址62HC64的高5位地址线,Address(13~15)接至74LS138,用作外部数据存储器62HC64及Microdrive的片选信号; RESET信号则和AT89C52的RESET脚连接,以达到同步复位的目的。上电复位后,Microdrive自动进入默认的Memory模式;-REG (Register)信号用于选择访问,判断是Microdrive的Attiribute Memory(低电平)还是Common Memory(高电平);对于-CE1和-CE2(Card Enable),因为只有1块Microdrive,故将-CE2接高电平,-CE1接74LS138的Y7脚;-OE、-WE为读写有效信号,与AT89C52的P3.7(-RD)和P3.6(-WR)相连;RDY/-BSY(Ready/Busy)是Microdrive的闲忙状态信号,当Microdrive忙时,该脚为低电平,不能对Microdrive做任何的操作,若与AT89C52的P3.2相连,可通过软件检测此位,判定Microdrive的闲忙状态;WAIT信号的有效意味着一个操作进程正在完成过程中,把它与P1.7相连,以便检测;CD1、CD2(Card Detect)用于Microdrive的存在检测,与AT89C52的P3.2、P3.3相连;AT89C52的P3.0(RXD)用作串行通信输入,若接MAX232的12脚(R1OUT),则用于接收通过MAX232送来的数据;AT89C52的P3.1(TXD)用作串行通信输出,接MAX232的11脚(T1IN),通过MAX232送出数据。
3  软件设计
3.1 主要寄存器简介
  Microdrive内的几个涉及到操作的寄存器如表2所示。

  以下介绍如表3所示的状态寄存器其中几个状态标志位,这些标志位在读写等操作中极为重要。

  bit 7(BUSY):当Microdrive处于忙状态时(如正在读写寄存器或存储扇区),则置该位为1。
  bit 6(RDY):当Microdrive准备好,可以执行各种操作时,置该位为1。
  bit 3(DRQ):当Microdrive需要将数据读出或写入数据存储器时,置该位为1。
  bit 0(ERR):当在执行各种操作过程中出现错误时,置该位为1。
3.2 软件设计
  硬件设计好后,就可以通过软件来驱动接口电路,去读写Microdrive。首先进行测试以确定所有的端口及信号极性的正确性。由于Memory模式是缺省的模式,故使用前的检测很简单,主要把软件分成以下部分进行检测。
  (1)检测Microdrive。首先,确定Microdrive是否已正确插入插槽。这需要检测Card Detect引脚,即将P3.2、P3.3的状态读入,如果2个都为0,就表示Microdrive已正确插入适配口;否则表明未正确插入,需要重新插入。其次,在确定Microdrive已正确插入后,开始检测其状态。从Common Memory的偏移地址为007H的状态寄存器中读取Microdrive的状态信号,如果Microdrive被正确地复位,则读得的数据应该是50H,这意味着Microdrive已能使用并准备接收命令;否则有错误,应重新复位。最后,当Microdrive的状态证实无误并处于Memory模式时,就可以发送诊断命令字(Execute Diagnostics:90H)到命令寄存器(偏移地址为007H)中,这一命令将会根据Microdrive的当前情况重置状态寄存器007H(与命令寄存器的地址相同)。当出错时,出错位将会被置1,此时会检查错误状态寄存器(偏移地址为001H)而且将会得到详尽的出错信息;若无错误,则对Microdrive进行操作。
  (2)数据的读取。首先将要操作的扇区地址写入偏移地址为003H~006H的逻辑块寻址寄存器;然后再将要操作的扇区数目写入偏移地址为002H的扇区数目寄存器;接着发送读命令字(20H)到命令寄存器。当写入命令后,Microdrive会将BUSY状态置1作为响应。然后Microdrive从存储扇区中读出数据放入数据寄存器,并将DRQ状态位置1,清BUSY以表示数据已准备好。这样只需要检查DRQ状态就可以了。当DRQ为1时,便可从Microdrive的数据寄存器中读出数据,所有数据读完后,DRQ将会被清0,Microdrive重新回到准备状态执行下一次操作。
  (3)数据的写入。与读数据的操作类似,首先将数据准备在数据缓存区(外部RAM62HC64);然后将要操作的扇区地址写入偏移地址为003H~006H的逻辑块寻址寄存器,并将要操作的扇区数目写入偏移地址为002H的扇区数目寄存器;接着发送写命令字(30H)到命令寄存器;最后,检测DRQ的状态(此时Microdrive置BUSY状态为1,接着置DRQ为1,清BUSY)。当检测到DRQ为1时,便可将数据缓存区(外部RAM62HC64)中的数据写入Microdrive的数据寄存器(偏移地址为000H)。当Microdrive检测到数据写入其数据寄存器后,就会置BUSY为1,清DRQ并根据地址将数据寄存器中的数据写入存储扇区。一旦数据全部写完,再清BUSY状态位,重新回到准备状态准备执行下一次操作。
  可见,在读写操作中,对进程起控制作用的关键就是DRQ这一状态位,其检测程序如下:
  void wait_drq(void)
  {  unsigned int a;
     a=XBYTE[0xE007];    //读取状态寄存器的值
     if((a&0x01)= =1)  error( ); //若出错位为1,转出错处理
     while((a&0xf8)!=0x58)
        a=XBYTE[0xE007];    //查询DRQ位,不为1则循环等待
  }
  (4)数据的擦除。首先将要操作的扇区地址写入偏移地址为003H~006H的逻辑块寻址寄存器;然后再将要操作的扇区数目写入偏移地址为002H的扇区数目寄存器;接着发送擦除命令字(0C0H)到命令寄存器。执行完擦除命令后,读出的值全为0。
3.3 单片机软件设计流程
  单片机软件设计的主要流程如图2所示。

  本文所介绍的基于单片机的Microdrive接口设计,成功实现了操作Microdrive的常用命令,正确实现了对Microdrive的8位格式的操作。经测试,此接口也可以对CF Type I卡(如SanDisk公司的CompactFlash卡)进行正确的操作,从而提高了应用系统的兼容性。该接口电路具有较广泛的应用价值,可应用于各种需要使用Microdrive或CompactFlash卡作为存储器的便携式电子设备中,目前正准备将其应用于便携式的动态脑电及动态心电仪器中。
参考文献
1   CompactFlash Association.CF+ and CompactFlash Specification Revision 1.4.1999
2   International Business Machines Corporation.Using the IBM Microdrive For the First Time.2001
3   International Business Machines Corporation.Need More Storage Embed an IBM 170MB or 340MB Microdrive.2001
 

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