基于单片机的MicroDrive接口设计
2007-03-09
摘要:介绍了IBM的MicroDrive的基本结构和工作原理,详细说明了MicroDrive接口设计的关键技术;以AT89C52型单片机为基础,设计完成了MicroDrive的接口电路,正确实现了对MicroDriver的读写及数据管理等功能。
关键词:MicroDrive 单片机
近几年,各种大容量的小型存储器不断涌现,在便携式设备中获得了广泛的应用。目前常见的存储卡类型有:1Smart Media Card2MemoryStick3MultiMedia Card4CompactFlash Type I Card5IBM的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_drqvoid
unsigned int a
a=XBYTE0xE007
//读取状态寄存器的值
ifa&0x01==1 error
//若出错位为1转出错处理
whilea&0xf8=0x58
a=XBYTE0xE007
//查询DRQ位不为1则循环等待
(4)数据的擦除
为达到此目的,首先将要操作的扇区地址写入偏移地址为003H~006H的逻辑块寻址寄存器中,再将要操作的扇区数目写入偏移地址为002H的扇区数目寄存器中,接着发送擦除命令字(0C0H)到命令寄存器当中,执行完擦除命令后,读出的值全为0。
本文介绍的基于单片机的MicroDrive接口设计,成功地实现了操作MicroDrive的常用命令和对MicroDrive的8位格式的操作。经过测试,此接口也可以对CF Type I卡(如SanDisk公司的CompactFlash卡)进行正确操作,从而提高了应用系统的兼容性,具有较广泛的应用价值,目前已准备在便携式的动态脑电、动态心电上使用,同时可用于MicroDrive或CompactFlash卡作为存储器使用的便携式电子设备中。
进入单片机查看更多内容>>
相关电子头条文章