《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于LPC系列單片機(jī)的串口擴(kuò)展器設(shè)計(jì)
基于LPC系列單片機(jī)的串口擴(kuò)展器設(shè)計(jì)
2015年微型機(jī)與應(yīng)用第13期
唐洪富
中國電子信息產(chǎn)業(yè)集團(tuán)有限公司第六研究所,北京 100083
摘要: 介紹了一種基于單片機(jī)P89LPC931的SPI總線擴(kuò)展異步串行接口UART的裝置,講述了P89LPC931單片機(jī)的開發(fā)使用,重點(diǎn)詳細(xì)闡明了擴(kuò)展芯片GM8142的開發(fā)使用。用戶可以根據(jù)不同的應(yīng)用環(huán)境靈活配置參數(shù)。本裝置成本低,可靠性高,穩(wěn)定性強(qiáng)。
Abstract:
Key words :

  摘  要: 介紹了一種基于單片機(jī)P89LPC931的SPI總線擴(kuò)展異步串行接口UART的裝置,講述了P89LPC931單片機(jī)的開發(fā)使用,重點(diǎn)詳細(xì)闡明了擴(kuò)展芯片GM8142的開發(fā)使用。用戶可以根據(jù)不同的應(yīng)用環(huán)境靈活配置參數(shù)。本裝置成本低,可靠性高,穩(wěn)定性強(qiáng)。

  關(guān)鍵詞LPC單片機(jī);GM8142;SPI總線

0 引言

  隨著單片機(jī)技術(shù)的不斷發(fā)展,特別是網(wǎng)絡(luò)技術(shù)在測控領(lǐng)域的廣泛應(yīng)用,由單片機(jī)構(gòu)成的多機(jī)網(wǎng)絡(luò)測控系統(tǒng)已成為單片機(jī)技術(shù)發(fā)展的一個(gè)方向。單片機(jī)的應(yīng)用已不僅僅局限于傳統(tǒng)意義上的自動(dòng)監(jiān)測或控制,而是形成了向以網(wǎng)絡(luò)為核心的分布式多點(diǎn)系統(tǒng)發(fā)展的趨勢。但是,大多數(shù)單片機(jī)都只有一個(gè)串行接口,在多數(shù)情況下限制了這些單片機(jī)的進(jìn)一步應(yīng)用。要實(shí)現(xiàn)單片機(jī)在應(yīng)用系統(tǒng)中的有效通信,就必須對單片機(jī)進(jìn)行串口擴(kuò)展。

  本文介紹的串口擴(kuò)展器以單片機(jī)P89LPC931[1]為核心,使用SPI總線和芯片GM8142進(jìn)行串口擴(kuò)展,由1路SPI總線擴(kuò)展出4路串口,具有可靠性高、抗干擾性能強(qiáng)、成本低等優(yōu)點(diǎn),用戶可靈活配置參數(shù),非常適合在電力、化工、冶金等工業(yè)控制現(xiàn)場中使用。

1 系統(tǒng)硬件設(shè)計(jì)

  本系統(tǒng)功能是通過UART接口接收來自外部(例如PC,定義為上位機(jī))的數(shù)據(jù),通過指定的擴(kuò)展串口將數(shù)據(jù)發(fā)送出去,或者從擴(kuò)展串口讀取數(shù)據(jù),通過UART發(fā)送到上位機(jī)。系統(tǒng)的整體設(shè)計(jì)如圖1所示。電源電路為整個(gè)系統(tǒng)供電,其中也包括RS232/RS485的電平轉(zhuǎn)換電路。復(fù)位電路完成單片機(jī)的外部復(fù)位,P89LPC931既可以使用外部高電平復(fù)位,也可以內(nèi)部復(fù)位。串口電路完成單片機(jī)程序的ISP下載,與外界(如PC)交互,接收外界數(shù)據(jù)并通過擴(kuò)展的串口發(fā)送,或者接收擴(kuò)展串口的數(shù)據(jù)發(fā)送到外界設(shè)備。人機(jī)交互包括按鍵輸入和LCD顯示輸出,完成對系統(tǒng)參數(shù)的配置信息的輸入,顯示轉(zhuǎn)發(fā)的數(shù)據(jù)或配置參數(shù)。

