历史上的今天
返回首页

历史上的今天

今天是:2025年02月26日(星期三)

正在发生

2018年02月26日 | 单片机与IBM-PC机硬盘驱动器适配器的接口分析

2018-02-26 来源:eefocus

  51单片机集成度高,控制、处理能力强,工作可靠稳定,已广泛应用于生产过程的自动检测、工业实时控制、机器人、通信、导航、医疗卫生和智能仪器仪表等领域。在这些应用中,特别是在工程信号的自动测试、分析中,常常需要记录、存储大量的数据,某些数据还需长期或永久保存。目前,单片机系统保存、记录数据的工具是随机存取存储器(RAM)。众所周知,RAM不能长久保存数据,51系列单片机系统的数据存储器最大只有64 KB,因此这些方法满足不了某些实际系统的要求。当前磁记录技术已非常成熟,硬盘记录、存储系统已成为计算机系统中的主流设备。它的存储容量大,存取速度高,可以永久性地保存数据,而价格却越来越低。将其应用于单片机系统,可使组成的系统性能大为提高。
  
  IBM - PC计算机支持硬盘系统,主机与硬盘之间的接口技术已经标准化,已得到广泛的应用。用IBM - PC机的硬盘系统作为51系列单片机系统的数据存储设备,接口电路结构简单,无需专门设计硬盘的驱动电路,因而构成的应用系统性能价格比非常高。

一、接口电路的设计

  IBM - PC机硬盘驱动器适配器简称硬盘控制器。它是一个智能部件,可接一个或两个硬盘,通过系统板上62脚I/O通道插槽与PC机相连。这62脚信号线在此只用了40脚,其中AO~A19为20位地址线;DO~D7是8位数据线;MEMR用于读硬盘的基本I/O程序;IOR和IOW分别为主机读、写硬盘控制器的控制信号;IRQ5、DRQ3分别为硬盘控制器的中断请求和DMA请求信号;DACK3为主机响应DMA时送给控制器的信号;另外还有一个复位硬盘控制器的RESET信号,一个DMA数据传送时禁止I/O操作的AEN信号和6根电源、地线。主机从硬盘读取数据或向硬盘写入数据均是通过向硬盘控制器提供的6个可访问的寄存器写入命令和控制字来实现的。因此,设计单片机与硬盘控制器的接口电路时,只要考虑以上信号的产生、接收,单片机数据存储器的扩展,DMA控制器的连接等问题即可。在PC机中,硬盘控制器的6个可访问的寄存器占用主机的I/O端口地址320—323H,信号的发送、接收均是通过这几个口地址寻址的。20根地址线实际只用了10根,51系列单片机有16根地址线,能满足地址译码的要求。51系列单片机不直接支持DMA数据传送方式,而硬盘控制器和数据存储器之间的数据必须采用DMA方式。在PC机中,主机对硬盘控制器的读/写操作是通过对I/0端口的读/写来实现的,而单片机系统没有I/O读/写指令,可采用存储器映射方式,将硬盘控制器的4个地址映射到外部数据存储器,这样控制器的IOR和IOW分别与单片机的WR和RD相连即可。硬盘控制器的中断请求信号IRQ5只用于硬盘操作结束信号,因此,此信号作为单片机的INT1。其他信号线的连接方式不赘述,本接口电路如图1- 91所示。

