徐振中,張佳民,周 潔,孫立輝(通信作者)
(1 吉林化工學院信息與控制工程學院 吉林 吉林 132022)
(2 吉林市特種設備檢驗中心< 吉林市特種設備事故調查服務中心> 吉林 吉林 132022)
從傳輸介質來看,通信無非分為兩種,有線通信和無線通信[1]。在信息技術高速發(fā)展的今天,基于UART 的嵌入式設備之間可以非常簡便地通過各種通訊接口或借助各種無線模塊實現(xiàn)有線通信和無線通信。在對UART 的研究與應用中,許多工程技術及研究人員設計出各種應用方案。楊瀟等[2]針對單片機串行接口信號的楨格式,設計并實現(xiàn)了能夠直接對其進行調制/解調的通信方案。翟玉文等[3]介紹了一種基于RS485 現(xiàn)場總線的溫度采集模塊的設計方法。王影等[4]利用Wi-Fi 無線模塊與UART實現(xiàn)了基于STM32 的無線通信,并通過上位機進行數(shù)據(jù)收發(fā)。UART 在工程應用中是廣泛的,本文以帶有ARM 處理器的SoC 電路板和帶有51 系列單片機的MCU 電路板通過UART 進行通信為例,介紹串口通信原理,提出串口通信方案,驗證并總結實現(xiàn)串口通信的條件。
UART 屬于異步串口通信協(xié)議的一種,串口通信中重要的參數(shù)包括波特率、停止位、數(shù)據(jù)位、奇偶校驗位等[5]。通信前,通信雙方必須將這些參數(shù)約定相同。典型的串口通信僅需三根線,發(fā)送數(shù)據(jù)線、接收數(shù)據(jù)線和地線。要傳輸?shù)臄?shù)據(jù)會與起始位、停止位、校驗位共同封裝成數(shù)據(jù)包。數(shù)據(jù)可以是5、6、7、8 位等,通信時,要發(fā)送或接收的數(shù)據(jù)包會被逐位進行傳輸,數(shù)據(jù)傳輸速率由雙方約定的波特率決定。UART 數(shù)據(jù)幀格式及通信原理圖如圖1所示。
圖1 UART 數(shù)據(jù)幀格式及通信原理圖
常見的電平標準有TTL 電平、CMOS 電平、RS232 電平和RS485 電平等[6]。電平表示的是電壓的范圍。在數(shù)字電路中,由TTL 電子元器件構成的電路所使用的電平就稱為TTL 電平,TTL 電路的電源工作電壓為5 V,所以TTL 電平是相對于5 V 而言的。相較于TTL 電平,CMOS 電路的電源工作電壓的范圍就比較寬了,為3~18 V,因此,CMOS 電平的具體數(shù)值要依據(jù)當前電路的電源工作電壓來定。
RS232 和RS485 都規(guī)定了一種異步串行通信口的接口標準和總線標準,包括通信雙方的電氣特性、接口的機械特性、傳輸速率等內容。RS232 標準規(guī)定通信邏輯電平采用負邏輯,通信接頭常用DB-9 針連接頭。RS485 標準規(guī)定通信邏輯電平采用正邏輯,數(shù)據(jù)信號采用差分接收和平衡發(fā)送[7]。TTL、CMOS、RS232 和RS485 邏輯電平規(guī)定如表1所示。
表1 TTL、CMOS、RS232、RS485 邏輯電平規(guī)定
使用UART 進行串口通信時往往需要涉及到電平轉換和協(xié)議轉換。嵌入式設備使用的電平為TTL/CMOS 電平,因此,當嵌入式設備間采用RS232 或RS485 通信協(xié)議進行通信時,就需要在TTL/CMOS 電平和RS232 或RS485 電平之間進行轉換。一般在電子設備中,RS232 電平和TTL 電平之間的通信電平轉換芯片可使用MAX232[8],RS485 電平和TTL 電平之間可使用MAX485[9]。
在電腦上,串行通信端口的關鍵部件也是UART,串行通信端口即COM 口,簡稱為串口。由于歷史等原因,電腦串口使用的接口標準為RS232,臺式機或傳統(tǒng)筆記本主板通常會有DB-9 針連接頭,而隨著時代的發(fā)展,9 針串口已基本被USB 口所取代。當用戶需要進行串口通信時,就需要用到USB 轉串口模塊,這個模塊可看作是一個USB2.0 協(xié)議轉串口通信協(xié)議的轉換器,可用CH340 系列芯片實現(xiàn)[10]。
串口通信雙方選用一個帶有ARM 處理器的SoC 電路板和一個帶有51 系列單片機的MCU 電路板。SoC 電路板的供電電壓為5~16 V,ARM 處理器的具體型號為i.MX6ULL,有多達8 個UART,單片機的具體型號為STC15F2K60S2,工作電壓為5 V,有2 個UART。SoC 電路板上還有RS232接口和RS485 接口,兩個電路板上的RXD、TXD、GND 引腳均已引出。實驗硬件示意圖如圖2所示。
圖2 實驗硬件平臺示意圖
由于硬件實驗平臺的限制,經過分析,現(xiàn)列出合理的串口通信連接方案如下。
(1)有線連接
方案一:雙方使用RS232 通信協(xié)議來實現(xiàn)通信,這樣,就需要在MCU 端加上一個帶DB-9 母頭的RS232 模塊,然后再通過兩端為DB-9 公頭的RS232 接口電纜進行連接。RS232 通信電路連接圖如圖3所示。
圖3 RS232 通信電路連接圖
方案二:雙方使用RS485 通信協(xié)議來實現(xiàn)通信,這樣,就需要在MCU 端加上一個RS485 模塊,然后再通過兩根杜邦線進行連接。需要說明的是,接線端對應連接,即A-A 連接,B-B 連接。此外,終端的120 Ω 電阻不可省。RS485 通信電路連接圖如圖4所示。
圖4 RS485 通信電路連接圖
(2)無線連接
方案三:雙方使用藍牙、Wi-Fi 等帶有無線功能的模塊來實現(xiàn)通信[11],這樣,就需要在SoC 端和MCU 端各加上一個無線模塊,然后設置配對來實現(xiàn)通信連接。需要說明的是,所使用的無線模塊需要支持UART 接口。藍牙通信電路連接圖如圖5所示。
圖5 藍牙通信電路連接圖
在實驗硬件平臺上,兩個電路板端都預留了兩個LED燈、兩個按鍵以及一個USB 轉串口。
(1)軟件方案設計
逐個實施上述三個硬件方案,再通過編程建立軟件連接,最終實現(xiàn)雙方通信。
軟件方案設計功能:初始化SoC 端和MCU 端的串口通信,雙方建立有線或無線連接后,分別按下各自端的按鍵,可實現(xiàn)數(shù)據(jù)發(fā)送,對方端接收到數(shù)據(jù)后,通過USB 轉串口顯示在電腦上的串口調試軟件上,并根據(jù)不同數(shù)據(jù)做出響應。比如MCU 端按下KEY1,發(fā)送字符串“Hello-I am MCU.”,再按下KEY2,發(fā)送字符“1”。SoC 端接收到字符串后,直接顯示在串口調試軟件上,接收到字符“1”后,點亮LED1燈。
(2)驗證方案實施
為驗證雙方通信過程是否正常,需要用到串口調試工具。本文采用QT 開發(fā)出一個串口調試軟件,該軟件具有串口選擇、參數(shù)設定、接收和發(fā)送信息等基本功能,能夠滿足驗證方案的需要。
軟件方案實施后,通過USB 線將兩個電路板分別連接到電腦上的不同USB 口,打開串口調試軟件,并選擇雙方約定好的通信參數(shù),再分別按下各自板端的按鍵,通過查看對方端串口調試工具輸出的調試信息或板端LED 燈狀態(tài)來驗證雙方通信是否成功。
以方案二RS485 通信為例,當SoC 端和MCU 端上電后,首先通過各自USB 轉串口輸出初始化成功信息,即“xxx RS485 Init Success!”。然后,按下SoC 端上的KEY1向MCU 端發(fā)送信息“Hello-I am SoC.”,當MCU 端接收到信息后通過USB 轉串口顯示到串口調試軟件的接收區(qū)中。MCU 端操作亦如此。RS485 通信調試信息圖如圖6所示。
圖6 RS485 通信調試信息圖
在實驗過程中發(fā)現(xiàn),嵌入式設備間能否成功通信的關鍵在于通信雙方在參數(shù)約定一致的條件下,一端的RXD 與另一端的TXD 是否正確連接。此外,由于有些單片機只有一個UART,當用于電腦端串口調試時,就無法再用于設備間通信,否則就會無法正常工作。因此,在實際應用時只能選擇多串口的單片機??傊?,基于UART 的嵌入式設備間連接方式的研究與驗證有助于對UART的研究與應用。