張峻豪,張曉龍,王 聰,李俊杰,楊磊青,高 鵬
(昆明理工大學(xué)機(jī)電工程學(xué)院,云南昆明 650500)
串行通訊在傳統(tǒng)的工業(yè)控制系統(tǒng)、監(jiān)控系統(tǒng)、醫(yī)療系統(tǒng)等領(lǐng)域應(yīng)用十分廣泛,其擁有簡(jiǎn)單、穩(wěn)定、性能可靠、維護(hù)方便、容易實(shí)現(xiàn)的優(yōu)點(diǎn),具有較好的數(shù)據(jù)傳輸能力和較高的安全性,在工業(yè)控制現(xiàn)場(chǎng)中的感應(yīng)器、檢測(cè)器等設(shè)備上都有應(yīng)用。但串行通訊有許多不足,如傳輸速度很慢、傳輸距離較短,在較大的系統(tǒng)控制中這些局限性使串行通訊總線變得十分復(fù)雜,不利于后續(xù)維修護(hù)理。
隨著“中國(guó)制造2025”以及智能制造戰(zhàn)略的實(shí)施,傳統(tǒng)的工業(yè)控制技術(shù)正迎來(lái)新的發(fā)展機(jī)遇,控制系統(tǒng)網(wǎng)絡(luò)化已成大趨勢(shì),以太網(wǎng)技術(shù)引入控制系統(tǒng)成為大方向。
學(xué)者對(duì)以太網(wǎng)串口服務(wù)器研究較多,如白晶晶[1]設(shè)計(jì)了基于Luminary LM3S8962 微控制器,并移植了嵌入式Uc/OS 實(shí)時(shí)系統(tǒng),實(shí)現(xiàn)了以太網(wǎng)、484 通訊協(xié)議和CAN 協(xié)議的轉(zhuǎn)換;范煒[2]設(shè)計(jì)了一款基于AT91RM9200 處理器及LXT971ALE 的串口服務(wù)器;楊洋[3]使 用RH Linux9.0 為ARM 處理器提供交叉工具移植Linux,為嵌入式串口服務(wù)器設(shè)計(jì)了服務(wù)器端與客戶端模式,此方案對(duì)軟件要求較高,系統(tǒng)比較冗雜;肖利平[4]設(shè)計(jì)的服務(wù)器軟件移植了LwIP 協(xié)議棧的兩部分代碼:①編寫操作系統(tǒng)模擬層相關(guān)代碼;②LwIP 接口初始設(shè)置及網(wǎng)卡驅(qū)動(dòng),并且在應(yīng)用程序設(shè)計(jì)方面采用中斷查詢方式,但此種方案的硬件成本較高;陳志星等[5]、Qi 等[6]則主要在以太網(wǎng)通訊協(xié)議上進(jìn)行了研究,比較了uc/IP、LwIP、uIP 等適用于嵌入式設(shè)備的協(xié)議棧,并最終選擇LwIP 協(xié)議棧來(lái)實(shí)現(xiàn)服務(wù)器構(gòu)建。
國(guó)外對(duì)以太網(wǎng)串口服務(wù)器研究更為深入,研究方向主要是以太網(wǎng)服務(wù)器的網(wǎng)絡(luò)芯片選擇、通訊協(xié)議研究以及設(shè)計(jì)方案優(yōu)化。Douglas[7]詳細(xì)介紹了主控芯片S1C33E07、以太網(wǎng)芯片DM9000A、LwIP 1.3.2 的移植以及驅(qū)動(dòng)程序?qū)崿F(xiàn),該系統(tǒng)能通過(guò)網(wǎng)絡(luò)進(jìn)行準(zhǔn)確、穩(wěn)定的通信;Adam[8]和Jing[9]重點(diǎn)研究了如何將Internet 與TCP/IP 進(jìn)行合作,描述了LwIP 的設(shè)計(jì)與實(shí)現(xiàn)。對(duì)實(shí)施方案和子系統(tǒng)中的算法作了規(guī)定,此外還提供了有關(guān)LwIP 的報(bào)告和一些使用LwIP 的代碼示例;Fabrício 等[10]通過(guò)研究DM9000A 高速以太網(wǎng)接口芯片,提出基于DM9000A 的伺服控制系統(tǒng)以太網(wǎng)接口,介紹了DM9000A 的工作原理和基本功能,給出DSP 的硬件接口方案以及初始化和收發(fā)器的軟件配置;討論和分析了嵌入式系統(tǒng)以太網(wǎng)接口實(shí)現(xiàn)的不同解決方案,討論了兩種基于低成本微控制器的方法并進(jìn)行比較,指出基于FPGA器件的方法可以在性能和開發(fā)成本之間達(dá)到最佳平衡。
結(jié)合以上國(guó)內(nèi)外研究可發(fā)現(xiàn)以下不足:①在硬件選擇上成本較高;②軟件設(shè)計(jì)大多在操作系統(tǒng)基礎(chǔ)上編寫程序,程序較冗雜、繁瑣,同時(shí)對(duì)軟件的要求比較高。因此,本文重點(diǎn)研究一種硬件成本低廉、軟件程序簡(jiǎn)明的串口服務(wù)器。
嵌入式串口服務(wù)器擁有串行接口和網(wǎng)絡(luò)接口,分別接入串行通訊設(shè)備和以太網(wǎng)客戶端,實(shí)現(xiàn)以太網(wǎng)客戶端與串行通訊設(shè)備的雙向數(shù)據(jù)傳輸,如圖1 所示。
硬件需滿足系統(tǒng)的技術(shù)指標(biāo)和實(shí)用性,軟件能實(shí)現(xiàn)系統(tǒng)基本功能?,F(xiàn)有串口服務(wù)器設(shè)計(jì)方案主要有:①ARM 芯片+網(wǎng)絡(luò)控制器芯片(軟件開發(fā)容易,硬件要求高);②普通單片機(jī)+網(wǎng)絡(luò)控制器芯片(成本很低,硬件和軟件開發(fā)繁瑣);③單芯片硬件協(xié)議棧(集成度高,穩(wěn)定性強(qiáng))。結(jié)合這3 種方案優(yōu)缺點(diǎn),本文選擇單芯片硬件協(xié)議棧,這是目前芯片高集成化發(fā)展方向。
該串口服務(wù)器由主控模塊、串口模塊、網(wǎng)絡(luò)端口模塊組成,實(shí)現(xiàn)串口與以太網(wǎng)端口之間的數(shù)據(jù)轉(zhuǎn)換功能,通過(guò)綜合考慮選擇目前最流行的STM32 系列處理器進(jìn)行開發(fā)[12]。STM32 擁有高性能、功耗低、成本低、開發(fā)方便等眾多優(yōu)勢(shì)[13]。由于本系統(tǒng)是基于以太網(wǎng)的串口服務(wù)器,出于系統(tǒng)開發(fā)的簡(jiǎn)潔性和成本考慮,最終選擇具有互聯(lián)功能的STM32F107 系列的STM32F107VCT6 作為系統(tǒng)主控芯片[14-16]。
硬件設(shè)計(jì)由主控模塊電路設(shè)計(jì)、電源電路設(shè)計(jì)、RS232串口電路設(shè)計(jì)、RS485 串口電路設(shè)計(jì)和以太網(wǎng)模塊電路設(shè)計(jì)5 部分組成[17-19]。
主控模塊是整個(gè)系統(tǒng)最核心部分,包括提供整個(gè)系統(tǒng)時(shí)鐘信號(hào)的外部時(shí)鐘電路、使硬件能夠復(fù)位的復(fù)位電路、能夠燒寫和下載程序的JTAG 接口電路。主控模塊電路設(shè)計(jì)如圖2 所示。
Fig.2 Main control module circuit圖2 主控模塊電路
(1)系統(tǒng)時(shí)鐘電路設(shè)計(jì)。STM32 采用外部晶振體震蕩方式給系統(tǒng)提供時(shí)鐘信號(hào),同時(shí)以太網(wǎng)芯片也需外部晶振來(lái)提供時(shí)鐘信號(hào),所以在系統(tǒng)的外部時(shí)鐘設(shè)計(jì)中采用25MHz 的晶體振蕩器作為整個(gè)系統(tǒng)時(shí)鐘信號(hào)來(lái)源。
(2)復(fù)位電路設(shè)計(jì)。系統(tǒng)的復(fù)位包括外部復(fù)位和上電復(fù)位,電路由RC 電路和復(fù)位按鍵組成,連接在主控芯片的NRST 復(fù)位引腳上。當(dāng)主控芯片的復(fù)位引腳持續(xù)一段時(shí)間的低電平,芯片就會(huì)發(fā)生復(fù)位。
(3)JTAG 接口電路設(shè)計(jì)。使用標(biāo)準(zhǔn)的20 引腳JTAG 接口,并根據(jù)設(shè)計(jì)經(jīng)驗(yàn)在相應(yīng)的引腳連接上拉電阻。
(4)除此之外,在主控芯片的VVD 引腳接上濾波電容,使其盡量靠近主控芯片的引腳。
系統(tǒng)使用5VDC 電源供電,但系統(tǒng)工作電壓為3.3V,因此需要將5V 的電通過(guò)降壓穩(wěn)壓器轉(zhuǎn)化成3.3V 的電。選擇目前十分流行的降壓穩(wěn)壓器AMS1117 系列芯片,因?yàn)椋孩賰r(jià)格便宜;②管腳定義簡(jiǎn)單,一共4 個(gè)腳,一個(gè)GND,一個(gè)固定腳,兩個(gè)引腳一進(jìn)一出;③能實(shí)現(xiàn)電壓轉(zhuǎn)換和穩(wěn)壓?;谏鲜鰞?yōu)點(diǎn)和系統(tǒng)要求,選用AMS1117-3.3 作為電源模塊的降壓穩(wěn)壓器。
RS-232 標(biāo)準(zhǔn)是運(yùn)用十分廣泛的數(shù)據(jù)傳輸標(biāo)準(zhǔn),其所定義的標(biāo)準(zhǔn)與主控芯片STM32F107VCT6 所定義的標(biāo)準(zhǔn)有所不同,所以需要使用串口轉(zhuǎn)換芯片在主控芯片輸出的TTL電平與標(biāo)準(zhǔn)RS-232C 電平之間進(jìn)行轉(zhuǎn)換。MAX232 供電電壓為5V,功耗較供電電壓為3.3V 的MAX3232 高,基于系統(tǒng)供電考慮,選用MAX3232 作為本系統(tǒng)的電平轉(zhuǎn)換芯片。為保證串口傳輸速度,RS-232 串口接口采用DB9 母頭,只需連接TXD、RXD 和GND 引腳就可避免其他信號(hào)干擾。其中MAX3232 芯片的10、9 引腳,分別連接主控芯片的PD5 和PD6 引腳,實(shí)現(xiàn)RS232 串口通訊的發(fā)送與接收。
RS-485 是工業(yè)控制中常見的一種通訊接口,與RS-232 相比,RS-485 增加了通訊距離和通訊速度。在RS-485通訊網(wǎng)絡(luò)中一般采用主從通訊方式,即一個(gè)主機(jī)帶多個(gè)從機(jī)?,F(xiàn)在市場(chǎng)上較多的此類收發(fā)器有:Sipex 公司的SP49和Maxim 公司的MAX3485??紤]到RS-32 串口模塊也是MAX 系列,且MAX3485 與MAX3232 工作電壓同樣為3.3V,因此本次設(shè)計(jì)采用MAX3485 作為RS-485 通訊接口的收發(fā)器。其中MAX3485 芯片的1、4 引腳連接主控芯片的PC11 和PC10 引腳,實(shí)現(xiàn)RS485 串口通訊的接收與發(fā)送;MAX3485 芯片的2、3 引腳連接主控芯片的PC12 引腳,實(shí)現(xiàn)RS485 串口通訊的發(fā)送與接受的使能控制。
以太網(wǎng)模塊就是以太網(wǎng)控制器的外部電路,主要由以太網(wǎng)MAC 控制器和物理層PHY 收發(fā)器組成[20]。STM 32F107VCT6 是一款具有互聯(lián)功能的芯片,它自帶10M/100M 的自適應(yīng)以太網(wǎng)控制器,支持IEEE-802.3-2002 規(guī)定的以太網(wǎng)行業(yè)標(biāo)準(zhǔn)以及IEEE 1588-2002 的網(wǎng)路精確時(shí)鐘同步標(biāo)準(zhǔn),其內(nèi)部集成了一個(gè)MAC 控制器,本設(shè)計(jì)只需要選擇擴(kuò)展物理收發(fā)器PHY 即可。
2.5.1 以太網(wǎng)控制器
考慮到功能和成本等綜合因素,本設(shè)計(jì)采用的PHY 芯片為DP83848。DP83848 是一款10M/100M 的PHY 芯片,符合主控芯片STM32F107 所支持的IEEE802.3u 中10BASETy 與100BASE-TX 物理層協(xié)議。STM32 支持兩種工業(yè)級(jí)標(biāo)準(zhǔn)接口,與外部物理層PHY 模塊相連,分別是獨(dú)立于介質(zhì)的接口(MII)和簡(jiǎn)化的獨(dú)立接口(RMII),本系統(tǒng)使用RMII。查閱DP83848 以太網(wǎng)控制芯片手冊(cè),可知DP83848的工作模式(RMII/MII)選擇由39 號(hào)RX_DV 和7 號(hào)SNI_MODE 兩個(gè)管腳的電平共同決定,所以39 引腳需要上拉電阻。除此之外,系統(tǒng)使用MCO 提供DP83848 的時(shí)鐘信號(hào),需要將STM32 的PA8 引腳與DP83848 的34 引腳(時(shí)鐘源X1)連接。以太網(wǎng)控制器DP83848 與主控芯片連接電路如圖3 所示。
Fig.3 Connection circuit between DP83848 and main control chip圖3 DP83848 與主控芯片的連接電路
2.5.2 以太網(wǎng)接口
由于PHY 和網(wǎng)絡(luò)接口RJ45 直接連接會(huì)產(chǎn)生很多無(wú)用的雜波,所以在PHY 與RJ45 之間要接入一個(gè)網(wǎng)絡(luò)隔離變壓器,即在以太網(wǎng)物理接口中需擁有隔離變壓器和RS45 接口;當(dāng)PHY 芯片的供電電壓不一致時(shí)也不會(huì)對(duì)設(shè)備造成任何影響[21]。
本文采用隔離變壓芯片與RJ45 接口集成的以太網(wǎng)接口方式,使用漢仁電子公司的HR911105A,此芯片集成了隔離變壓器和RJ-45 接口,簡(jiǎn)化了硬件電路設(shè)計(jì)。以太網(wǎng)控制器DP83848 與HR911105A 的連接電路如圖4 所示。其中,DP83848 的RD-、RD+、TD-、TD+需要上拉49.9 歐1%的電阻,并且還需要3 個(gè)100nF 的電容接地;DP83848 的20、21 引腳RESERVED 必須接2.2K 上拉電阻。
Fig.4 Connection circuit between DP83848 and HR911105A圖4 DP83848 與HR911105A 的連接電路
嵌入式設(shè)備要連入互聯(lián)網(wǎng)必須遵守TCP/IP 網(wǎng)絡(luò)協(xié)議[22],目前有兩種方式實(shí)現(xiàn)這種功能:①使用專門的網(wǎng)絡(luò)芯片編程,如WIZnet 公司的W5200 等,主控器通過(guò)編程得到芯片上的TCP/IP 數(shù)據(jù),但這些芯片價(jià)格較昂貴,支持的TCP 連接數(shù)也十分有限,不適合大量開發(fā);②在主控芯片上移植網(wǎng)絡(luò)TCP/IP 協(xié)議棧,使用免費(fèi)的開源協(xié)議棧,這種方式非常普遍。出于成本和實(shí)用性考慮本文選擇LwIP 協(xié)議棧。
LwIP 協(xié)議棧移植就是把LwIP 協(xié)議棧源碼添加到kill軟件工程中,移植過(guò)程如表1 所示。
Table 1 LwIP protocol stack migration process表1 LwIP 協(xié)議棧移植過(guò)程
軟件設(shè)計(jì)流程如圖5 所示。
串口服務(wù)器采用頻率為25MHz 的外部高速晶振時(shí)鐘給系統(tǒng)提供時(shí)鐘信號(hào)。系統(tǒng)時(shí)鐘配置如表2 所示。
Table 2 Clock configuration表2 時(shí)鐘配置
Fig.5 Software design flow圖5 軟件設(shè)計(jì)流程
系統(tǒng)時(shí)鐘設(shè)置完畢后,根據(jù)相應(yīng)的外部設(shè)備連接,對(duì)AHB 和APB 進(jìn)行相應(yīng)的設(shè)置修改即可完成系統(tǒng)時(shí)鐘配置。
通過(guò)一個(gè)初始化設(shè)置函數(shù)void USART_Configuration(void)實(shí)現(xiàn)串口程序初始化設(shè)置。
根據(jù)硬件設(shè)計(jì)原理可知PD5-USART2-TX、PD6-USART2-RX 即主控芯片STM32F107 的A5 引腳為數(shù)據(jù)輸出腳,A6 引腳為數(shù)據(jù)輸入腳,將串口引腳功能初始化,程序如下[23]:
設(shè)置A5 腳為復(fù)用推挽輸出,端口速度50MHz,設(shè)置A6腳為浮空輸入,端口速度50MHz,開啟使能GPIOD 時(shí)鐘:
上述為RS232 的串口初始化配置。與RS232 類似,RS485 的串口初始化只需將相應(yīng)的接收和發(fā)送引腳作相應(yīng)更改,除此之外還需配置RS485 的發(fā)送和接收使能。由硬件原理可知,PC10-USART3-TX、PD11-USART3-RX 即主控芯片STM32F107 的C10 引腳為數(shù)據(jù)輸出腳,C11 引腳為數(shù)據(jù)輸入腳,C12 引腳為MAX3485 芯片的發(fā)送和接收使能引腳,配置如下:
串口的收發(fā)數(shù)據(jù)主要由設(shè)置串口的相關(guān)寄存器實(shí)現(xiàn),發(fā)送數(shù)據(jù)由USART_DR 寄存器實(shí)現(xiàn),在寄存器里寫下要發(fā)送的數(shù)據(jù)便可實(shí)現(xiàn)目的。接收數(shù)據(jù)與發(fā)送數(shù)據(jù)相似,也是通過(guò)相應(yīng)的寄存器實(shí)現(xiàn)的[24]。串口發(fā)送數(shù)據(jù)主要有查詢和中斷兩種方式。由于查詢方式會(huì)不斷調(diào)用cup 資源,需要消耗大量的CUP 時(shí)間,而且由于主程序周期的影響,所以查詢效率很低。而中斷方式是當(dāng)中斷條件滿足時(shí)立即中止當(dāng)前正在運(yùn)行的程序,進(jìn)入中斷服務(wù)程序,執(zhí)行完畢后返回?cái)帱c(diǎn)繼續(xù)執(zhí)行,其耗費(fèi)的CPU 時(shí)間相對(duì)較少,所以在串口服務(wù)器中使用中斷方式[25-26]。
STM32F107VCT6 芯片自帶一個(gè)MAC 控制器,初始化方法如表3 所示[27]。
4.5.1 UDP 服務(wù)器端口初始化
調(diào)用LwIP 協(xié)議棧中的new_udp()函數(shù),新建立一個(gè)UDP 的PCB 控制塊;然后使用LwIP 協(xié)議棧中的udp_bind()函數(shù)為已經(jīng)建立好的PCB 控制塊綁定本地的IP 地址和RS232 對(duì)應(yīng)的端口號(hào),綁定成功以后PCB 控制塊便可成功激活;最后調(diào)用LwIP 協(xié)議棧中的udp_recv()函數(shù)來(lái)設(shè)置UDP,接收客戶端發(fā)送的以太網(wǎng)數(shù)據(jù)回調(diào)函數(shù)。udp_recv()函數(shù)在LwIP 中的源代碼定義如下:
其中,pcb 為udp 協(xié)議控制塊,void(* recv)(void *arg,struct udp_pcb *upcb,struct pbuf *p,struct ip_addr *addr,u16_t port)為需要編寫的回調(diào)函數(shù),rev_arg 為回調(diào)函數(shù)參數(shù)。
Table 3 Ethernet initialization表3 以太網(wǎng)初始化
4.5.2 UDP 協(xié)議中以太網(wǎng)轉(zhuǎn)串口回調(diào)函數(shù)設(shè)計(jì)
首先聲明一個(gè)udp_pcb 結(jié)構(gòu)體變量,將遠(yuǎn)端的IP 地址和端口號(hào)存入udp_pcb 控制塊中,然后使用udp_pcb 中的pbuf 指針直接將網(wǎng)口接收到的數(shù)據(jù)提取出來(lái),通過(guò)USART2→DR 寄存器操作,將接收緩存送至該數(shù)據(jù)寄存器,同時(shí)發(fā)送到串口,從而將以太網(wǎng)接收的數(shù)據(jù)發(fā)向RS232串口。當(dāng)數(shù)據(jù)發(fā)送完畢時(shí),利用LwIP 協(xié)議棧中的pbuf_free()函數(shù)將udp_pcb 控制塊進(jìn)行釋放
4.5.3 UDP 協(xié)議中串口轉(zhuǎn)以太網(wǎng)傳輸
在串口將接收到的數(shù)據(jù)存入RS232_rec_buf()后,申明一個(gè)udp_buf 結(jié)構(gòu)體,如果接收數(shù)據(jù)的時(shí)間等待超時(shí),則將等待超時(shí)表示置0,將RS232_rec_buf()中字節(jié)的長(zhǎng)度提取出來(lái),存入要發(fā)送數(shù)據(jù)的長(zhǎng)度值中,并將接收計(jì)數(shù)器清零。若接收的數(shù)據(jù)超過(guò)了緩沖區(qū)長(zhǎng)度,則將緩沖區(qū)的大小存入要發(fā)送數(shù)據(jù)的長(zhǎng)度值中;然后初始化RS232 中的臨時(shí)udp數(shù)據(jù)塊,即申請(qǐng)pbuf 數(shù)據(jù)塊,并將RS232_rec_buf()中的數(shù)據(jù)存入申請(qǐng)好的pbuf 數(shù)據(jù)塊中;最后調(diào)用LwIP 協(xié)議棧中的udp_send()函數(shù)將pbuf 中的數(shù)據(jù)發(fā)送給指定的客戶端。完成整個(gè)過(guò)程后,還要利用LwIP 協(xié)議棧中的pbuf_free()函數(shù)將申請(qǐng)的臨時(shí)udp 數(shù)據(jù)塊進(jìn)行釋放。
對(duì)調(diào)試環(huán)境的IP 地址與端口進(jìn)行配置,具體IP 地址與端口分配如表4 所示。
Table 4 IP address and port allocation of UDP/TCP表4 UDP/TCP 的IP 地址與端口分配
嵌入式以太網(wǎng)串口服務(wù)器如圖6 所示。
Fig.6 Embedded Ethernet serial port server圖6 嵌入式以太網(wǎng)串口服務(wù)器實(shí)物
5.2.1 硬件連接
①用交叉網(wǎng)線將服務(wù)器和電腦相連(或用直通網(wǎng)線將服務(wù)器和路由器相連并將電腦連接到該設(shè)備上);②用USB 轉(zhuǎn)RS485 線將服務(wù)器的RS485 和電腦的另一USB 口連接;③連接無(wú)誤后給服務(wù)器上電,下載軟件程序,復(fù)位服務(wù)器,此時(shí)可看到網(wǎng)口綠燈常亮,黃燈閃爍,表明軟硬件無(wú)異常。
5.2.2 軟件配置
電腦IP 地址配置為:192.168.1.21(與服務(wù)器在一個(gè)網(wǎng)段內(nèi)即可),子網(wǎng)掩碼配置為:255,255,255,0,運(yùn)行軟件USR-TCP232-Test(串口與網(wǎng)口調(diào)試程序),在TCP 模式下,需要在網(wǎng)口助手中將協(xié)議類型更改為TCP Client 模式。
UDP 與RS232/RS485 雙向數(shù)據(jù)傳輸(RS232 對(duì)應(yīng)UDP端口為1033,RS485 對(duì)應(yīng)的UDP 端口為1031)實(shí)驗(yàn)結(jié)果如圖7 所示。
TCP 與RS232/RS485 雙向數(shù)據(jù)傳輸(RS232 對(duì)應(yīng)TCP 端口為1033,RS485 對(duì)應(yīng)TCP 端口為1031)實(shí)驗(yàn)結(jié)果如圖8 所示。
在上述4 種調(diào)試環(huán)境中,通過(guò)串口助手向網(wǎng)口助手發(fā)送串口數(shù)據(jù)及通過(guò)網(wǎng)口助手向串口助手發(fā)送數(shù)據(jù)均能實(shí)現(xiàn)預(yù)期結(jié)果,說(shuō)明系統(tǒng)設(shè)計(jì)達(dá)到了預(yù)期要求。
Fig.7 Bidirectional data transmission between UDP and RS232/RS485圖7 UDP 與RS232/RS485 雙向數(shù)據(jù)傳輸
Fig.8 Bidirectional data transmission between TCP and RS232/RS485圖8 TCP 與RS232/RS485 雙向數(shù)據(jù)傳輸
本文采用STM32 系列芯片、RS232/RS485 電平轉(zhuǎn)換芯片和以太網(wǎng)控制芯片,并采用輕量化IP/TCP 協(xié)議LwIP 協(xié)議棧為基礎(chǔ),設(shè)計(jì)了嵌入式以太網(wǎng)串口服務(wù)器。首先對(duì)串口服務(wù)器進(jìn)行分析,提出設(shè)計(jì)思路與設(shè)計(jì)方案,完成串口服務(wù)器主控模塊、串口模塊、以太網(wǎng)模塊等硬件設(shè)計(jì);其次對(duì)LwIP 協(xié)議棧進(jìn)行分析,完成LwIP 協(xié)議棧的移植以及RS232/RS485 與以太網(wǎng)的雙向通訊程序設(shè)計(jì),實(shí)現(xiàn)將串口數(shù)據(jù)通過(guò)轉(zhuǎn)換后發(fā)向以太網(wǎng),以太網(wǎng)數(shù)據(jù)通過(guò)轉(zhuǎn)換后發(fā)向串口;最后進(jìn)行串口服務(wù)器測(cè)試,驗(yàn)證了設(shè)計(jì)的可行性。