单片机
返回首页

基于单片机的MicroDrive接口设计

2007-03-09

摘要:介绍了IBM的MicroDrive的基本结构和工作原理,详细说明了MicroDrive接口设计的关键技术;以AT89C52型单片机为基础,设计完成了MicroDrive的接口电路,正确实现了对MicroDriver的读写及数据管理等功能。 关键词:MicroDrive 单片机 近几年,各种大容量的小型存储器不断涌现,在便携式设备中获得了广泛的应用。目前常见的存储卡类型有:1Smart Media Card2MemoryStick3MultiMedia Card4CompactFlash Type I Card5IBM的MicroDrive等。各存储卡在容量、功耗、体积上各有特色,但IBM的MicroDrive尤为出色。 MicroDrive是由IBM日本分公司研发生产出来的产品,其接口符合CFA(CompactFlash Association)协会制定的CF+ Type II 规范,具有容量大(170MB~3GB)、体积小(42.8mm%26;#215;36.4mm%26;#215;5.0mm)、性价比高、耗电量小等特点,已在数码相机、笔记本电脑、掌上电脑、便携式音乐播放器等设备的存储中获得了较广泛的应用。 目前市面上已有多家国内外公司生产出操作MicroDrive的接口(如IBM公司),但其价格较高。为降低成本,实现对MicroDrive的数据访问和管理功能,本文给出了一种基于单片机的MicroDrive接口设计。 1 MicroDrive介绍 MicroDrive各性能参数如下: %26;#183;容量(MB):1000/512/340; %26;#183;缓冲区大小:128字节; %26;#183;扇区大小(字节):512; %26;#183;盘片数量:1; %26;#183;平均寻道时间:12ms; %26;#183;平均等待时间:8.33ms; %26;#183;最大内部数据传输速率:59.9MB/s; %26;#183;最大外部数据传输速率:13.3MB/s; 接口:CF+兼容ATA和PCMCIA 数据密度GB/平方英寸:15.2; 大小:5mm%26;#215;43mm%26;#215;35mm; 重量:17克; 磁盘旋转速度:3600RPM。 主要特点有: %26;#183;体积小、重量轻、容量大; %26;#183;可靠性高,有效的数据保护及数据编码技术,使得其出错率极低; %26;#183;读写速度快,连续读写速率最高可达4.2MB/s,抗冲击(1500G),耐震动(5G); %26;#183;兼容性好,支持3.3V或5V工作电压,具有广阔的使用范围。 2 MicroDrive硬件接口设计 2.1 MicroDrive接口简介及访问模式的选择 MicroDrive的接口符合CF+ Type II标准,支持3.3V或5V直流工作电压,提供了完整的PCMCIA-ATA功能且通过ATA/ATAPI-4兼容TrueIDE。但与68针接口的PCMCIA卡不同的是,同样遵从ATA协议的MicroDrive 接口只有50针,采用50脚双列0.05英寸间距标准接口(管脚排列如表1所示)。 表1 MicroDrive管脚排列 管脚号 名 称 管脚号 名 称 管脚号 名 称 Pin1 GND Pin18 A02 Pin35 IOWR Pin2 D03 Pin19 A01 Pin36 WE Pin3 D04 Pin20 A00 Pin37 RDY/BSY Pin4 D05 Pin21 D00 Pin38 VCC Pin5 D06 Pin22 D01 Pin39 CSEL Pin6 D07 Pin23 D02 Pin40 VS2 Pin7 CE1 Pin24 WP Pin41 RESET Pin8 A10 Pin25 CD2 Pin42 WAIT Pin9 OE Pin26 CD1 Pin43 INPACK Pin10 A09 Pin27 D11 Pin44 REG Pin11 A08 Pin28 D12 Pin45 BVD2 Pin12 A07 Pin29 D13 Pin46 BVD1 Pin13 VCC Pin30 D14 Pin47 D08 Pin14 A06 Pin31 D15 Pin48 D09 Pin15 A05 Pin32 CE2 Pin49 D10 Pin16 A03 Pin33 VS1 Pin50 GND Pin17 A04 Pin34 IORD     对MicroDrive,数据都是以512字节的扇区单元进行操作,能够通过IDE、Memory等模式对其进行访问。 虽然IDE模式被广泛应用于计算机硬盘的接口中,同时也被经常应用于嵌入式系统中,得到绝大多数的BIOS和工业单板机的支持;但是IDE模式涉及复杂的文件管理,使得控制操作相对复杂,不符合简单可行的设计要求。 本系统由单片机实现嵌入式设计。而Memory模式是MicroDrive的默认模式,可以避免繁琐的寄存器设置,同时支持8位数据带宽,控制操作相对简单,可以极大地简化设计,节省系统的资源。故本系统采用Memory模式。 2.2 硬件接口 本系统电路连接框图如图1所示,主要包含以下五部分: (1)AT89C52 AT89C52拥有比8051多一倍的数据存储器(256字节的RAM),拥有8K字节内部只读存储器(ROM),操作命令以及各引脚与8051基本一致。在本系统中,AT89C52的作用至关重要,它担负着与外部的通信及实现对MicroDrive的各种操作。 (2)外部数据存储器 外部数据存储器主要用作硬盘数据读写的缓存,因而必须具有非易失性、简便的操作及合适的容量。62HC64容量为8KB具有非易失性、功耗低等特点。 (3)通信电平转换芯片 RS232C是目前异步串行通信中应用最广泛的标准总线,适用于数据中断设备(DTE)和数据通信设备(DCE)之间的接口;而单片机使用TTL电平,两者互不兼容。因而使用了MAX232电平转换芯片对它们的通信电平进行转换,作为对外的通信接口。 (4)CF+适配口 使用了标准50针CF+适配口。 (5)地址锁存器74LS373和地址译码器74LS138 其中Address/Data(0~7)为复用的8位数据或低8位地址总线,Address(8~12)为用于寻址62HC64的高5位地址线,Address(13~15)接至74HC138,用作外部数据存储器62HC64及MicroDrive 的片选信号;Reset(RESET)信号与AT89C52的RESET脚连接,以达到同步复位的目的,上电复位后,MicroDrive自动进入默认的Memory 模式;REG Register信号用于选择访问MicroDrive的Attiribute Memory(低电平)或Common Memory(高电平);对于CE1与CE2(Card Enable),因为只有一块MicroDrive,故将CE2接高电平,CE1接74LS138的Y7脚;OE、为读写有效信号,与AT89C52的P3.7(RD)、P3.6(WR)相连;RDY/BSY(Ready/Busy)MicroDrive 的闲忙状态信号,当MicroDrive忙时,该脚为低电平,不能对MicroDrive做任何操作,与AT89C52的P3.2相连,以便可通过软件检测此位,判定MicroDrive的闲忙状态;WAIT(Wait)信号的有效意味着一个操作进程正在完成过程中,把它与P1.7相连,以便检测;CD1、CD2(Card Detect)用于MicroDrive的存在检测,与AT89C52的P3.2、P3.3相连;AT89C52的P3.0(RXD)用作串行通信输入,接MAX232的12脚(R1OUT),用于接收通过MAX232送来的数据,P3.1(TXD)用作串行通信输出,接MAX232的11脚(T1IN),通过MAX232送出数据。 3 软件设计 3.1 主要寄存器简介 MicroDrive内几个涉及到的操作寄存器,如表2所示。 表2 MicroDrive主要寄存器 偏移地址 名 称 说 明 000H DATA REG 数据寄存器 001H ERROR REG 出错状态寄存器 002H SECTOR COUNT REG 扇区数目寄存器 003H LBA 0~7 逻辑块寻址地址0~7位 004H LBA 8~15 逻辑块寻址地址8~15位 005H LBA 16~23 逻辑块寻址地址16~23位 006H LBA 24~27 逻辑块寻址地址24~27位 007H STATUS REG 读取时为状态寄存器 007H COMMAND REG 写入时为命令寄存器 3.2 软件设计简述 硬件设计好后,可以通过软件驱动接口电路读写MicroDrive。软件流程如图2所示。首先进行测试以确定所有端口及信号的极性正确。由于Memory模式是缺省模式,其使用前的检测就变得相当简单。主要把软件分成以下几部分: (1)检测MicroDrive 首先,确定MicroDrive是否已正确插入插槽。这需要检测Card Detect引脚,即将P3.2、P3.3的状态读入。如果两个都为0,就表示MicroDrive已正确插入适配口;否则表明未正确插入,需要重新插入。 其次,在确定MicroDrive已正确插入后,开始检测其状态。从Common Memory的偏移地址为007H的状态寄存器中读取MicroDrive的状态信号,如果MicroDrive被正确Reset了,读到的数据应该是50H,意味着MicroDrive已能使用并准备接收命令;否则证明有错误,应重新Reset。 最后,当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)到命令寄存器中。 图2 单片机软件流程图 然后,检测DRQ的状态(此时MicroDrive置BUSY状态为1,接着置DRQ为1,清BUSY)。当检测到DRQ为1时,便可将数据缓存区(外部RAM62HC64)中的数据写入MicroDrive的缓存单元。当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。 本文介绍的基于单片机的MicroDrive接口设计,成功地实现了操作MicroDrive的常用命令和对MicroDrive的8位格式的操作。经过测试,此接口也可以对CF Type I卡(如SanDisk公司的CompactFlash卡)进行正确操作,从而提高了应用系统的兼容性,具有较广泛的应用价值,目前已准备在便携式的动态脑电、动态心电上使用,同时可用于MicroDrive或CompactFlash卡作为存储器使用的便携式电子设备中。
进入单片机查看更多内容>>
相关视频
  • RISC-V嵌入式系统开发

  • SOC系统级芯片设计实验

  • 云龙51单片机实训视频教程(王云,字幕版)

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

精选电路图
  • 简洁的过零调功器电路设计与分析

  • 单稳态控制电路设计与分析

  • 光控电路设计与分析

  • IGBT模块通过控制门极阻断过电流

  • 运算放大器IC741的基本工作原理及在电路中的实现方式

  • 基于TDA1554的立体声放大器电路

    相关电子头条文章