二、软件设计

  在IBM - PC机中,主机可通过调用BIOS程序实现控制器、驱动器和硬盘的诊断,数据的存入和取出,设置硬盘的参数,测试硬盘驱动器是否准备好,格式化硬盘等功能;可通过DOS中断程序灵活地进行数据文件的加工、处理;还可通过硬盘启动和引导系统,安装各种应用程序。因此它的软件结构很复杂,程序量也很大。在本例中,只是把硬盘作为大容量数据存储器,因此只需简单地格式化磁盘,读/写数据以及测试硬盘驱动器的好坏、是否准备好等功能,可通过向控制器的6个寄存器写入命令和控制字来实现。这6个寄存器的访问逻辑见表1- 25。

  数据输入/输出寄存器( DIOR)很重要,是控制器的信号主吞吐口。状态寄存器(321R)提供硬盘控制器的硬件状态,图1- 92为该寄存器每一位的作用。其他4个寄存器的功能、用途参见相关文献,在此不赘述。硬盘控制器的命令是由6字节组成的字块,称为命令块。由命令块可发布19条命令,本节只选用其中的少数几条,如读盘(READ)、写盘(WRITE)、格式化驱动器(FMTDRV)和测试驱动器是否就绪(TSTRDY)等。一条硬盘控制器命令的执行全过程可分为3个阶段:命令的发送、执行和结束。在命令的发送阶段,首先须写“选择控制器”寄存器,把硬盘控制器“启动”起来,然后再向控制器写入6字节的命令块;在命令的执行阶段,控制器根据接收到的命令内容执行各种操作;当命令执行完后,只有主机经DIOR把“完成状态”字节读走,命令执行的全过程才告结束,否则,硬盘控制器的工作状态将发生混乱。控制器提供的“完成状态”字节主要是向主机报告此次操作是否出现错误,若出现错误,主机还可读出错误的类型、出错的扇段地址等信息。

  根据以上分析,软件设计如下:
  
  (1)主监控程序
  
  此部分程序主要实现硬盘控制器的初始化、参数设定等功能。其程序框图如图1 - 93所示。
  
  (2)功能模块
  
  对于硬盘上数据的读/写,控制器采用DMA数据传送方式。当数据读/写操作完成后,控制器还发出中断请求信号,报告命令执行完毕。因此,对于读盘和写盘操作,进入功能程序后,先设置DMA控制器的参数、工作状态,初始化中断服务程序;然后写入命令块和DMA、中断使能,进入读/写操作。写盘程序流程图如图1- 94所示。

  读盘操作与写盘操作非常相似,只是数据传送方向相反。因此,程序结构基本一样,在此不再赘述。
  
  测试硬盘工作是否就绪、格式化硬盘等操作不需要传送数据,这部分程序不需要DMA参与,但硬件中断还需要。其他和写盘操作也基本相同,不再说明。
  
  本例研究的51单片机与IBM - PC硬盘驱动器的接口电路已应用于便携式智能数据分析、测试仪,性能稳定、可靠。由于数据存储到硬盘上的方式与IBM - PC机相同,因此,单片机系统可与IBM - PC机共享数据,为工程技术人员提供了极大的方便。


推荐阅读

史海拾趣

European Crystal Org公司的发展小趣事

European Crystal Org(ECO)公司诞生于欧洲一个小城市的一个旧仓库里。创始人约翰·史密斯是一位对晶体技术充满热情的电子工程师。他意识到晶体在电子领域的重要性,并决定专注于研发和生产高质量的晶体振荡器。初创时期,ECO面临着资金短缺、技术挑战和市场认可度低的困境。然而,约翰凭借对技术的执着和对市场的敏锐洞察,成功研发出了一款性能卓越的晶体振荡器,赢得了几家小型电子制造商的青睐。这些早期客户的信任为ECO奠定了坚实的市场基础。

AEL [AEL Crystals Ltd]公司的发展小趣事

随着业务的不断发展,AEL Crystals意识到全球化战略的重要性。公司开始在全球范围内寻找合适的生产基地,并在英国、日本、台湾、韩国等地区建立了生产基地网络。这一战略布局使得AEL Crystals能够更好地满足全球客户的需求,同时也降低了供应中断的风险。

ABCircuits公司的发展小趣事

随着公司的不断发展,ABCircuits意识到单打独斗难以应对日益激烈的市场竞争。于是,公司开始积极寻求与其他企业的战略合作。通过与上下游企业的紧密合作,ABCircuits不仅获得了稳定的供应链支持,还成功打开了国际市场的大门。这些合作不仅加速了公司的扩张步伐,也提升了其品牌影响力和市场竞争力。

FCI / Amphenol公司的发展小趣事

