用户登录  |  用户注册
首 页商业源码原创产品编程论坛
当前位置:PB创新网文章中心解决方案电子通信

基于单片机的MicroDrive接口设计

减小字体 增大字体 作者:佚名  来源:本站整理  发布时间:2009-01-10 22:52:41
平,两者互不兼容。因而使用了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主要寄存器

偏移地址名  称说  明
000HDATA REG数据寄存器
001HERROR REG出错状态寄存器
002HSECTOR COUNT REG扇区数目寄存器
003HLBA 0~7逻辑块寻址地址0~7位
004HLBA 8~15逻辑块寻址地址8~15位
005HLBA 16~23逻辑块寻址地址16~23位
006HLBA 24~27逻辑块寻址地址24~27位
007HSTATUS REG读取时为状态寄存器
007HCOMMAND 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的逻辑块寻址寄

上一页  [1] [2] [3]  下一页

Tags:

作者:佚名

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
PB创新网ourmis.com】Copyright © 2000-2009 . All Rights Reserved .
页面执行时间:24,515.63000 毫秒
Email:ourmis@126.com QQ:2322888 蜀ICP备05006790号