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