Amphenol公司成立于1932年,最初由Arthur J. Schmitt和Gordon K. Klapmeier共同创办,专注于电磁线缆的制造。然而,随着技术的进步和市场需求的变化,Amphenol公司逐渐将重心转向电缆连接器的制造。凭借高品质的产品和服务,Amphenol公司的电缆连接器在市场上获得了广泛的认可,并逐渐发展成为全球最大的电缆连接器制造商之一。

Eagle-Picher公司的发展小趣事

Eagle-Picher公司的历史可以追溯到1843年,最初是由Edgar和他的兄弟Stephen J. Conkling在俄亥俄州辛辛那提成立的,专注于生产商业涂料颜料。随着时间的推移,公司经历了多次转型和变革。1847年,Stephen离开公司后,Edgar引入了新的合伙人威廉·伍德,并更名为康克林木业公司。随后,公司在不同的业务领域内扩展,直到1922年,Eagle-Picher正式进入电池市场,开始了其电子行业的历程。

Analogix Semiconductor公司的发展小趣事

1958年,Eagle-Picher公司的电池技术得到了重大的突破。在美国宇航局的探索者1号卫星上,Eagle-Picher的电池成功发射到太空,为卫星的运行提供了稳定的电源。这一里程碑式的事件标志着Eagle-Picher的电池技术在太空探索领域的应用达到了新的高度,也为公司赢得了更多的科研和商业机会。

问答坊 | AI 解惑

电磁流量计原理

1. 概 述 电磁流量计(以下简称EMF)是利用法拉第电磁感应定律制成的一种测量导电液体体积流量的仪表。50年代初EMF实现了工业化应用,近年来世界范围EMF产量约占工业流量仪表台数的5%~6.5%。 70年代以来出现键控低频矩形波激磁方式,逐渐替代早 ...…

查看全部问答>

电流转换成电压再进行AD转换的电路,有个问题,请教模电

最近正在做一个同时电压和电流的电路 。现在有个问题。 单独测量电压和电流都没有问题,只是不能同时测量,同时测量的话,电压正常,电流就不对了。 电流测量点是在VDD端,我估计可能是共模干扰的问题,但是不知道怎么解决。 请高手指点,不胜感 ...…

查看全部问答>

4星C++经典(英文清晰PDF)

C++: The Complete Reference, 3rd Edition Product DescriptionBest-selling genius Herb Schildt covers everything from keywords, syntax, and libraries, to advanced features such as overloading, inheritance, virtual functions, name ...…

查看全部问答>

这种情况下怎样滤波效果更好?

最近用到AD698来检测位移,用示波器发现698输出的直流电压有纹波,大约10mv,几十Hz,即使使用电池供电也照样存在!想用简单的阻容滤除,但电容加大到100uF才滤掉了纹波!但此时出现了一个非常讨厌的现象:          ...…

查看全部问答>

为什么我的贴被删

不可以那样发贴吗,版主,解释下 死也要死的明白??…

查看全部问答>

诚聘硬件部经理

公司:深圳市亚特尔南京研发中心(正在筹建中) 地址:南京市鼓楼区定淮门12号世界之窗软件园15号楼北301室 TEL:025-83752651     Website:www.szartel.com 要求: 1、本科以上学历,电子信息相关专业; 2、从事ARM、DS ...…

查看全部问答>

供应VGA控制板

VGA控制板: 1. 为单片定身量做的显卡,单片机通过8/16/32位数据总线或IO口直接控制             2. 标准VGA输出接口,直接驱动15/17\"LCD和CRT显示器            ...…

查看全部问答>

CF卡的驱动

您好,我最近在做CF卡的驱动,是基于arm9(at91rm9200)平台linux操作系统的,看了一段时间书也没什么大的头绪,能否给我源代码做参考,非常感谢! 我的邮箱:jink1977@163.com…

查看全部问答>

版主,请问串口1如何使用呢?

版主,我用的是207R8,想使用串口1,如何配置寄存器,才能使它像普通单片机串口一样收发使用呢,寄存器配置太多,不知道如何使用了 使用库函数也行啊 我使用的是 stvp,外部时钟 22.1184…

查看全部问答>