Image 007.png

  單片機(jī)P89LPC931的電路原理如圖2所示。P89LPC931使用3.3 V電源供電,電阻R3與電容C7構(gòu)成復(fù)位電路。當(dāng)單片機(jī)向芯片GM8142發(fā)出復(fù)位的低電平信號時(shí),LED點(diǎn)亮。單片機(jī)的引腳分配包括LCD部分、ICP在電路編程部分、KEY按鍵輸入部分、SPI接口部分和UART接口部分。

Image 008.png

  芯片GM8142[2]的電路原理如圖3所示。GM8142使用的晶振頻率為3.686 4 MHz。RX和TX分別是擴(kuò)展串口的接收和發(fā)送引腳,輸出的IRQ作為單片機(jī)P89LPC931的外部中斷輸入。

Image 009.png

2 系統(tǒng)軟件設(shè)計(jì)

  2.1 通信規(guī)約的設(shè)計(jì)

  串口擴(kuò)展器的地址初始化為0x00。串口擴(kuò)展器可以采用RS485或者RS232的接口標(biāo)準(zhǔn)與上位機(jī)進(jìn)行通信。通信采用異步通信方式。通信參數(shù)包括波特率、校驗(yàn)位和幀長度,它們既可以通過按鍵與LCD的人機(jī)交互接口設(shè)定,也可以通過通信方式由上位機(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)查詢從擴(kuò)展串口上送數(shù)據(jù)的報(bào)文A7和返回的報(bào)文R7、R8;(6)緩沖區(qū)滿,主動(dòng)上送數(shù)據(jù)的報(bào)文R9;(7)重新啟動(dòng)設(shè)備的報(bào)文A10和確認(rèn)已重啟的報(bào)文R10;(8)回答接收無效的報(bào)文R11。

  2.2 通信模塊設(shè)計(jì)

  上位機(jī)通過UART接口與串口擴(kuò)展器通信,在P89LPC931的內(nèi)存中申請一個(gè)FIFO,用于接收上位機(jī)發(fā)送來的數(shù)據(jù),進(jìn)行相關(guān)的處理后,以相應(yīng)的報(bào)文進(jìn)行回答。每個(gè)擴(kuò)展串口在P89LPC931的內(nèi)存中也申請一個(gè)接收FIFO,用于保存從擴(kuò)展串口發(fā)送來的數(shù)據(jù)。設(shè)置接收FIFO滿標(biāo)志位,當(dāng)接收FIFO滿時(shí),主動(dòng)上送報(bào)文到上位機(jī)。具體的程序流程如圖4所示。

Image 010.png

  2.3 按鍵輸入?yún)?shù)

  串口擴(kuò)展器的接口參數(shù)主要是UART接口的參數(shù)和擴(kuò)展UART接口的參數(shù),包括波特率、校驗(yàn)位和幀長度,這些參數(shù)既可以通過按鍵與LCD配合的方式(即人機(jī)交互接口)設(shè)定,也可以通過上位機(jī)以報(bào)文的方式設(shè)定。在系統(tǒng)中設(shè)定是否允許遠(yuǎn)程修改參數(shù)的值,當(dāng)不允許遠(yuǎn)程修改時(shí),則遠(yuǎn)程通過報(bào)文修改系統(tǒng)參數(shù)的方式無效,這時(shí)只允許通過人機(jī)交互接口設(shè)定系統(tǒng)參數(shù)。

