異步串口是目前工業(yè)設(shè)備最主要的通訊接口之一。在具體的工業(yè)現(xiàn)場(chǎng)中,串口的電氣接口以RS232和RS485最為普遍。英創(chuàng)公司的工控主板產(chǎn)品在串口方面都有較強(qiáng)的配置,如EM9160、EM9260、EM9360都有6個(gè)獨(dú)立串口,這些串口大多以TTL信號(hào)形式從板卡的管腳輸入輸出,客戶需要在自己的應(yīng)用底板上加入相應(yīng)的驅(qū)動(dòng)電路單元,以獲得所需的串口接口,如RS232或RS485。在實(shí)際的應(yīng)用中,由于現(xiàn)場(chǎng)的設(shè)備串口接口的情況并不確定,這樣就要求客戶設(shè)備同時(shí)具備RS232和RS485兩種接口的功能。本文的主要目的就是介紹同時(shí)驅(qū)動(dòng)RS232和RS485兩種串行接口的電路原理,以及在應(yīng)用程序中相應(yīng)的設(shè)置要求。
RS232接口是采用正負(fù)電平的單極性信號(hào),一般以3線制的接口最為普遍,信號(hào)包括RS232_TX、RS232_RX及GND,具有全雙工通訊能力。RS485接口采用一對(duì)TTL電平的差分信號(hào)RS485_D-和RS485_D+,只能半雙工通訊,在通訊方向(接收或發(fā)送)的切換方面,一般有兩種方式:一種方式是利用TTL_TXD經(jīng)過一定處理作為方向控制,這種方式也稱為自動(dòng)方向切換方式;另一種方式是使用串口的RTS控制線來(lái)控制方向,RTS有效時(shí)處于發(fā)送狀態(tài),無(wú)效時(shí)處于接收狀態(tài)。
在實(shí)際應(yīng)用中,只能有一種接口與設(shè)備相連。在這一前提下,實(shí)現(xiàn)同時(shí)驅(qū)動(dòng)RS232和RS485電路的關(guān)鍵是對(duì)來(lái)自RS232和RS485電路的接收信號(hào)232_RXD、485_RXD進(jìn)行“線與”操作,“線與”通過兩個(gè)二極管來(lái)實(shí)現(xiàn),即下面電路的D1和D2。
對(duì)RS485驅(qū)動(dòng)電路,方向控制方式的選擇是通過焊接R12或R13來(lái)實(shí)現(xiàn)的,焊接R12選擇RTS方法控制方式,焊接R13則選擇自動(dòng)方向控制方式。RTS方法控制方式的優(yōu)點(diǎn)是在發(fā)送階段,驅(qū)動(dòng)芯片(電路中為75LBC184)始終處于輸出狀態(tài),抗干擾能力更強(qiáng);而自動(dòng)方向控制方案,可使串口操作程序完全一樣,而無(wú)論物理上是RS232還是RS485接口,自動(dòng)方向控制方案需要在RS485的差分信號(hào)線上分別接上拉和下拉電阻,其阻值大小與驅(qū)動(dòng)的線長(zhǎng)有關(guān),一般連線越長(zhǎng),電阻越小。圖1是一種典型的同時(shí)驅(qū)動(dòng)RS232和RS485接口的電路原理圖(點(diǎn)擊圖片可獲得完整電路圖),僅供參考。

圖1 同時(shí)驅(qū)動(dòng)RS232和RS485接口電路
英創(chuàng)公司的ARM9工控主板均預(yù)裝了Windows CE操作系統(tǒng),CE操作系統(tǒng)提供了完備的串口操作API函數(shù),這些函數(shù)可在eVC環(huán)境下直接調(diào)用。對(duì)RS232接口,應(yīng)用沒有任何專門操作,只需打開串口,設(shè)置串口的基本參數(shù),如波特率等,就可以進(jìn)行接口的讀寫了。對(duì)RS485接口,若需要使用RTS方向控制方案,則在設(shè)置串口參數(shù)時(shí),需要特別地把RTS控制段設(shè)置為RTS_CONTROL_TOGGLE,相關(guān)的代碼如下所示:
DCB dcb; // 定義參數(shù)控制塊 GetCommState( m_hSer, &dcb ); // 讀取當(dāng)前參數(shù)塊 dcb.fRtsControl = RTS_CONTROL_TOGGLE; // 設(shè)置RTS方向控制 SetCommState(m_hSer, &dcb); // 重設(shè)串口參數(shù)
上述代碼中m_hSer為打開串口文件“COMx:”的文件句柄。
為了充分利用工控主板的管腳資源,英創(chuàng)公司的EM9160、EM9260、EM9360這三種嵌入式工控主板的串口RTS信號(hào)一般都是與GPIO信號(hào)復(fù)用管腳的。在缺省配置下,EM9160和EM9260只有COM2和COM4支持RS485的RTS方向控制方案,而EM9360的6個(gè)串口均支持RS485的RTS方向控制方案。具體的管腳配置如下表所示:
板卡型號(hào) |
串口號(hào) |
RTSn管腳 |
備注 |
EM9160或 EM9260 |
COM2 |
RTS2n(CN1.16#) |
|
COM4 |
GPIO6(CN1.35#) |
|
EM9360 |
COM2 |
GPIO6(CN2.25#) |
當(dāng)使用任何RTSn功能時(shí), 精簡(jiǎn)ISA總線高位地址 SA5 – SA12被禁止。 |
COM3 |
GPIO7(CN2.26#) |
COM4 |
GPIO8(CN2.27#) |
COM5 |
GPIO9(CN2.28#) |
COM6 |
GPIO10(CN2.29#) |
COM7 |
GPIO11(CN2.30#) |
注意:所有的RTSn管腳都是低電平有效的信號(hào),即RTSn平時(shí)為高,串口處于接收狀態(tài);RTSn變低(RTS處于有效狀態(tài))表示串口處于發(fā)送狀態(tài)。
|