1 引言 在許多復(fù)雜的測控、測試及數(shù)據(jù)處理系統(tǒng)中,一般需要與大量的被控對象、被測試設(shè)備及自動化儀表進行通信,而這些對象、設(shè)備及儀表等所提供的接口大多是標(biāo)準(zhǔn)的異步串行接口形式,因此,在以CPU為核心,與多路外圍設(shè)備進行串行通信的測控、測試系統(tǒng)中,需要對串行接口進行擴充,通過選擇功能合適的接口器件完成系統(tǒng)的設(shè)計要求。 目前,市場上出現(xiàn)了多種型號的接口芯片, Philips半導(dǎo)體公司生產(chǎn)的四通道通用異步接收/發(fā)送器芯片SC26C94是其中之一。它以高集成度、低功耗、高性能、使用靈活等特點被廣泛應(yīng)用于航空、航海、工業(yè)控制等領(lǐng)域中。 2 SC26C94器件 SC26C94是采用COMS技術(shù)生產(chǎn)的四通道通用異步接收/發(fā)送器芯片,共有4個相互獨立的通道,且每個通道各有4個數(shù)字I/O口和2個16位定時/計數(shù)器,它們均可以通過編程設(shè)置其工作方式。結(jié)構(gòu)框圖如圖1所示。 2.1 SC26C94特點 SC26C94為用戶提供了+5V的供電方式,信號電平與TTL電平兼容,有DIP和PLCC兩種封裝形式,并具有以下特點: ·8字節(jié)發(fā)送FIFO; ·8字節(jié)接收FIFO; ·數(shù)據(jù)格式:5~8位數(shù)據(jù)位,包括奇校驗、偶校驗和無校驗、1、1.5、2位停止位; ·發(fā)送和接收可設(shè)置不同波特率(23種固定波特率:50~230.4k或外部時鐘的1倍或16倍); ·校驗錯誤、幀錯誤和超限錯誤檢測; ·起始位錯誤檢測; ·通道工作模式可編程設(shè)置:即普通全雙工、自動回繞、局部循環(huán)和遠程循環(huán)四種模式; ·中斷優(yōu)先級可編程設(shè)置并自動識別; ·具有掉電保護模式; ·每個接收器配有“看門狗”電路; 2.2 SC26C94寄存器 SC26C94的工作方式是可編程的,工作方式通過對其一系列寄存器設(shè)置來定義,因此使用過程中,需要了解以下寄存器功能: (1)MR0:工作方式寄存器0 定義發(fā)送和接收寄存器的FIFO工作狀態(tài)及接收器“看門狗”是否啟動。 (2)MR1:工作方式寄存器1 該寄存器和MR0組合定義接收FIFO工作狀態(tài)及數(shù)據(jù)格式,包括:5~8位數(shù)據(jù)位、奇校驗、偶校驗和無校驗、1、1.5、2位停止位。 (3)MR2:工作方式寄存器2 定義通道工作模式(包括普通全雙工、自動回繞、局部循環(huán)和遠程循環(huán)),停止位(1、1.5、2位)。 (4)CSR:時鐘選擇寄存器 該寄存器與BRG(波特率產(chǎn)生器)、ACR(輔助控制寄存器,選擇波特率設(shè)置方式)一起設(shè)置接收和發(fā)送波特率。 (5)CR:命令寄存器 定義各發(fā)送接收端口工作狀態(tài)及是否允許發(fā)送接收。 (6)SR:狀態(tài)寄存器 反映發(fā)送接收緩沖器狀態(tài)及幀錯、奇偶校驗錯、超限錯等狀態(tài)。 (7)IMR:中斷屏蔽寄存器 定義各端口是否允許中斷。 (8)ISR:中斷狀態(tài)寄存器 反映當(dāng)前中斷類型。 (9)CIR:當(dāng)前中斷寄存器 反映當(dāng)前中斷的通道號和發(fā)送或接收中斷類型。 3 SC26C94在測控系統(tǒng)中的應(yīng)用 某航空測控系統(tǒng)是以80X86為核心,由A/D、 D/A及開關(guān)量控制、10種測試設(shè)備組成的,其中測試設(shè)備中有8路為標(biāo)準(zhǔn)串行通信,分別為發(fā)動機轉(zhuǎn)速、氣壓、高度、速度、遙測調(diào)制器、遙控解調(diào)器、地磁方向、GPS等量。系統(tǒng)選用兩片 SC26C94,擴充8個串行口,實現(xiàn)80X86與8路測試設(shè)備的通信。 3.1 硬件設(shè)計 (1)振蕩電路 SC26C94內(nèi)部有一個用于構(gòu)成振蕩器的高增益反向放大器,引腳X1與X2分別是此放大器的輸入端和輸出端。此放大器與外部晶體構(gòu)成一個振蕩器,此例中采用了內(nèi)部振蕩電路。如圖2所示,G1(G2)為3.6864MHz晶體;外部電容C2(C5)、 C3(C6)的典型值為24pF;另外,使用外部晶振時,可經(jīng)過一非門,在非門輸出端并聯(lián)一個1k W的上拉電阻,從公共點引出與引腳X1連接。 (2)復(fù)位電路 SC26C94復(fù)位時間必須保證RESET引腳上出現(xiàn) 1ms以上穩(wěn)定的高電平,才可實現(xiàn)可靠的復(fù)位。因此無論是簡單還是復(fù)雜的復(fù)位電路,均要保證此條件。圖2中使用了簡單的復(fù)位電路,其中R1 (R2)=1.5kW、C1 (C4)=10mF。 (3)接口電路 如圖2所示,通過ISA總線將80X86CPU與SC26C94及其它系統(tǒng)連接起來。其中D1完成總線驅(qū)動、隔離和地址譯碼,RXD1~RXD8與TXD1~ TXD8是SC26C94的接收/發(fā)送端,分別與外部的8路測試設(shè)備連接,實現(xiàn)CPU與外圍設(shè)備的通信。 3.2 SC26C94軟件設(shè)計 SC26C94的軟件設(shè)計首先是對其進行初始化,然后再分別對各個中斷源進行中斷服務(wù)程序的設(shè)計;可選擇C或匯編語言進行編程。 3.2.1 初始化編程 初始化編程主要選擇芯片工作方式,包括數(shù)據(jù)格式、波特率、中斷允許、接收或發(fā)送緩沖器所允許的字節(jié)數(shù)等。編程方法及順序如下: (1)復(fù)位接收FIFO(CR)復(fù)位發(fā)送FIFO (CR); (2)禁止DACKN; (3)選擇波特率組別(BRGrate); (4)定義中斷向量類型(ICR); (5)選擇波特率組別(ACR); (6)設(shè)置中斷屏蔽寄存器(IMR); (7)指針指向MR0(CR); (8)設(shè)置數(shù)據(jù)格式及波特率(MR0、MR1、 MR2、CSR); (9)接收發(fā)送允許(CR)。 以C語言為例對通道A初始化程序設(shè)計如下: outportb(uaraddr,uarCRa); outportb(uarcen1,0x20); outportb(uarcen1,0x30); outportb(uaraddr,uarDACKN); outportb(uarcen1,0); outportb(uaraddr,uarBRGrate) outportb(uarcen1,0x00); outportb(uaraddr,uarICR); outportb(uarcen1,0x02); outportb(uaraddr,uarACRab); outportb(uarcen1,0x80); outportb(uaraddr,uarIMRab); outportb(uarcen1,uar1IMRabd); //UAR1 a yx1(laser) outportb(uaraddr,uarCRa) outportb(uarcen1,0xb0); outportb(uaraddr,uarMRa); outportb(uarcen1,0x80); outportb(uarcen1,0x53); outportb(uarcen1,0x07); outportb(uaraddr,uarCSRa); outportb(uarcen1,0x88); outportb(uaraddr,uarCRa); outportb(uarcen1,0x05); 3.2.2 中斷服務(wù)程序設(shè)計 由于SC26C94四通道中的任何一個都可引起中斷,因此在中斷服務(wù)程序中首先要識別中斷源,即識別中斷是由哪一個通道引起,是發(fā)送中斷還是接收中斷,是有錯誤還是無錯誤等。流程如圖3所示。 根據(jù)流程圖可編程如下: void interrupt (*oldvect2)(); void interrupt UAR1_interrupt(void) { //保護現(xiàn)場// for(ii2=1;ii2<=5;ii2++) { outportb(uaraddr,uarupdateCIR); outportb(uarcen1,0x00); outportb(uaraddr,uarCIR); uar1cir=inportb(uarcen1); outportb(uaraddr,uarISRab); uar1israb=inportb(uarcen1); outportb(uaraddr,uarISRcd); uar1isrcd=inportb(uarcen1); outportb(uaraddr,uarGIBCR); count1=inportb(uarcen1); if (count1 > 8) count1 = 8; stt1=uar1cir&0x1f; if(stt1<=3)break; switch(stt1) { case 0x1c: //中斷服務(wù)程序// break; default:; } } //恢復(fù)現(xiàn)場// } 4 結(jié)論 上述測控系統(tǒng)設(shè)計及運行過程表明,SC26C94 具有使用靈活、功能豐富、系統(tǒng)連接方便、編程簡單、可靠性高等特點,另外,其合理的性能價格比及暢通的貨源渠道,表現(xiàn)出較好的工程實用特性,是一種實用的接口芯片,可廣泛應(yīng)用于自動化儀表、測試、測控及數(shù)據(jù)處理等系統(tǒng)中。 |