Intel16位單片機(jī)的特殊串行通訊方式
1 概述
隨著單片機(jī)技術(shù)的發(fā)展和控制技術(shù)的提高,16位單片機(jī)已經(jīng)被廣泛地應(yīng)于工和民用領(lǐng)域。其中,Intel公司的80C196系列16位單片機(jī)目前應(yīng)用非常廣泛的一種。
80C196MC/MD 單片機(jī)集合了Intel16位單片機(jī)的所有特性,是196系列單片機(jī)中功能最強(qiáng)大的單片機(jī)之一。它有一個(gè)16位邏輯運(yùn)算單元,13路10位A/D轉(zhuǎn)換通道,一個(gè)EPA、PTS、兩個(gè)PWM脈寬調(diào)制單元和三個(gè)WFG(波形發(fā)生器)。由于它完善的硬件結(jié)構(gòu)、出色的運(yùn)算能力,使得196MC/MD單片機(jī)可以應(yīng)用于各個(gè)領(lǐng)域。它所獨(dú)有的WFG更使196MC/MD在電機(jī)變頻控制中倍受青睞。196MC/MD單片機(jī)的另一特色就是它獨(dú)特的通訊方式。與其它單片機(jī)不同,196MC/MD的通訊不是通過獨(dú)立的串行通訊接口實(shí)現(xiàn)的,而是利用EPA和PTS來(lái)實(shí)現(xiàn)的。這種方式不但能夠?qū)崿F(xiàn)一般串行口的完成的各種通訊功能。而且還能實(shí)現(xiàn)一些特殊的功能(如多串口的通訊)。要實(shí)現(xiàn)196MC/MD靈活多樣的串行通訊方式,關(guān)鍵是要掌握EPA和PTS的使用技巧。
2 EPA和PTS的工作原理
Intel公司在KC系列以后的16位單片機(jī)中增加了EPA(Event Process Array)事件處理陣列和PTS(Peripheral Transaction Server)外設(shè)事務(wù)服務(wù)器。其中外設(shè)事務(wù)服務(wù)器是微指令中斷控制器。196MC/MD的串行通訊以是利用它們來(lái)實(shí)現(xiàn)的。
196MC/MD 單片機(jī)是EPA中有兩種模塊,一種是捕獲/比較模塊,它用于支持一個(gè)對(duì)應(yīng)引腳的高速輸入/輸出功能。所謂“捕獲”是指它可以記載某個(gè)EPA引腳上電平發(fā)生跳變事件的時(shí)刻。EPA可以捕獲的事件包括下降沿跳變、上升沿跳變、上升或下降沿跳變。在串行通訊中正是利用此功能來(lái)“捕獲”串行輸入時(shí)的起始位的。所謂 “比較”是將定時(shí)器值與一個(gè)預(yù)先設(shè)定值進(jìn)行比較,如相等,則執(zhí)行指定的輸出功能。輸出功能包括輸出低電平、輸出高電平以及引腳電平翻轉(zhuǎn)等。由于“比較”功能可產(chǎn)生一個(gè)準(zhǔn)確的定時(shí)值,因此在串行輸入時(shí)可利用這一特性來(lái)確定第一個(gè)有效數(shù)據(jù)位的采樣時(shí)刻,EPA中的另一種模塊是“比較”模塊。它與“捕獲/比較” 模塊中的比較功能是一致的。串行通訊中利用該模塊的比較輸出功能來(lái)發(fā)送數(shù)據(jù),并與PTS相互協(xié)調(diào)工作以使其達(dá)到規(guī)定的波特率。
196MC/MD 的EPA中管理了4個(gè)捕獲/比較模塊和4個(gè)比較模塊,每個(gè)模塊在硬件上都有對(duì)應(yīng)的引腳。利用這些EPA管理的引腳可以構(gòu)成串行通訊的硬件接口。而且,對(duì)于每一個(gè)引腳都可以進(jìn)行串行通訊接口。因此,196MC/MD的串行安排比較靈活,同時(shí),豐富的硬件資源也為實(shí)現(xiàn)多串口通訊提供了硬件保證。這是其它單片機(jī)無(wú)法與之相比的。
實(shí)現(xiàn)196MC/MD串行通訊另一難點(diǎn)是 PTS的使用。PTS是一個(gè)微指令的硬件中斷處理器,它可提供一種特殊的中斷服務(wù)。與普通中斷不同的是,它不改變堆棧的中斷服務(wù)。與普通中斷不同的是,它不改變堆棧以及PSW,也不打斷正常指令流。它將待處理的微指令插入在PTS控制塊中可與常指令同步執(zhí)行。這樣,就不需要額外的CPU開銷,當(dāng)產(chǎn)生PTS 中斷時(shí),它可以按照PTS控制塊中規(guī)定的操作繼續(xù)進(jìn)行,直到PTS控制塊中規(guī)定的所有工作進(jìn)行完后才觸發(fā)一次對(duì)應(yīng)的變通中斷來(lái)申請(qǐng)一次CPU管理。因此 PTS中斷可以大大減輕CPU的負(fù)擔(dān)以使代碼執(zhí)行效率更高;同時(shí)它還要與普通中斷配合使用,是一種特殊的中斷方式。196MC/MD的PTS有4種操作方式,分別為單字節(jié)傳送方式、多字節(jié)傳送方式、A/D轉(zhuǎn)換方式和串行通訊方式,它們分別對(duì)應(yīng)于5種PTS控制模塊。其中串行通訊方式是196MC/MD所獨(dú)有的,它由兩個(gè)PTS控制塊組成,圖1為其結(jié)構(gòu)圖。
有關(guān)接收和發(fā)送的數(shù)據(jù)存放在由DATA(L)和DATA(H)構(gòu)成的數(shù)據(jù)單元中。其數(shù)據(jù)單元的寬度可達(dá)16位。波特率的設(shè)定參數(shù)放在BAUD(L)和BAUD (H)中。196MC/MD串行通訊的控制參數(shù)主要放在PTSCON和PTSCON1寄存器中。對(duì)這兩個(gè)寄存器進(jìn)行操作可以設(shè)定各種串行通訊方式。下面主要介紹這兩個(gè)寄存器。
PTSCON的操作格式如下:
其中:M2M1M0=011為發(fā)送方式;M2M1M0=001為接收方式;SA=1為同步SIO;SA=0為異步SIO。
MAJ=1為允許多數(shù)表決采樣;MAJ=0為禁止多數(shù)表決采樣。
PTSCON1具有異步和同步操作兩種模式。異步方式的PTSCON1操作格式為:
同步方式的PTSCON1格式為:
其中:PRAR為接收奇偶校驗(yàn)控制/狀態(tài)位;
PEN為奇偶校驗(yàn)選通們,PEN=1時(shí)選通;PEN=0時(shí)禁止;
FE為出錯(cuò)標(biāo)志,F(xiàn)E=1說(shuō)明傳輸出錯(cuò);
TPAR為發(fā)送奇偶校驗(yàn)控制位;
TRC是發(fā)送/接收控制位。
3 實(shí)現(xiàn)196MC/MD的串行通訊
在利用196MC/MD實(shí)現(xiàn)串行通訊時(shí),首先選擇EPA中的一個(gè)捕獲比較模塊作為串行通訊,再選擇一個(gè)比較模塊作為串行通訊發(fā)送模塊。這樣就能構(gòu)成串行通訊的硬件端口。然后,對(duì)所選的EPA模塊開辟相應(yīng)的PTS通道,再根據(jù)通訊要求編寫串行通訊的發(fā)送和接收PTS模塊。最后使EPA和PTS兩者協(xié)同工作便能實(shí)現(xiàn)對(duì)串行通訊的控制。
下面以異步串行通訊為例介紹其實(shí)現(xiàn)方法:首先為串行接收方式選擇一個(gè)捕獲/比較模塊作為串行接收引腳。然后利用捕獲功能捕捉起始位,當(dāng)捕捉到起始位后將該模塊轉(zhuǎn)換為比較方式,并利用比較方式的精確定時(shí)來(lái)確定第一個(gè)采樣時(shí)刻。最后按照選定的時(shí)間間隔對(duì)輸入數(shù)據(jù)的位進(jìn)行采樣(要確保每次采樣都發(fā)生在數(shù)據(jù)位周期中心),這樣就可以正確接收串行數(shù)據(jù)了。這個(gè)采樣過程是通過對(duì)應(yīng)的EPA中斷和PTS配合來(lái)實(shí)現(xiàn)的。圖2是接收過程的時(shí)序圖。
接收過程開始后,先由EPA捕獲比較模塊捕捉起始位,捕獲到時(shí)產(chǎn)生一次EPA的普通中斷。在這個(gè)中斷處理程序中,將捕獲方式轉(zhuǎn)變?yōu)楸容^方式,并根據(jù)要求的波特率設(shè)定比較時(shí)間為個(gè)位周期,同時(shí)啟動(dòng)PTS功能。在此后的個(gè)位周期,即第一個(gè)數(shù)據(jù)位周期的斷時(shí)刻到來(lái)時(shí),第一個(gè)PTS周期開始執(zhí)行,并根據(jù)設(shè)定對(duì)該位數(shù)據(jù)進(jìn)行采樣(為了提高抗干擾能力,可以采用多數(shù)表決方式采樣),直到各位數(shù)據(jù)由PTS中斷根據(jù)設(shè)公平的波特率等參數(shù)直到各位數(shù)據(jù)由PTS中斷根據(jù)設(shè)定的波特率等參數(shù)采樣完成,系統(tǒng)都不需CPU再干預(yù)為止。等到一個(gè)數(shù)據(jù)單元接收完畢后,PTS中斷就結(jié)束了。這時(shí),程序再次進(jìn)入一個(gè)EPA的普通中斷,在這個(gè)中斷中,可將PTS中接收的數(shù)據(jù)保存,然后將該EPA模塊設(shè)為捕獲方式,以捕獲下一個(gè)數(shù)據(jù)單元的起始位。以此方式反復(fù)運(yùn)行就可以逐一地接收數(shù)據(jù)單元了。對(duì)于串行發(fā)送方式,可以在EPA的捕獲/比較模塊或比較模塊中任選一個(gè)作為串行發(fā)送引腳。然后再根據(jù)要求編寫PTS控制塊,最后利用EPA的普通中斷和PTS配合來(lái)產(chǎn)生逐位發(fā)送的串行發(fā)送時(shí)序,圖3所示是其發(fā)送時(shí)序。其具體工作過程是:首先將待發(fā)送的數(shù)據(jù)單元與通訊參數(shù)一同寫入相應(yīng)的發(fā)送PTS控制塊中。然后在發(fā)送引腳上產(chǎn)生一個(gè)下降沿來(lái)作為起始位,接著就可以啟動(dòng)PTS中斷了。在第一個(gè)PTS中斷中,先在PTS的控制下在發(fā)送引腳上發(fā)出一個(gè)位信號(hào)。然后再在以后的PTS中斷中按規(guī)定的波特率逐位發(fā)送關(guān)斷,此過程無(wú)須CPU 干預(yù),直到一個(gè)數(shù)據(jù)單元發(fā)送完成后進(jìn)入一次EPA的普通中斷為止。在這個(gè)中斷處理中,應(yīng)首先更新有關(guān)寄存器的設(shè)置,然后放入下一個(gè)特發(fā)送的數(shù)據(jù)單元,以構(gòu)造出新的PTS控制塊。之后再產(chǎn)生一個(gè)新的發(fā)送起始位,以重新啟動(dòng)新一輪的PTS來(lái)發(fā)送下一個(gè)數(shù)據(jù)單元。這樣反復(fù)的運(yùn)行就實(shí)現(xiàn)了串行數(shù)據(jù)的發(fā)送。
4 結(jié)束語(yǔ)
實(shí)驗(yàn)證明,196MC/MD單片機(jī)的這種串行通訊方式在實(shí)際應(yīng)用中效果非常好。雖然相對(duì)于獨(dú)立串口來(lái)說(shuō),該方法略顯復(fù)雜。但是這種通訊方法的靈活性和實(shí)用性是其它獨(dú)立串口所無(wú)法比擬的。而且這種通訊方式充分顯示了Intel 16單片機(jī)技術(shù)中EPA和PTS的技術(shù)特點(diǎn),這也是196MC/MD單片機(jī)應(yīng)用的重要技術(shù)之一。