唐洪富
(中國電子信息產業集團有限公司第六研究所,北京100083)
基于LPC系列單片機的串口擴展器設計
唐洪富
(中國電子信息產業集團有限公司第六研究所,北京100083)
介紹了一種基于單片機P89LPC931的SPI總線擴展異步串行接口UART的裝置,講述了P89LPC931單片機的開發使用,重點詳細闡明了擴展芯片GM8142的開發使用。用戶可以根據不同的應用環境靈活配置參數。本裝置成本低,可靠性高,穩定性強。
LPC單片機;GM8142;SPI總線
隨著單片機技術的不斷發展,特別是網絡技術在測控領域的廣泛應用,由單片機構成的多機網絡測控系統已成為單片機技術發展的一個方向。單片機的應用已不僅僅局限于傳統意義上的自動監測或控制,而是形成了向以網絡為核心的分布式多點系統發展的趨勢。但是,大多數單片機都只有一個串行接口,在多數情況下限制了這些單片機的進一步應用。要實現單片機在應用系統中的有效通信,就必須對單片機進行串口擴展。
本文介紹的串口擴展器以單片機P89LPC931[1]為核心,使用SPI總線和芯片GM8142進行串口擴展,由1路SPI總線擴展出4路串口,具有可靠性高、抗干擾性能強、成本低等優點,用戶可靈活配置參數,非常適合在電力、化工、冶金等工業控制現場中使用。
本系統功能是通過UART接口接收來自外部(例如PC,定義為上位機)的數據,通過指定的擴展串口將數據發送出去,或者從擴展串口讀取數據,通過UART發送到上位機。系統的整體設計如圖1所示。電源電路為整個系統供電,其中也包括RS232/RS485的電平轉換電路。復位電路完成單片機的外部復位,P89LPC931既可以使用外部高電平復位,也可以內部復位。串口電路完成單片機程序的ISP下載,與外界(如PC)交互,接收外界數據并通過擴展的串口發送,或者接收擴展串口的數據發送到外界設備。人機交互包括按鍵輸入和LCD顯示輸出,完成對系統參數的配置信息的輸入,顯示轉發的數據或配置參數。

圖1 系統整體設計框圖
單片機P89LPC931的電路原理如圖2所示。P89LPC931使用3.3 V電源供電,電阻R3與電容C7構成復位電路。當單片機向芯片GM8142發出復位的低電平信號時,LED點亮。單片機的引腳分配包括LCD部分、ICP在電路編程部分、KEY按鍵輸入部分、SPI接口部分和UART接口部分。
芯片GM8142[2]的電路原理如圖3所示。GM8142使用的晶振頻率為3.686 4 MHz。RX和TX分別是擴展串口的接收和發送引腳,輸出的IRQ作為單片機P89LPC931的外部中斷輸入。

圖2 P89LPC931電路原理圖

圖3 芯片GM8142電路原理圖
2.1 通信規約的設計
串口擴展器的地址初始化為0x00。串口擴展器可以采用RS485或者RS232的接口標準與上位機進行通信。通信采用異步通信方式。通信參數包括波特率、校驗位和幀長度,它們既可以通過按鍵與LCD的人機交互接口設定,也可以通過通信方式由上位機設定。
系統與上位機的通信報文[3]定義如下:(1)設定串口工作參數的報文A1,返回確認設定串口工作參數的報文R1和系統不允許遠程設定參數的報文R2;(2)設定SPI功能寄存器參數的報文A3,確認設定SPI功能寄存器的報文R3和不允許遠程設定的報文R4;(3)讀取SPI功能寄存器參數的報文A5和返回SPI功能寄存器參數的報文R5;(4)發送數據到指定擴展串口的報文A6和確認已發送數據到指定擴展串口的報文R6;(5)查詢從擴展串口上送數據的報文A7和返回的報文R7、R8;(6)緩沖區滿,主動上送數據的報文R9;(7)重新啟動設備的報文A10和確認已重啟的報文R10;(8)回答接收無效的報文R11。
2.2 通信模塊設計
上位機通過UART接口與串口擴展器通信,在P89LPC931的內存中申請一個FIFO,用于接收上位機發送來的數據,進行相關的處理后,以相應的報文進行回答。每個擴展串口在P89LPC931的內存中也申請一個接收FIFO,用于保存從擴展串口發送來的數據。設置接收FIFO滿標志位,當接收FIFO滿時,主動上送報文到上位機。具體的程序流程如圖4所示。

圖4 通信模塊的流程圖
2.3 按鍵輸入參數
串口擴展器的接口參數主要是UART接口的參數和擴展UART接口的參數,包括波特率、校驗位和幀長度,這些參數既可以通過按鍵與LCD配合的方式(即人機交互接口)設定,也可以通過上位機以報文的方式設定。在系統中設定是否允許遠程修改參數的值,當不允許遠程修改時,則遠程通過報文修改系統參數的方式無效,這時只允許通過人機交互接口設定系統參數。
設置5個按鍵,如表1所示。按鍵按下,則單片機P89LPC931相關的引腳輸入為低電平。這5個按鍵的狀態也作為與門74LS08的輸入,74LS08的輸出作為P89LPC931的外部中斷1的輸入。通過按鍵與LCD配合設定系統參數的程序流程[4]如圖5所示。

表1 按鍵的定義
2.4 GM 8142的開發[3]

圖5 按鍵設定參數流程圖
使用GM8142進行擴展串口通信之前,首先進行初始化。SPI的初始化需設置工作方式和時鐘頻率。GM8142的初始化需要設置工作模式、子串口的波特率和數據幀長等,通過向配置寄存器中寫入相應的控制字實現。GM8142一次SPI傳輸要求在一個片選周期內傳輸16 bit數據,所以使用P89LPC931這樣的8位單片機要保證在CS拉低后連續啟動2個8 bit的數據傳輸,然后再將CS拉高。這樣對GM8142來講,同樣實現了一次16 bit的傳輸。GM8142收發數據的程序流程如圖6所示。

圖6 GM8142收發數據的程序流程圖
向GM8142中寫入數據的函數為SendTo814X,啟動一次SPI傳輸,發送16 bit數據,返回16 bit數據。

函數SendDataToCom實現向指定的擴展串口發送單字節的數據。

(1)測試人機交互接口,通過按鍵與LCD配合,能夠正常設定參數。
(2)PC作為上位機利用串口助手這個工具,通過RS232接口發送指定的報文到串口擴展器,從擴展串口發出的數據,也通過串口助手顯示出來。編輯不同的報文,從PC發送到串口擴展器,均返回相應的報文數據。
(3)PC利用串口助手向擴展串口發送數據,擴展的串口接收到數據后,組成相應的報文,在上位機查詢時,以相應的報文回答。
(4)控制其他參數不變,修改某一個參數,例如波特率,重新測試,均返回相應的報文。
本裝置以通用的單片機P89LPC931為核心,外擴GM8142擴展串口模塊和人機交互模塊,可應用于工業控制領域要求多串口的場合。經過詳細測試,該串口擴展器可以實現數據的成功轉發,轉發數據精確可靠,具有很強的實用價值。
[1]張毅剛.單片機原理及應用[M].北京:高等教育出版社,2003.
[2]成都國騰微電子.GM8141/2數據手冊[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].電子測量技術,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-),男,碩士,中級工程師,主要研究方向:計算機應用及自動化。