<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于單片機的IDE硬盤控制的研究與設計

          基于單片機的IDE硬盤控制的研究與設計

          作者: 時間:2012-03-29 來源:網(wǎng)絡 收藏

          1.概述

          本文引用地址:http://www.ex-cimer.com/article/171744.htm

          近年來作為數(shù)據(jù)存儲介質的,其接口智能化程度越來越高,容量不斷增大,反而體積在變小,并可脫離系統(tǒng)主機,起來比較方便,已經(jīng)受到人們的普遍重視。現(xiàn)今,在許多以為核心的持續(xù)數(shù)據(jù)采集存儲應用系統(tǒng)中,數(shù)據(jù)存儲是一項關鍵技術,因此,若能將脫機高速大容量應用到此類系統(tǒng)中,則可提高讀寫速度、降低單位成本、具有很大優(yōu)勢。但是,讀寫是一個復雜的過程,它涉及到硬盤的接口方式、尋址方式、寄存器模型等。這樣以來,我們就急需找到一種方案,占用較少的資源,卻能比較方便的硬盤.本文通過8255[1]對進行I/O擴展,驅動硬盤,成功的解決了上述問題,從而使硬盤可以應用到許多智能系統(tǒng)中。

          2. 系統(tǒng)硬件結構

          50.jpg

          如圖1所示,本系統(tǒng)由單片機(W78E52)、地址鎖存器(74HC373)、8255、施密特反向器(74HC04)、硬盤驅動器組成。單片機通過8位數(shù)據(jù)總線、A0、A1、CS、WR、RD與8255相連。單片機將8255作為I/O口擴展,8255的端口A和端口B與接口的16位數(shù)據(jù)線相連;端口C產(chǎn)生IDE總線的控制信號。IDE接口的DASP腳所接的LED作為指示燈,類似PC機,當硬盤忙時,指示燈亮。

          IDE[2][5]接口是將ST506控制器集成到驅動器中,從處理器角度看,IDE接口可被描述成一系列I/O端口----一組8/16位的I/O端口,兩根片選線(CS1FX和CS3FX),讀寫控制線(RD和WR),三根地址線(DA0,DA1,DA2)和一個中斷請求(INTRQ)以及用來設置數(shù)據(jù)傳輸模式的控制線。IDE接口在硬盤的存取采用16位數(shù)據(jù)總線方式。在ATA[3]標準中,IDE接口對硬盤的輸入輸出操作均是通過對相應寄存器的讀寫來實現(xiàn)的,這些端口寄存器統(tǒng)稱為命令塊寄存器,是由片選線和地址線進行統(tǒng)一編址的,其功能如表1所示:

          51.jpg

          IDE接口的硬盤驅動器提供兩種數(shù)據(jù)傳輸模式:PIO模式和DMA模式。由于采用PIO模式控制相對容易,并且提供了一種可編程控制輸入/輸出的快速傳輸方法,所以本系統(tǒng)使用PIO模式。該模式采用高速的數(shù)據(jù)塊I/O,以扇區(qū)為單位,用中斷請求方式與CPU進行批量數(shù)據(jù)交換。通常情況下,在扇區(qū)讀寫操作時,每次按16位長度通過內部的高速PIO數(shù)據(jù)寄存器進行傳輸,每傳輸一扇區(qū)數(shù)據(jù)就產(chǎn)生一次中斷。

          系統(tǒng)不能直接用8255的輸出口控制IDE接口,是由于8255有一個不良特性:當切換芯片I/O口的輸入/輸出模式時,將重新復位所有的引腳狀態(tài),當然也包括所有的輸出信號。這對于作為數(shù)據(jù)總線的信號影響不大,但對控制信號卻有不小的沖擊,尤其是它會將IDE接口的復位線使能(IDE的控制引腳都是低電平有效),這樣就不能正常控制硬盤。因此,本系統(tǒng)通過74HC04將8255的控制端口接到IDE接口上。此時,當8255改變I/O口的工作模式時,所有的輸出全部復位為“0”,經(jīng)74HC04后所有的控制信號被拉成高電平,IDE驅動器就不會處于使能狀態(tài)。

          3. 系統(tǒng)軟件

          本系統(tǒng)的軟件采用程序結構化和功能模塊化的方法,以便于此設計具有良好的可移植性。系統(tǒng)軟件包括主程序和任務子程序。任務子程序由讀扇區(qū) (Read_sector),寫扇區(qū) (Write_sector),錯誤處理 (Process_error),邏輯塊地址寫(wr_lba),IDE讀 (ide_rd),IDE寫 (ide_wr)等組成。主程序流程圖如圖2所示:

          52.jpg

          單片機上電后對8255以及IDE驅動器進行初始化,并不停查詢鍵盤,以判斷是否有任務到達,如有任務,則根據(jù)命令進入到相應任務子程序。在進入任務子程序之前,必須先檢測IDE驅動器的狀態(tài),IDE驅動器的狀態(tài)寄存器如表2所示:

          53.jpg


          上一頁 1 2 3 4 下一頁

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();