余毅,蘇淑靖
(中北大學省部共建動態測試技術國家重點實驗室,山西太原 030000)
隨著網絡技術的迅猛發展,讓全部設備接入網絡已成為信息通信發展的必然趨勢[1]。而傳統工業設備使用的串口接口不容易更改,因此設計開發低成本、便捷、高穩定性的以太網串口服務器,成為一種工業設備聯網的實用性方案。
目前主流的串口服務器設計方案有以下兩種:ARM+網絡控制器芯片、單片機+網絡控制芯片。文獻[2-4]中采用的基于ARM 芯片+網絡控制器芯片的設計方案,雖然通道數量多、支持多種工作模式,但結構復雜、面積龐大,不易于開發。文獻[5-7]中采用的基于單片機+硬件協議棧芯片的設計方案,雖然易于開發、成本較低,但大部分功能單一,僅僅實現了單一串口類型或者單一通道的設備聯網,不具備實用性。
該文采用的方案在單片機+硬件協議棧芯片的基礎上添加了串口擴展電路和RS-232/RS-485 自適應電路,將串口服務器的通道數擴展至8 個,并且能夠兼容RS-232 和RS-485 的串口設備,兼顧了其成本與實用性。
串口服務器是一種通信協議轉換器[8]。其設計分為硬件設計和軟件設計兩個部分。其中硬件設計部分又分為主控模塊、以太網接口模塊、串口通信模塊和供電電源模塊。系統硬件整體框圖如圖1所示。

圖1 系統硬件整體框圖
主控單元以STM32F103RCT6 為核心,該芯片采用表面貼片的64 管腳LQFP 封裝,工作電壓為2.0~3.6 V,同時配備3 路串口SPI 接口(用于控制以太網芯片收發數據和連接串口擴展芯片)和5 路USART接口(用于實現串口通信)。
該設計采用南京沁恒微電子的一款國產TCP/IP網絡協議棧芯片CH395Q,該芯片支持兩種通信接口:SPI 接口和異步串口,能夠方便地與單片機系統進行通信。CH395Q 引腳簡圖如圖2 所示。

圖2 CH395Q引腳簡圖
CH395Q 芯片采用QFN 封裝,共64 個引腳,其中VCC33 引腳與VCC18 引腳為供電端,分別為3.3 V、1.8 V 電源輸入,一般外接0.1 μF 電容去耦;引腳4、5、7 和8 分別為以太網RXP、RXN、TXP、TXN 信號端,用于連接網口接插件HR911105A。接插件HR911105A集成了隔離變壓器和RJ-45 接口,簡化了硬件電路設計[9]。XO、XI 引腳10、11 外接32 MHz 晶振;SEL 引腳27 為通信接口選擇端;引腳57 和58 分別為異步串口的輸入輸出端;引腳59、60、61 和62 分別為SPI通信的片選、時鐘信號、輸入和輸出端。主控芯片STM32 可以通過片選信號選擇其中的一種通信方式來控制CH395Q 芯片進行以太網通信。
RS-232 標準接口是一種常用的串口通信接口標準,其傳輸距離約為15 m,異步數據傳輸速率在0~20 kbps范圍內[10],多用于設備之間點對點通信。相比RS-232 串口通信,RS-485 通信距離遠、傳輸速率快,在100 kbps 傳輸速率下,通信距離可達1 200 m,同時還增加了多點通信及抗干擾能力。
由于RS-232 與RS-485 串口通信應用場景不同且同樣被廣泛使用,所以為使得串口服務器能兼容更多的串口設備,該系統設計了RS-232 與RS-485兩個串口通信模塊,并使用SN75179 芯片實現兩種串口通信的相互轉換。串口通信模塊選用Maxim 公司的MAX3232 和MAX491 電平轉換芯片,MAX491采用+5 V 單一電源供電,傳輸速率可高達2.5 Mbps。該系統共8 路串口,串口通信原理圖如圖3 所示。

圖3 串口通信原理圖
由于主控芯片STM32F103RCT6只有五個USART串口,而系統需要設計8 路串口,所以采用串口擴展芯片WK2124 將主控芯片上的一路SPI 轉換成4 路USART 串口。圖4 為串口擴展芯片WK2124 工作原理圖。

圖4 擴展芯片WK2124工作原理圖
WK2124 串口擴展芯片可以將一路SPI 主接口轉換成4 路全雙工的異步串口。WK2124 內置可編程的波特率發生器,可產生16X 系統時鐘的分頻系數,而系統時鐘由外部晶振生成,不同的晶振頻率則對應了不同的串口波特率設置表,其計算公式為:

式中,fs為系統時鐘頻率,baud 為需要設置的波特率,Reg 為計算結果,最后通過特殊換算填入寄存器。
由于WK2124 內部對每個串口子通道都設有接收和發送的256 字節FIFO,所以用戶可以通過設置波特率發生器來控制移位寄存器調節每個子通道的波特率。同時WK2124 還內設中斷控制寄存器,用戶可通過設置寄存器參數來控制各個子串口通道的狀態。
系統通過外部電源接入供電,外部電源的電壓范圍為DC 12~54 V。為使得外部電源能夠為系統中各個模塊供電,首先使用降壓芯片MP2494 將外部電源轉換為5 V 的電壓輸出,再通過電平轉換芯片TLV1117 得到3.3 V 和1.8 V 的輸出電壓。電源電路圖如圖5 所示,MP2494 是一個電流模式的降壓調節器,由振蕩電路、電流感應放大電路、斜坡電路、補償電路、保護電路等組成。其中VIN 引腳是電源電壓輸入端,輸入電壓范圍為+4.5~+55 V;EN 引腳為輸入控制端;SW 引腳和BST 引腳之間連接一個電容器,形成一個橫跨電源開關驅動的浮動電源。在VIN 接入外部電源后,即可得到一個5 V 左右的輸出電壓VOUT。TLV1117-33 和TLV1117-18 是正向低壓降穩壓器,輸入電壓范圍都為2.7~15 V,適用溫度范圍為-40~+125 ℃,可分別輸出3.3 V和1.8 V的電壓。

