摘要:本文提出了一種用單片機擴展8255來控制IDE硬盤的方法,并給出了完整的硬件和軟件設計方案,詳細討論并解決了控制過程中所遇到的問題,較好的實現了對硬盤的存取操作。
關鍵詞:單片機;IDE;硬盤接口
【中圖分類號】 TP368.1 【文獻標識碼】 B【文章編號】 1671-1297(2012)09-0326-01
一 方案比較
由于本系統是與硬盤存儲相連,所以單片機的選擇也很重要,考慮到硬盤是以扇區來存儲數據的,并要保留設置參數,不易掉電,因此有三種方案:
方案一:采用比較熟悉的80C51單片機,須外擴掉電不丟失的EEPROM存儲器。
方案二:采用內部帶有EEPROM、片內RAM 256B的單片機,如WINBOND公司的W78E52單片機。
方案三: 采用ATMEL公司生產的內部帶有片內RAM512B的單片機,在實現扇區讀寫時,可以不用外擴數據存儲器。
方案比較:方案一對于初學者來講,80C51單片機再熟悉不過了,當為首選,但外擴存儲器會增加硬件電路的復雜性,并占用單片機的I/O口。方案三,雖說在扇區一次讀取時,不用外擴數據存儲器,但考慮到對初學單片機的來說,需要先熟悉其精簡指令,在實現其功能時,需要一段時間。對于方案二,雖說W78E52片內只有256B,但考慮到本系統是把數據進行即時讀寫處理,所以不需要在掉電的時候保存讀取的數據,因此從整個系統的開發時間和成本來說,方案三不適合。為了比較在附錄中我給出了AT90S8515P控制硬盤接口的電原理圖,以做參考。
本系統選用WINBOND公司的W78E52。它是整個系統的控制核心,完成對IDE硬盤,8255的初始化,接收單片機處理的數據并存儲在硬盤上。W78E52是一款完全與8051兼容的8位單片機,片內ROM 8K,片內RAM 256B,適合硬盤數據的快速傳輸,它增加了Watchdog Timer和內部電源管理等功能,并且是目前少數可運行在最高40MHz晶振的單片機之一。本系統中的單片機W78E52運行在40MHz晶振下,以提高運行速度。所以方案二較好。
二 各單元電路方案
本系統要控制IDE驅動器,IDE驅動器有40個引腳,而單片機I/O口有限,而且,單片機還要用于其它功能的實現和控制。方案比較:
直接用I/O口通過74ls373鎖存,74ls244驅動來控制IDE驅動器接口。要用到兩個I/O口。
通過擴展I/O口芯片來擴展有限的I/O口,可以減少單片機資源的利用。如:8255可編程I/O接口芯片。
因此從資源利用來說,方案二較好。所以需要外擴I/O口。
I/O口擴展方式主要有兩種:總線擴展法和串行口擴展法。在這里,用總線擴展法。總線擴展法又分為簡單I/O接口擴展和可編程I/O接口擴展。本系統采用8255芯片來實現I/O口的擴展。
8255A可編程I/O接口擴展
本系統采用可編程8255A并行I/O擴展口。8255A是Intel公司生產的可編程輸入輸出接口芯片,它具有3個8位的并行I/O口,具有三種工作方式,可通過程序改變其功能,因而使用靈活,通用性強,可作為單片機與多種外圍設備連接時的中間接口電路。
內部結構:8255內部包括三個并行數據輸入/輸出端口,兩個工作方式控制電路,一個讀/寫控制邏輯電路和8位總線緩沖器。各部分功能概括如下:
工作方式控制電路:工作方式控制電路有兩個,一個是A組控制電路,另一個是B組控制電路。這兩組控制電路具有一個控制命令寄存器,用來接受中央處理器發來的控制字,以決定兩組端口的工作方式,也可根據控制字的要求對C口按位清“0”或者按位置“1”。
A組控制電路用來控制A口和C口的上半部分(PC7-PC4)。B組控制電路用來控制B口和C口的下半部分(PC3-PC0)。
總線數據緩沖器:總線數據緩沖器是一個三態雙向8位緩沖器,作為8255與系統總線之間的接口,用來傳送數據、指令、控制命令以及外部狀態信息。
讀/寫控制邏輯電路:
讀/寫控制邏輯電路接受CPU發來的控制信號RD、WR、RESET、地址信號A1-A0等,然后根據控制信號的要求,將端口數據讀出,發往CPU,或者將CPU送來的數據寫入端口。
工作方式0:
工作方式0是一種基本的輸入/輸出工作方式,在這種方式下,三個端口都可以由程序設置為輸入或輸出,沒有固定的用于應答的聯絡信號。其基本的功能可概括如下:
可具有兩個8位端口(A、B)和兩個4位端口(C口的上半部分和下半部分)。
任何一個端口都可以設定為輸入或者輸出,各端口的輸入、輸出可構成16種組合。
數據輸出時可以鎖存,輸出時不鎖存。按照方式0工作時,CPU可以通過簡單的傳送指令對人以一個端口進行讀/寫,這樣各端口就可以作為查詢式輸入/輸出接口。按照查詢方式工作時,A口、B口可作為兩個數據輸入/輸出端口,C口的某些位可作為這兩個端口的控制/狀態信號端。
工作方式1是一種選通式輸入/輸出工作方式。在這種工作方式下,選通信號與輸入/輸出數據一起傳送,由選通信號對數據進行選通。其基本功能可概括如下:
3個端口分為兩組,即A組和B組。
每一組包括一個8位數據端口和一個4位的控制/狀態端口。
每一個8位數據端口均可設置為輸入或者輸出,輸入輸出均可鎖存。
4位端口作為8位數據端口的控制/狀態信號端口。
本系統能夠用到的工作方式0、1,所以就不用介紹工作方式2。
8255A在投入工作前必須設定工作方式,工作方式有初始化程序對8255A的控制寄存器寫入控制字來決定。控制字共有兩種。
8255的連接是同過W78E52的PO口進行I/O擴展,用74LS573鎖存器來確定8255的3個I/O口的地址,本系統中8255的A口起始地址是FF7CH ,B口的起始地址是FF7DH,C口的起始地址是FF7EH,控制口的起始地址是FF7FH。在進行數據讀寫時首先確定8255的工作方式,用哪個口進行數據傳輸,本系統才用工作方式0、1進行數據讀取,用MOVX DPTR,#X和MOV @DPTR,A來進行數據操作和對硬盤的智能控制。
基于單片機的IDE硬盤接口系統,除了單片機和硬件的連接外,還需要了解硬盤的結構,文件的存儲格式,IDE驅動器的端口定義和編程的種種細節問題,所以下面通過3、4、5 章來介紹硬盤的工作原理,FAT文件系統,IDE硬盤驅動器的原理。
參考文獻
[1] 李華.《MCS-51系列單片機實用接口技術》.北京.北京航空航天大學出版社,1993 P71-79
[2] 陳利學,孫彪,趙玉連.《微機總線與接口設計》.成都.電子科技大學出版社,1988 P45-90
[3] 徐厚俊.《IDE接口和IDE硬盤驅動器》.新浪潮,1996.P17
[4] 吳寧,陳文革,張建.《微型計算機硬件技術基礎》.高等教育出版社,2003.P280-283
作者簡介: 王瑩,女,1983年出生,專業為電子信息工程,研究方向為電子電氣控制。