51單片機集成度高,控制、處理能力強,工作可靠穩(wěn)定,已廣泛應用于生產過程的自動檢測、工業(yè)實時控制、機器人、通信、導航、醫(yī)療衛(wèi)生和智能儀器儀表等領域。在這些應用中,特別是在工程信號的自動測試、分析中,常常需要記錄、存儲大量的數據,某些數據還需長期或永久保存。目前,單片機系統(tǒng)保存、記錄數據的工具是隨機存取存儲器(RAM)。眾所周知,RAM不能長久保存數據,51系列單片機系統(tǒng)的數據存儲器最大只有64 KB,因此這些方法滿足不了某些實際系統(tǒng)的要求。當前磁記錄技術已非常成熟,硬盤記錄、存儲系統(tǒng)已成為計算機系統(tǒng)中的主流設備。它的存儲容量大,存取速度高,可以永久性地保存數據,而價格卻越來越低。將其應用于單片機系統(tǒng),可使組成的系統(tǒng)性能大為提高。
IBM - PC計算機支持硬盤系統(tǒng),主機與硬盤之間的接口技術已經標準化,已得到廣泛的應用。用IBM - PC機的硬盤系統(tǒng)作為51系列單片機系統(tǒng)的數據存儲設備,接口電路結構簡單,無需專門設計硬盤的驅動電路,因而構成的應用系統(tǒng)性能價格比非常高。
一、接口電路的設計
IBM - PC機硬盤驅動器適配器簡稱硬盤控制器。它是一個智能部件,可接一個或兩個硬盤,通過系統(tǒng)板上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個可訪問的寄存器寫入命令和控制字來實現(xiàn)的。因此,設計單片機與硬盤控制器的接口電路時,只要考慮以上信號的產生、接收,單片機數據存儲器的擴展,DMA控制器的連接等問題即可。在PC機中,硬盤控制器的6個可訪問的寄存器占用主機的I/O端口地址320—323H,信號的發(fā)送、接收均是通過這幾個口地址尋址的。20根地址線實際只用了10根,51系列單片機有16根地址線,能滿足地址譯碼的要求。51系列單片機不直接支持DMA數據傳送方式,而硬盤控制器和數據存儲器之間的數據必須采用DMA方式。在PC機中,主機對硬盤控制器的讀/寫操作是通過對I/0端口的讀/寫來實現(xiàn)的,而單片機系統(tǒng)沒有I/O讀/寫指令,可采用存儲器映射方式,將硬盤控制器的4個地址映射到外部數據存儲器,這樣控制器的IOR和IOW分別與單片機的WR和RD相連即可。硬盤控制器的中斷請求信號IRQ5只用于硬盤操作結束信號,因此,此信號作為單片機的INT1。其他信號線的連接方式不贅述,本接口電路如圖1- 91所示。
二、軟件設計
在IBM - PC機中,主機可通過調用BIOS程序實現(xiàn)控制器、驅動器和硬盤的診斷,數據的存入和取出,設置硬盤的參數,測試硬盤驅動器是否準備好,格式化硬盤等功能;可通過DOS中斷程序靈活地進行數據文件的加工、處理;還可通過硬盤啟動和引導系統(tǒng),安裝各種應用程序。因此它的軟件結構很復雜,程序量也很大。在本例中,只是把硬盤作為大容量數據存儲器,因此只需簡單地格式化磁盤,讀/寫數據以及測試硬盤驅動器的好壞、是否準備好等功能,可通過向控制器的6個寄存器寫入命令和控制字來實現(xiàn)。這6個寄存器的訪問邏輯見表1- 25。
數據輸入/輸出寄存器( DIOR)很重要,是控制器的信號主吞吐口。狀態(tài)寄存器(321R)提供硬盤控制器的硬件狀態(tài),圖1- 92為該寄存器每一位的作用。其他4個寄存器的功能、用途參見相關文獻,在此不贅述。硬盤控制器的命令是由6字節(jié)組成的字塊,稱為命令塊。由命令塊可發(fā)布19條命令,本節(jié)只選用其中的少數幾條,如讀盤(READ)、寫盤(WRITE)、格式化驅動器(FMTDRV)和測試驅動器是否就緒(TSTRDY)等。一條硬盤控制器命令的執(zhí)行全過程可分為3個階段:命令的發(fā)送、執(zhí)行和結束。在命令的發(fā)送階段,首先須寫“選擇控制器”寄存器,把硬盤控制器“啟動”起來,然后再向控制器寫入6字節(jié)的命令塊;在命令的執(zhí)行階段,控制器根據接收到的命令內容執(zhí)行各種操作;當命令執(zhí)行完后,只有主機經DIOR把“完成狀態(tài)”字節(jié)讀走,命令執(zhí)行的全過程才告結束,否則,硬盤控制器的工作狀態(tài)將發(fā)生混亂??刂破魈峁┑摹巴瓿蔂顟B(tài)”字節(jié)主要是向主機報告此次操作是否出現(xiàn)錯誤,若出現(xiàn)錯誤,主機還可讀出錯誤的類型、出錯的扇段地址等信息。
根據以上分析,軟件設計如下:
(1)主監(jiān)控程序
此部分程序主要實現(xiàn)硬盤控制器的初始化、參數設定等功能。其程序框圖如圖1 - 93所示。
(2)功能模塊
對于硬盤上數據的讀/寫,控制器采用DMA數據傳送方式。當數據讀/寫操作完成后,控制器還發(fā)出中斷請求信號,報告命令執(zhí)行完畢。因此,對于讀盤和寫盤操作,進入功能程序后,先設置DMA控制器的參數、工作狀態(tài),初始化中斷服務程序;然后寫入命令塊和DMA、中斷使能,進入讀/寫操作。寫盤程序流程圖如圖1- 94所示。
讀盤操作與寫盤操作非常相似,只是數據傳送方向相反。因此,程序結構基本一樣,在此不再贅述。
測試硬盤工作是否就緒、格式化硬盤等操作不需要傳送數據,這部分程序不需要DMA參與,但硬件中斷還需要。其他和寫盤操作也基本相同,不再說明。
本例研究的51單片機與IBM - PC硬盤驅動器的接口電路已應用于便攜式智能數據分析、測試儀,性能穩(wěn)定、可靠。由于數據存儲到硬盤上的方式與IBM - PC機相同,因此,單片機系統(tǒng)可與IBM - PC機共享數據,為工程技術人員提供了極大的方便。