Image 003.png

  設(shè)置5個(gè)按鍵,如表1所示。按鍵按下,則單片機(jī)P89LPC931相關(guān)的引腳輸入為低電平。這5個(gè)按鍵的狀態(tài)也作為與門74LS08的輸入,74LS08的輸出作為P89LPC931的外部中斷1的輸入。通過按鍵與LCD配合設(shè)定系統(tǒng)參數(shù)的程序流程[4]如圖5所示。

Image 001.png

  2.4 GM8142的開發(fā)[3]

  使用GM8142進(jìn)行擴(kuò)展串口通信之前,首先進(jìn)行初始化。SPI的初始化需設(shè)置工作方式和時(shí)鐘頻率。GM8142的初始化需要設(shè)置工作模式、子串口的波特率和數(shù)據(jù)幀長等,通過向配置寄存器中寫入相應(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拉高。這樣對GM8142來講,同樣實(shí)現(xiàn)了一次16 bit的傳輸。GM8142收發(fā)數(shù)據(jù)的程序流程如圖6所示。

Image 002.png

  向GM8142中寫入數(shù)據(jù)的函數(shù)為SendTo814X,啟動(dòng)一次SPI傳輸,發(fā)送16 bit數(shù)據(jù),返回16 bit數(shù)據(jù)。

  unsigned int SendTo814X(unsigned char chigh,unsigned char clow)

  {

  unsigned char cTempHigh,cTempLow;

  unsigned int RevData;

  SPI_CS=0;

  SPDAT=chigh;

  while((SPSTAT&0x80)==0);

  cTempHigh=SPDAT;

  SPDAT=clow;

  while((SPSTAT&0x80)==0);

  cTempLow=SPDAT;

  SPI_CS=1;

  RevData=cTempHigh;

  RevData=(RevData<<8)+cTempLow;

  return RevData;

  }

  函數(shù)SendDataToCom實(shí)現(xiàn)向指定的擴(kuò)展串口發(fā)送單字節(jié)的數(shù)據(jù)。

  unsigned int SendDataToCom(unsigned char n,unsigned char ct)

  {

  unsigned char ch=0x80;

  unsigned int RevData;

  ch=ch|(n<<3);

  RevData=SendTo814X(ch,c);

  return RevData;

  }

  函數(shù)ReadRFIFOData實(shí)現(xiàn)讀取接收FIFO的數(shù)據(jù)。

  unsigned int ReadRFIFOData(void)

  {

  unsigned int RevData;

  RevData=SendTo814X(0x00,0x00);

  return RevData;

  }

3 功能測試與總結(jié)

 ?。?)測試人機(jī)交互接口,通過按鍵與LCD配合,能夠正常設(shè)定參數(shù)。

  (2)PC作為上位機(jī)利用串口助手這個(gè)工具,通過RS232接口發(fā)送指定的報(bào)文到串口擴(kuò)展器,從擴(kuò)展串口發(fā)出的數(shù)據(jù),也通過串口助手顯示出來。編輯不同的報(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ī)查詢時(shí),以相應(yīng)的報(bào)文回答。

 ?。?)控制其他參數(shù)不變,修改某一個(gè)參數(shù),例如波特率,重新測試,均返回相應(yīng)的報(bào)文。

  本裝置以通用的單片機(jī)P89LPC931為核心,外擴(kuò)GM8142擴(kuò)展串口模塊和人機(jī)交互模塊,可應(yīng)用于工業(yè)控制領(lǐng)域要求多串口的場合。經(jīng)過詳細(xì)測試,該串口擴(kuò)展器可以實(shí)現(xiàn)數(shù)據(jù)的成功轉(zhuǎn)發(fā),轉(zhuǎn)發(fā)數(shù)據(jù)精確可靠,具有很強(qiáng)的實(shí)用價(jià)值。

參考文獻(xiàn)

  [1] 張毅剛.單片機(jī)原理及應(yīng)用[M].北京:高等教育出版社,2003.

  [2] 成都國騰微電子.GM8141/2數(shù)據(jù)手冊[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].電子測量技術(shù),2004(3):43-44.


此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。