圖5 電源電路圖
為了實現串口與以太網的相互轉換,該系統在ARM Cortex-M3 處理器中運行嵌入式操作系統,連接TCP/IP 協議棧硬件芯片,實現協議轉換。如圖6所示,以串口轉以太網流程為例。系統在完成串口初始化設置后,監測串口數據的接收,判斷是否打開Socket,然后等待8 路串口數據處理完成,存入數據緩沖區后建立Socket 連接,最后對數據緩沖區的數據進行打包,并由網口端發送出來。以UDP 模式為例簡述CH395Q 的初始化過程如下:

圖6 串口轉以太網流程圖
①發送CMD_SET_MAC_ADDR 設置MAC 地址;
②發送CMD_SET_IP_ADDR 設置IP 地址;
③發送CMD_SET_GWIP_ADDR設置網關IP地址;
④發送CMD_SET_MASK_ADDR 設置子網掩碼;
⑤發送CMD_SET_PROTO_TYPE_SN設置Socket工作在UDP 模式;
⑥發送CMD_SET_IP_ADDR_SN設置目的IP地址;
⑦發送CMD_SET_DES_PORT_SN設置目的端口;
⑧發送CMD_SET_SOUR_PORT_SN設置源端口;
⑨發送CMD_OPEN_SOCKET_TYPE打開Socket;
⑩命令延時2 ms 以上,獲取⑨的執行狀態,返回BUSY 則再次執行⑨,返回SUCCESS 則表示成功,其余皆為失敗。
嵌入式操作系統以軟件應用為中心,從軟件和硬件的實際需求出發,管理調配各種硬件資源[11]。移植嵌入式操作系統能夠提高系統開發效率。能夠移植到STM32 的實時操作系統并不多,有以下五種:μClinux、μC/OS-Ⅱ、eCos、FreeRTOS 和rt-thread。由于μC/OS-Ⅱ實時操作系統內核小、任務多、系統服務豐富、容易使用[12],因此,該設計選用它作為嵌入式實時操作系統。嵌入式實時操作系統主要的任務是建立消息隊列與任務來調控管理各個通道的數據收發及通信。
在各種協議棧中TCP/IP 協議棧得到了最廣泛的使用,它已成為現代因特網的基礎和標準協議[13]。串口服務器支持的UDP 協議是一種簡單的、非連接的傳輸層協議,也是標準TCP/IP 協議棧中多種處理協議的一種[14]。不同于TCP 協議的高可靠性,UDP無法確保數據報文準確傳輸。系統中使用的以太網芯片CH395Q 內置TCP/IP 協議棧固件,所以不需要在系統中用軟件方式編寫復雜的TCP/IP 協議,減少了系統程序設計的工作量。系統以太網幀格式如圖7所示。

圖7 以太網幀格式
TYPE 表示幀數據類型,NUMBER 為串口通道號,LENGTH 為數據長度,CRC 為數據校驗位。
在整個系統開始工作前,要對其進行初始化設置[15]。主控芯片STM32F103RCT6 的初始化包括單片機各個端口功能的設置、內部寄存器配置以及時鐘中斷設置,如分別設置兩路SPI 通信端口,用于連接串口擴展芯片WK2124 以及以太網控制芯片CH395Q,初始化OSC_IN 和OSC_OUT 引腳上的8 MHz 晶振作為系統的主時鐘,將PA0 配置為中斷信號并設置中斷的開啟狀態。
串口擴展芯片的初始化是通過主控芯片STM 32F103RCT6 向WK2124 芯片的寄存器內寫入指令來完成的,主要包括了中斷寄存器、各路串口發送和接收數據的波特率、字長和校驗格式[16]。
由于以太網芯片CH395Q 內置TCP/IP 協議棧固件,所以其初始化只需要配置Socket接口。
由于設備資源有限,所以將串口端使用串口轉USB線連接至PC 機,以太網端用網線連接至PC 機,在一臺PC 機上模擬串口設備與網絡設備通信的過程。
實驗之前,根據需求設置各個參數,包括串口服務器的工作模式、IP地址、串口端口號和波特率,PC機的IP 地址和端口波特率(與串口服務器設置對應)。實驗過程:通過串口小助手和網絡調試助手軟件來對傳數據,每路串口設置9 600~115 200 bit/s 的不同波特率進行測試。波特率為9 600 bit/s 時如圖8 所示。

圖8 實驗測試圖
如表1 所示,經過實驗測試,系統單通道、多通道接收數據[17-18]都無明顯丟包現象,系統總體表現穩定。

表1 實驗測試數據
該文設計一種基于ARM Cortex-M3 處理器的嵌入式多路以太網串口服務器。利用一個串口轉換電路實現多種類型串口的自適應,以CH395Q 為核心搭建以太網端口,結合嵌入式實時操作系統和TCP/IP協議實現串口設備的網絡化信息傳輸與監控,是一種很好的串口設備聯網方案。