唐洪富
(中國(guó)電子信息產(chǎn)業(yè)集團(tuán)有限公司第六研究所,北京100083)
基于LPC系列單片機(jī)的串口擴(kuò)展器設(shè)計(jì)
唐洪富
(中國(guó)電子信息產(chǎn)業(yè)集團(tuán)有限公司第六研究所,北京100083)
介紹了一種基于單片機(jī)P89LPC931的SPI總線(xiàn)擴(kuò)展異步串行接口UART的裝置,講述了P89LPC931單片機(jī)的開(kāi)發(fā)使用,重點(diǎn)詳細(xì)闡明了擴(kuò)展芯片GM8142的開(kāi)發(fā)使用。用戶(hù)可以根據(jù)不同的應(yīng)用環(huán)境靈活配置參數(shù)。本裝置成本低,可靠性高,穩(wěn)定性強(qiáng)。
LPC單片機(jī);GM8142;SPI總線(xiàn)
隨著單片機(jī)技術(shù)的不斷發(fā)展,特別是網(wǎng)絡(luò)技術(shù)在測(cè)控領(lǐng)域的廣泛應(yīng)用,由單片機(jī)構(gòu)成的多機(jī)網(wǎng)絡(luò)測(cè)控系統(tǒng)已成為單片機(jī)技術(shù)發(fā)展的一個(gè)方向。單片機(jī)的應(yīng)用已不僅僅局限于傳統(tǒng)意義上的自動(dòng)監(jiān)測(cè)或控制,而是形成了向以網(wǎng)絡(luò)為核心的分布式多點(diǎn)系統(tǒng)發(fā)展的趨勢(shì)。但是,大多數(shù)單片機(jī)都只有一個(gè)串行接口,在多數(shù)情況下限制了這些單片機(jī)的進(jìn)一步應(yīng)用。要實(shí)現(xiàn)單片機(jī)在應(yīng)用系統(tǒng)中的有效通信,就必須對(duì)單片機(jī)進(jìn)行串口擴(kuò)展。
本文介紹的串口擴(kuò)展器以單片機(jī)P89LPC931[1]為核心,使用SPI總線(xiàn)和芯片GM8142進(jìn)行串口擴(kuò)展,由1路SPI總線(xiàn)擴(kuò)展出4路串口,具有可靠性高、抗干擾性能強(qiáng)、成本低等優(yōu)點(diǎn),用戶(hù)可靈活配置參數(shù),非常適合在電力、化工、冶金等工業(yè)控制現(xiàn)場(chǎng)中使用。
本系統(tǒng)功能是通過(guò)UART接口接收來(lái)自外部(例如PC,定義為上位機(jī))的數(shù)據(jù),通過(guò)指定的擴(kuò)展串口將數(shù)據(jù)發(fā)送出去,或者從擴(kuò)展串口讀取數(shù)據(jù),通過(guò)UART發(fā)送到上位機(jī)。系統(tǒng)的整體設(shè)計(jì)如圖1所示。電源電路為整個(gè)系統(tǒng)供電,其中也包括RS232/RS485的電平轉(zhuǎn)換電路。復(fù)位電路完成單片機(jī)的外部復(fù)位,P89LPC931既可以使用外部高電平復(fù)位,也可以?xún)?nèi)部復(fù)位。串口電路完成單片機(jī)程序的ISP下載,與外界(如PC)交互,接收外界數(shù)據(jù)并通過(guò)擴(kuò)展的串口發(fā)送,或者接收擴(kuò)展串口的數(shù)據(jù)發(fā)送到外界設(shè)備。人機(jī)交互包括按鍵輸入和LCD顯示輸出,完成對(duì)系統(tǒng)參數(shù)的配置信息的輸入,顯示轉(zhuǎn)發(fā)的數(shù)據(jù)或配置參數(shù)。
圖1 系統(tǒng)整體設(shè)計(jì)框圖
單片機(jī)P89LPC931的電路原理如圖2所示。P89LPC931使用3.3 V電源供電,電阻R3與電容C7構(gòu)成復(fù)位電路。當(dāng)單片機(jī)向芯片GM8142發(fā)出復(fù)位的低電平信號(hào)時(shí),LED點(diǎn)亮。單片機(jī)的引腳分配包括LCD部分、ICP在電路編程部分、KEY按鍵輸入部分、SPI接口部分和UART接口部分。
芯片GM8142[2]的電路原理如圖3所示。GM8142使用的晶振頻率為3.686 4 MHz。RX和TX分別是擴(kuò)展串口的接收和發(fā)送引腳,輸出的IRQ作為單片機(jī)P89LPC931的外部中斷輸入。
圖2 P89LPC931電路原理圖
圖3 芯片GM8142電路原理圖
2.1 通信規(guī)約的設(shè)計(jì)
串口擴(kuò)展器的地址初始化為0x00。串口擴(kuò)展器可以采用RS485或者RS232的接口標(biāo)準(zhǔn)與上位機(jī)進(jìn)行通信。通信采用異步通信方式。通信參數(shù)包括波特率、校驗(yàn)位和幀長(zhǎng)度,它們既可以通過(guò)按鍵與LCD的人機(jī)交互接口設(shè)定,也可以通過(guò)通信方式由上位機(jī)設(shè)定。
系統(tǒng)與上位機(jī)的通信報(bào)文[3]定義如下:(1)設(shè)定串口工作參數(shù)的報(bào)文A1,返回確認(rèn)設(shè)定串口工作參數(shù)的報(bào)文R1和系統(tǒng)不允許遠(yuǎn)程設(shè)定參數(shù)的報(bào)文R2;(2)設(shè)定SPI功能寄存器參數(shù)的報(bào)文A3,確認(rèn)設(shè)定SPI功能寄存器的報(bào)文R3和不允許遠(yuǎn)程設(shè)定的報(bào)文R4;(3)讀取SPI功能寄存器參數(shù)的報(bào)文A5和返回SPI功能寄存器參數(shù)的報(bào)文R5;(4)發(fā)送數(shù)據(jù)到指定擴(kuò)展串口的報(bào)文A6和確認(rèn)已發(fā)送數(shù)據(jù)到指定擴(kuò)展串口的報(bào)文R6;(5)查詢(xún)從擴(kuò)展串口上送數(shù)據(jù)的報(bào)文A7和返回的報(bào)文R7、R8;(6)緩沖區(qū)滿(mǎn),主動(dòng)上送數(shù)據(jù)的報(bào)文R9;(7)重新啟動(dòng)設(shè)備的報(bào)文A10和確認(rèn)已重啟的報(bào)文R10;(8)回答接收無(wú)效的報(bào)文R11。
2.2 通信模塊設(shè)計(jì)
上位機(jī)通過(guò)UART接口與串口擴(kuò)展器通信,在P89LPC931的內(nèi)存中申請(qǐng)一個(gè)FIFO,用于接收上位機(jī)發(fā)送來(lái)的數(shù)據(jù),進(jìn)行相關(guān)的處理后,以相應(yīng)的報(bào)文進(jìn)行回答。每個(gè)擴(kuò)展串口在P89LPC931的內(nèi)存中也申請(qǐng)一個(gè)接收FIFO,用于保存從擴(kuò)展串口發(fā)送來(lái)的數(shù)據(jù)。設(shè)置接收FIFO滿(mǎn)標(biāo)志位,當(dāng)接收FIFO滿(mǎn)時(shí),主動(dòng)上送報(bào)文到上位機(jī)。具體的程序流程如圖4所示。
圖4 通信模塊的流程圖
2.3 按鍵輸入?yún)?shù)
串口擴(kuò)展器的接口參數(shù)主要是UART接口的參數(shù)和擴(kuò)展UART接口的參數(shù),包括波特率、校驗(yàn)位和幀長(zhǎng)度,這些參數(shù)既可以通過(guò)按鍵與LCD配合的方式(即人機(jī)交互接口)設(shè)定,也可以通過(guò)上位機(jī)以報(bào)文的方式設(shè)定。在系統(tǒng)中設(shè)定是否允許遠(yuǎn)程修改參數(shù)的值,當(dāng)不允許遠(yuǎn)程修改時(shí),則遠(yuǎn)程通過(guò)報(bào)文修改系統(tǒng)參數(shù)的方式無(wú)效,這時(shí)只允許通過(guò)人機(jī)交互接口設(shè)定系統(tǒng)參數(shù)。
設(shè)置5個(gè)按鍵,如表1所示。按鍵按下,則單片機(jī)P89LPC931相關(guān)的引腳輸入為低電平。這5個(gè)按鍵的狀態(tài)也作為與門(mén)74LS08的輸入,74LS08的輸出作為P89LPC931的外部中斷1的輸入。通過(guò)按鍵與LCD配合設(shè)定系統(tǒng)參數(shù)的程序流程[4]如圖5所示。
表1 按鍵的定義
2.4 GM 8142的開(kāi)發(fā)[3]
圖5 按鍵設(shè)定參數(shù)流程圖
使用GM8142進(jìn)行擴(kuò)展串口通信之前,首先進(jìn)行初始化。SPI的初始化需設(shè)置工作方式和時(shí)鐘頻率。GM8142的初始化需要設(shè)置工作模式、子串口的波特率和數(shù)據(jù)幀長(zhǎng)等,通過(guò)向配置寄存器中寫(xiě)入相應(yīng)的控制字實(shí)現(xiàn)。GM8142一次SPI傳輸要求在一個(gè)片選周期內(nèi)傳輸16 bit數(shù)據(jù),所以使用P89LPC931這樣的8位單片機(jī)要保證在CS拉低后連續(xù)啟動(dòng)2個(gè)8 bit的數(shù)據(jù)傳輸,然后再將CS拉高。這樣對(duì)GM8142來(lái)講,同樣實(shí)現(xiàn)了一次16 bit的傳輸。GM8142收發(fā)數(shù)據(jù)的程序流程如圖6所示。
圖6 GM8142收發(fā)數(shù)據(jù)的程序流程圖
向GM8142中寫(xiě)入數(shù)據(jù)的函數(shù)為SendTo814X,啟動(dòng)一次SPI傳輸,發(fā)送16 bit數(shù)據(jù),返回16 bit數(shù)據(jù)。
函數(shù)SendDataToCom實(shí)現(xiàn)向指定的擴(kuò)展串口發(fā)送單字節(jié)的數(shù)據(jù)。
(1)測(cè)試人機(jī)交互接口,通過(guò)按鍵與LCD配合,能夠正常設(shè)定參數(shù)。
(2)PC作為上位機(jī)利用串口助手這個(gè)工具,通過(guò)RS232接口發(fā)送指定的報(bào)文到串口擴(kuò)展器,從擴(kuò)展串口發(fā)出的數(shù)據(jù),也通過(guò)串口助手顯示出來(lái)。編輯不同的報(bào)文,從PC發(fā)送到串口擴(kuò)展器,均返回相應(yīng)的報(bào)文數(shù)據(jù)。
(3)PC利用串口助手向擴(kuò)展串口發(fā)送數(shù)據(jù),擴(kuò)展的串口接收到數(shù)據(jù)后,組成相應(yīng)的報(bào)文,在上位機(jī)查詢(xún)時(shí),以相應(yīng)的報(bào)文回答。
(4)控制其他參數(shù)不變,修改某一個(gè)參數(shù),例如波特率,重新測(cè)試,均返回相應(yīng)的報(bào)文。
本裝置以通用的單片機(jī)P89LPC931為核心,外擴(kuò)GM8142擴(kuò)展串口模塊和人機(jī)交互模塊,可應(yīng)用于工業(yè)控制領(lǐng)域要求多串口的場(chǎng)合。經(jīng)過(guò)詳細(xì)測(cè)試,該串口擴(kuò)展器可以實(shí)現(xiàn)數(shù)據(jù)的成功轉(zhuǎn)發(fā),轉(zhuǎn)發(fā)數(shù)據(jù)精確可靠,具有很強(qiáng)的實(shí)用價(jià)值。
[1]張毅剛.單片機(jī)原理及應(yīng)用[M].北京:高等教育出版社,2003.
[2]成都國(guó)騰微電子.GM8141/2數(shù)據(jù)手冊(cè)[Z].2006.
[3]SARIKAYA B,KOUKOULIDIS V,ESWARA S,et al. Analysis and testing of application layer protocols with an application to FTAM[J].IEEE Transactions on Communications,1992,40(1):7-11.
[4]王忠義,張有光,潘懷勇.基于MCS-51人機(jī)交互接口[J].電子測(cè)量技術(shù),2004(3):43-44.
Design of UART extender based on LPC series m icrocontroller
Tang Hongfu
(The Sixth Research Institute of China Electronics Corporation,Beijing 100083,China)
An UART extended by SPI bus based on single chip microcomputer P89LPC931 was introduced.The development of P89LPC931 was described,and the development of the chip GM8142 was emphatically elaborated.The configuration parameters are flexible depended on the application environment.The extender has the characters of low cost,reliability and stability.
LPC microcontroller;GM8142;SPI bus
TP23
A
1674-7720(2015)13-0097-03
2015-02-08)
唐洪富(1987-),男,碩士,中級(jí)工程師,主要研究方向:計(jì)算機(jī)應(yīng)用及自動(dòng)化。