錢震宇 肖昌漢
(海軍工程大學(xué),武漢 430033)
隨著單片機(jī)在工業(yè)控制等領(lǐng)域的應(yīng)用越來越廣泛,在很多場合,需要單片機(jī)獨立的作為下位機(jī)對現(xiàn)場的信號進(jìn)行采集與處理,并與上位機(jī)進(jìn)行通信,這往往會遇到單片機(jī)的串口不夠用的情況,所以需要對串行口進(jìn)行擴(kuò)展。
在這個開發(fā)案例中需要完成一個串行口的三收一發(fā)的電路,所以一般的雙串口單片機(jī)不滿足要求,需要專門的串口擴(kuò)展芯片來完成所需的功能,經(jīng)查閱了相關(guān)資料,常用的芯片有GM8125和SP2538等,但是考慮到通信波特率的要求,SP2538的子串口的通信波特率最高只有 9600bps,無法滿足所需的要求,所以采用GM8125設(shè)計相關(guān)電路。
GM8125 可以將一個全雙工的標(biāo)準(zhǔn)串口擴(kuò)展成 5 個標(biāo)準(zhǔn)串口,并能通過外部引腳控制串口擴(kuò)展模式:單通道工作模式和多通道工作模式,即可以指定一個子串口和母串口以相同的波特率單一的工作,也可以讓所有子串口在母串口波特率基礎(chǔ)上分頻同時工作。
該芯片工作在多通道模式下時,子串口能主動響應(yīng)從機(jī)發(fā)送的數(shù)據(jù),并由母串口發(fā)送給主機(jī),同時返回子串口地址。該模式使每個從機(jī)的發(fā)送要求都能被及時地響應(yīng),即使所有從機(jī)同時有發(fā)送要求,數(shù)據(jù)也不會丟失,基本實現(xiàn)了主控單元和外設(shè)通訊的實時性。該芯片母串口和子串口的工作波特率可由軟件調(diào)節(jié),而不需要修改外部電路和晶振頻率。
芯片的主要特征如下:
1) 采用寫控制字的方式對芯片進(jìn)行控制,各子串口波特率可調(diào)(統(tǒng)一調(diào)節(jié)),數(shù)據(jù)格式10位或11 位可選;
2) 單通道模式下,最高波特率支持
20Mbps;多通道模式下,子串口最高波特率38400bps,子串口數(shù):5 個;
3) 由一個引腳選擇芯片的工作方式是單通道工作模式還是多通道工作模式、在單通道工作模式下,芯片工作無需初始化設(shè)置,工作串口由地址線控制選擇、在多通道工作模式下,各子串口的波特率等于母串口波特率的 6 分頻,接收時地址線 SRADD2~0 向 MCU返回接收子通道的地址,MCU接收到母串口送來的數(shù)據(jù)后就可根據(jù)SRADD2~0 狀態(tài)判斷數(shù)據(jù)是從哪一個子串口送來的;發(fā)送時先由MCU 選擇子串口再向母串口發(fā)送數(shù)據(jù);
4) 與標(biāo)準(zhǔn)串口通訊格式兼容,TTL 電平輸出,寬工作電壓:2.3~6.7V,輸出波特率誤差小于0.2%,輸入波特率誤差要求小于2.8%,每bit采樣16 次,提高數(shù)據(jù)正確性,輸入地址引腳有50~80 kΩ Pull-Down 電阻,其它輸入引腳有50~80 kΩ Pull-Up 電阻(OSCI 除外)。
硬件部分:由51單片機(jī)和GM8125組成的主控模塊,RS-422模塊,看門狗模塊。
1) 主控模塊:GM8125的輸出地址線STADD0~2由單片機(jī)P0.0~P0.2控制,完成對發(fā)送子串口的選擇控制;輸入地址線 SRADD0~2由單片機(jī)的P0.4~P0.6控制,檢測判別串口數(shù)據(jù)來源;MS模式引腳選擇由P3.6控制,實現(xiàn)單通道和多通道的選擇,讀寫命令字的控制;RST復(fù)位引腳和 P3.7相連,單片機(jī)上電后對其進(jìn)行復(fù)位操作;單片機(jī)的TX和RX分別與GM8125的RX0和TX0相聯(lián),完成單片機(jī)與GM8125之間的數(shù)據(jù)傳送,在多通道初始化時寫命令字,對GM8125的通信方式進(jìn)行設(shè)置。
2) RS-422模塊:采用MAX488構(gòu)成全雙工的串口模塊,完成串口信號差動發(fā)送、接收。
RS-422A是由RS-232C發(fā)展而來,定義了一種平衡接口,解決了RS-232C的通信距離短,通信速率不高的缺點。這里用MAX232完成計算機(jī)串口和TTL/CMOS電平的轉(zhuǎn)換。MAX488主要是用來完成RS-232C和RS-422A的信號轉(zhuǎn)換,使串口信號差動發(fā)送、接收,抑制共模干擾。
3) 看門狗模塊:MAX813作為系統(tǒng)的看門狗電路有兩個作用:
Ⅰ. 程序異常的監(jiān)控:當(dāng)系統(tǒng)程序跑飛,不能正常工作時,對單片機(jī)復(fù)位。
Ⅱ. 電源電壓異常的監(jiān)控:當(dāng)電源太低不足以使系統(tǒng)正常工作時,促使系統(tǒng)保存現(xiàn)場的重要數(shù)據(jù),單片機(jī)低功耗工作;當(dāng)電源正常后,單片機(jī)繼續(xù)工作。
圖1 串口擴(kuò)展硬件連接示意圖
本系統(tǒng)主要完成的是對下位機(jī)發(fā)送來RS-422串口數(shù)據(jù)進(jìn)行及時的轉(zhuǎn)發(fā),判斷串口數(shù)據(jù)的來源,做出相應(yīng)的處理。
本系統(tǒng)對每個串口的數(shù)據(jù)都建立了相應(yīng)的存儲區(qū),下一次的數(shù)據(jù)都對前一次的數(shù)據(jù)進(jìn)行覆蓋,當(dāng)系統(tǒng)檢測到某個下位機(jī)發(fā)來的數(shù)據(jù)已經(jīng)完全接收到后,就會依據(jù)設(shè)定的通信協(xié)議發(fā)送給上位機(jī)。
軟件分為:主監(jiān)控程序,初始化子程序,串口中斷接收子程序,發(fā)送子程序,現(xiàn)場保護(hù)子程序。
主監(jiān)控程序:對各個標(biāo)識符進(jìn)行監(jiān)控,調(diào)用相應(yīng)的處理和發(fā)送程序。
初始化子程序:對單片機(jī)寄存器的清零,設(shè)置單片機(jī)的串口通信速率和方式,對 GM8125寫對應(yīng)的命令字,設(shè)置它的串口通信速率和方式,并在程序中做相關(guān)的檢驗,測試初始化是否成功。
串口中斷接收子程序:串口的數(shù)據(jù)采用中斷接收的方式,響應(yīng)的速度較快,有利于通信的實時性要求。
發(fā)送子程序:把接收到的某個端口的數(shù)據(jù)做相應(yīng)處理后,發(fā)送至上位機(jī)。
現(xiàn)場保護(hù)子程序:當(dāng)單片機(jī)的工作電壓太低時,單片機(jī)迅速響應(yīng)中斷,把重要數(shù)據(jù)保存至寄存器區(qū)并低功耗工作,系統(tǒng)電壓正常后,在恢復(fù)現(xiàn)場重新工作。
在單片機(jī)的主監(jiān)控程序和串口中斷接收程序中加入喂狗指令,以防系統(tǒng)跑飛,加強(qiáng)系統(tǒng)的抗干擾能力。
程序的流程圖如圖2。
圖2 串口擴(kuò)展軟件流程圖
經(jīng)過對實際設(shè)備的安裝調(diào)試,板卡能達(dá)到要求,通信良好,抗干擾的能力較好,取得滿意的效果。此板卡也可應(yīng)用于其他單片機(jī)控制系統(tǒng)中。
[1]楊治潔. 單片機(jī)原理與應(yīng)用. 北京: 北京科海電子出版社, 2009.
[2]GM8125技術(shù)手冊. 成都國騰微電子有限公司.
[3]郭惠, 解書鋼. Pretel 99SE常用功能與應(yīng)用. 北京: 電子工業(yè)出版社, 2008.