錢震宇 肖昌漢
(海軍工程大學,武漢 430033)
隨著單片機在工業控制等領域的應用越來越廣泛,在很多場合,需要單片機獨立的作為下位機對現場的信號進行采集與處理,并與上位機進行通信,這往往會遇到單片機的串口不夠用的情況,所以需要對串行口進行擴展。
在這個開發案例中需要完成一個串行口的三收一發的電路,所以一般的雙串口單片機不滿足要求,需要專門的串口擴展芯片來完成所需的功能,經查閱了相關資料,常用的芯片有GM8125和SP2538等,但是考慮到通信波特率的要求,SP2538的子串口的通信波特率最高只有 9600bps,無法滿足所需的要求,所以采用GM8125設計相關電路。
GM8125 可以將一個全雙工的標準串口擴展成 5 個標準串口,并能通過外部引腳控制串口擴展模式:單通道工作模式和多通道工作模式,即可以指定一個子串口和母串口以相同的波特率單一的工作,也可以讓所有子串口在母串口波特率基礎上分頻同時工作。
該芯片工作在多通道模式下時,子串口能主動響應從機發送的數據,并由母串口發送給主機,同時返回子串口地址。該模式使每個從機的發送要求都能被及時地響應,即使所有從機同時有發送要求,數據也不會丟失,基本實現了主控單元和外設通訊的實時性。該芯片母串口和子串口的工作波特率可由軟件調節,而不需要修改外部電路和晶振頻率。
芯片的主要特征如下:
1) 采用寫控制字的方式對芯片進行控制,各子串口波特率可調(統一調節),數據格式10位或11 位可選;
2) 單通道模式下,最高波特率支持
20Mbps;多通道模式下,子串口最高波特率38400bps,子串口數:5 個;
3) 由一個引腳選擇芯片的工作方式是單通道工作模式還是多通道工作模式、在單通道工作模式下,芯片工作無需初始化設置,工作串口由地址線控制選擇、在多通道工作模式下,各子串口的波特率等于母串口波特率的 6 分頻,接收時地址線 SRADD2~0 向 MCU返回接收子通道的地址,MCU接收到母串口送來的數據后就可根據SRADD2~0 狀態判斷數據是從哪一個子串口送來的;發送時先由MCU 選擇子串口再向母串口發送數據;
4) 與標準串口通訊格式兼容,TTL 電平輸出,寬工作電壓:2.3~6.7V,輸出波特率誤差小于0.2%,輸入波特率誤差要求小于2.8%,每bit采樣16 次,提高數據正確性,輸入地址引腳有50~80 kΩ Pull-Down 電阻,其它輸入引腳有50~80 kΩ Pull-Up 電阻(OSCI 除外)。
硬件部分:由51單片機和GM8125組成的主控模塊,RS-422模塊,看門狗模塊。
1) 主控模塊:GM8125的輸出地址線STADD0~2由單片機P0.0~P0.2控制,完成對發送子串口的選擇控制;輸入地址線 SRADD0~2由單片機的P0.4~P0.6控制,檢測判別串口數據來源;MS模式引腳選擇由P3.6控制,實現單通道和多通道的選擇,讀寫命令字的控制;RST復位引腳和 P3.7相連,單片機上電后對其進行復位操作;單片機的TX和RX分別與GM8125的RX0和TX0相聯,完成單片機與GM8125之間的數據傳送,在多通道初始化時寫命令字,對GM8125的通信方式進行設置。
2) RS-422模塊:采用MAX488構成全雙工的串口模塊,完成串口信號差動發送、接收。
RS-422A是由RS-232C發展而來,定義了一種平衡接口,解決了RS-232C的通信距離短,通信速率不高的缺點。這里用MAX232完成計算機串口和TTL/CMOS電平的轉換。MAX488主要是用來完成RS-232C和RS-422A的信號轉換,使串口信號差動發送、接收,抑制共模干擾。
3) 看門狗模塊:MAX813作為系統的看門狗電路有兩個作用:
Ⅰ. 程序異常的監控:當系統程序跑飛,不能正常工作時,對單片機復位。
Ⅱ. 電源電壓異常的監控:當電源太低不足以使系統正常工作時,促使系統保存現場的重要數據,單片機低功耗工作;當電源正常后,單片機繼續工作。

圖1 串口擴展硬件連接示意圖
本系統主要完成的是對下位機發送來RS-422串口數據進行及時的轉發,判斷串口數據的來源,做出相應的處理。
本系統對每個串口的數據都建立了相應的存儲區,下一次的數據都對前一次的數據進行覆蓋,當系統檢測到某個下位機發來的數據已經完全接收到后,就會依據設定的通信協議發送給上位機。
軟件分為:主監控程序,初始化子程序,串口中斷接收子程序,發送子程序,現場保護子程序。
主監控程序:對各個標識符進行監控,調用相應的處理和發送程序。
初始化子程序:對單片機寄存器的清零,設置單片機的串口通信速率和方式,對 GM8125寫對應的命令字,設置它的串口通信速率和方式,并在程序中做相關的檢驗,測試初始化是否成功。
串口中斷接收子程序:串口的數據采用中斷接收的方式,響應的速度較快,有利于通信的實時性要求。
發送子程序:把接收到的某個端口的數據做相應處理后,發送至上位機。
現場保護子程序:當單片機的工作電壓太低時,單片機迅速響應中斷,把重要數據保存至寄存器區并低功耗工作,系統電壓正常后,在恢復現場重新工作。
在單片機的主監控程序和串口中斷接收程序中加入喂狗指令,以防系統跑飛,加強系統的抗干擾能力。
程序的流程圖如圖2。

圖2 串口擴展軟件流程圖
經過對實際設備的安裝調試,板卡能達到要求,通信良好,抗干擾的能力較好,取得滿意的效果。此板卡也可應用于其他單片機控制系統中。
[1]楊治潔. 單片機原理與應用. 北京: 北京科海電子出版社, 2009.
[2]GM8125技術手冊. 成都國騰微電子有限公司.
[3]郭惠, 解書鋼. Pretel 99SE常用功能與應用. 北京: 電子工業出版社, 2008.