李鵬,廖曉波
(西南科技大學(xué)制造過程測試技術(shù)教育部重點(diǎn)實(shí)驗(yàn)室,四川綿陽 621010)
隨著計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)的飛速發(fā)展和普及應(yīng)用,給網(wǎng)絡(luò)實(shí)驗(yàn)教學(xué)帶來很大的發(fā)展空間,使得基于網(wǎng)絡(luò)的實(shí)驗(yàn)教學(xué)成為可能。然后實(shí)驗(yàn)設(shè)備的通信接口千差萬別,如何將設(shè)備進(jìn)行網(wǎng)絡(luò)互聯(lián)共享,成為一個(gè)亟待解決的重要問題。遠(yuǎn)程實(shí)驗(yàn)平臺(tái)的基本框圖如圖1 所示。其總體結(jié)構(gòu)分為3 層:上層是用戶層,用戶通過上位機(jī)軟件對(duì)下位機(jī)的設(shè)備進(jìn)行操作;中間是網(wǎng)絡(luò)層,進(jìn)行數(shù)據(jù)的轉(zhuǎn)換傳送;下層是設(shè)備層,接收上層用戶的操作數(shù)據(jù)進(jìn)行實(shí)驗(yàn)操作。其中處于通信層的通信網(wǎng)關(guān)通過網(wǎng)絡(luò)接受實(shí)驗(yàn)者的控制和實(shí)驗(yàn)數(shù)據(jù),將該數(shù)據(jù)以各種近距離的通信方式發(fā)送給相應(yīng)的實(shí)驗(yàn)設(shè)備。
圖1 遠(yuǎn)程過程控制實(shí)驗(yàn)平臺(tái)網(wǎng)絡(luò)拓?fù)鋱D
將嵌入式系統(tǒng)和Internet 連接起來實(shí)現(xiàn)遠(yuǎn)距離數(shù)據(jù)交換和控制的本質(zhì)是嵌入式系統(tǒng)本身能夠?qū)崿F(xiàn)TCP/IP 通信協(xié)議。實(shí)現(xiàn)該方案總體上有兩種方法[1-2]:第一種方法是直接在嵌入式平臺(tái)上實(shí)現(xiàn)TCP/IP,使之直接連接上Internet,這種方法通過軟件來構(gòu)建TCP/IP 等以太網(wǎng)協(xié)議,軟件設(shè)計(jì)復(fù)雜,工作量大,且該方案需要耗費(fèi)很多的系統(tǒng)內(nèi)存和系統(tǒng)MCU 的計(jì)算時(shí)間。第二類方案是直接由硬件來實(shí)現(xiàn)TCP/IP 協(xié)議,MCU 只需要通過一定的通信方式將數(shù)據(jù)發(fā)送給該以太網(wǎng)硬件設(shè)備,由該硬件設(shè)備完成以太網(wǎng)數(shù)據(jù)的轉(zhuǎn)發(fā),該方案結(jié)構(gòu)簡單,需要存儲(chǔ)內(nèi)存和占用CPU的時(shí)間少。
文中采用STM32 32 位ARM 處理器[3]來設(shè)計(jì)該通信網(wǎng)關(guān),該處理器具有速度快、容量大、性能穩(wěn)定、在線調(diào)試方便等優(yōu)點(diǎn),W5100 是WIZNETT 公司推出的最先的固件網(wǎng)絡(luò)芯片[4],該芯片集成了10/100 Mb/s 以太網(wǎng)控制器,最高傳輸速度為25 Mb/s,硬件化了TCP/IP 協(xié)議、以太網(wǎng)MAC 和PHY三種功能于一體。
以太網(wǎng)通信網(wǎng)關(guān)主要功能是完成數(shù)據(jù)協(xié)議的轉(zhuǎn)換,它將以太網(wǎng)發(fā)送的數(shù)據(jù)通過工業(yè)485 總線或者短距離無線通信方式發(fā)送給設(shè)備控制端[5]。其中485 通信模塊是通過UART 連接485 芯片轉(zhuǎn)換成485 總線數(shù)據(jù),無線傳輸模塊是通過藍(lán)牙串口模塊進(jìn)行數(shù)據(jù)交換,其主要的結(jié)構(gòu)框圖如圖2 所示,主要由以太網(wǎng)模塊、485 總線接口、短距離無線通信接口幾部分組成。
圖2 嵌入式網(wǎng)關(guān)的結(jié)構(gòu)框圖
W5100 芯片是一款多功能的單片網(wǎng)絡(luò)接口芯片,其內(nèi)部集成了10/100 Mb/s 以太網(wǎng)控制器,可支持自動(dòng)應(yīng)帶(全雙工/半雙工模式),主要用于高集成、高穩(wěn)定、高性能和低成本的嵌入式系統(tǒng)。它支持以太網(wǎng)介質(zhì)傳輸層(MAC)和物理層(PHY),其硬件TCP/IP 協(xié)議可以支持TCP、UDP、ICMP、IGMP、IPV4、ARP、PPPoE 和IGMP。支持4 個(gè)獨(dú)立的端口通信,其內(nèi)部具有16 kB 字節(jié)的發(fā)送和接收緩沖區(qū)。其和MCU 的接口有SPI 接口和總線接口[6]。圖3 為W5100 和STM32103 采用SPI 接口的接口電路圖。
圖3 W5100 電路接口原理圖
由于當(dāng)前很多設(shè)備都配置有 UART 串口,STM32103 自身共有3 個(gè)串口,一個(gè)作為485 總線的擴(kuò)展,一個(gè)作為串口藍(lán)牙模塊的接口。為了實(shí)現(xiàn)網(wǎng)關(guān)對(duì)更多的串口設(shè)備數(shù)據(jù)收發(fā)控制,利用SMT32 的串口0 對(duì)串口進(jìn)行了擴(kuò)展,設(shè)計(jì)中采用串口擴(kuò)展芯片GM8123。GM8123 可以將一個(gè)全雙工的標(biāo)準(zhǔn)串口擴(kuò)展成3 個(gè)標(biāo)準(zhǔn)串口,并能通過外部引腳控制串口,擴(kuò)展模式為單通道工作模式和多通道工作模式,即可以指定一個(gè)子串口和母串口以相同的波特率單一地工作,也可以讓所有子串口在母串口波特率基礎(chǔ)上分頻同時(shí)工作[7]。網(wǎng)關(guān)串口擴(kuò)展接口圖見圖4。
圖4 網(wǎng)關(guān)串口擴(kuò)展接口原理圖
在UCOSII 操作系統(tǒng)下,根據(jù)系統(tǒng)任務(wù)需求,系統(tǒng)主要建立了8 個(gè)進(jìn)程,其依次為:串口數(shù)據(jù)發(fā)送進(jìn)程、W5100socket0~socket3 四個(gè)進(jìn)程、鍵盤處理進(jìn)程、LCD 顯示進(jìn)程、空閑進(jìn)程。其中串口接收處理任務(wù)和W5100 接收處理任務(wù)相對(duì)緊急,因此其優(yōu)先級(jí)最高,其次是串口數(shù)據(jù)發(fā)送任務(wù)和W5100 發(fā)送任務(wù)優(yōu)先級(jí)高,剩余的任務(wù)優(yōu)先級(jí)相對(duì)較低。
在UCOSII 操作系統(tǒng)下,由于STM32103 自身共有3 個(gè)串口,再加上擴(kuò)展的串口,一共串口個(gè)數(shù)可以達(dá)到5 個(gè),然而W5100 一共有4 個(gè)SOCKET,這樣一共可以建立4 個(gè)獨(dú)立的以太網(wǎng)到串口的獨(dú)立通道。在系統(tǒng)設(shè)計(jì)過程中,在系統(tǒng)內(nèi)存中分配了4 串口的緩沖區(qū)rcvuartbuf,用來接收串口收到的數(shù)據(jù),系統(tǒng)設(shè)計(jì)了4 個(gè)信號(hào)量,Rcvuartsem1-Rcvuartsem4。具體流程如圖5 所示。
圖5 多串口中斷處理流程圖
在串口數(shù)據(jù)發(fā)送任務(wù)中,由于串口是互斥設(shè)備,因此每次請(qǐng)求數(shù)據(jù)發(fā)送前需申請(qǐng)占用,請(qǐng)求UartSem;如果請(qǐng)求到,則申請(qǐng)消息郵箱;如果申請(qǐng)到,說明系統(tǒng)需要利用串口來發(fā)送數(shù)據(jù),然后打開信箱內(nèi)容,根據(jù)內(nèi)容判斷要將哪個(gè)緩沖區(qū)的數(shù)據(jù)發(fā)往哪個(gè)子串口;然后根據(jù)GM8123 設(shè)置其地址引腳,將數(shù)據(jù)發(fā)往不同的子串口。其具體流程圖如下:串口接收處理數(shù)據(jù)任務(wù)主要是接收串口設(shè)備發(fā)送的數(shù)據(jù),然后將數(shù)據(jù)轉(zhuǎn)化成SOCKET 發(fā)送出去,其流程圖如圖6 所示。
圖6 串口發(fā)送任務(wù)流程圖
W5100 共有4 個(gè)SOCKET,內(nèi)部一共有16 kB 的緩沖區(qū),在其工作之前必須先對(duì)其進(jìn)行地址設(shè)置、內(nèi)存分配等操作;同時(shí),W5100 每個(gè)SOCKET 可以有兩種模式,TCP 和UDP,根據(jù)系統(tǒng)應(yīng)用要求,可以設(shè)置SOCKET 的操作模式;同時(shí)W5100 可以設(shè)置是客戶端模式還是服務(wù)器模式[8],在此設(shè)計(jì)為服務(wù)器模式。在系統(tǒng)初始化之后,需要進(jìn)行SOCKET 的設(shè)置。其初始化流程圖如圖7 所示。
圖7 W5100 初始化流程圖
其中配置發(fā)送和接收緩沖區(qū)大小可以根據(jù)串口連接設(shè)備發(fā)送和接收數(shù)據(jù)的大小進(jìn)行配置,以滿足應(yīng)用要求。
W5100 的每個(gè)SOCKET 接收數(shù)據(jù)完成之后,將解包后的數(shù)據(jù)放入接收緩沖區(qū)之后,產(chǎn)生中斷,系統(tǒng)根據(jù)W5100 的狀態(tài)寄存器查看,可以查出是哪個(gè)SOCKET 接收到了數(shù)據(jù)。接收數(shù)據(jù)的處理流程圖如圖8 所示。
圖8 W5100 中斷處理流程圖
W5100 接收數(shù)據(jù)處理任務(wù)流程圖見圖9。
圖9 W5100 接收數(shù)據(jù)處理任務(wù)流程圖
W5100 發(fā)送數(shù)據(jù)流程圖見圖10。
圖10 W5100 發(fā)送數(shù)據(jù)流程圖
針對(duì)遠(yuǎn)程實(shí)驗(yàn)平臺(tái)中數(shù)據(jù)信息轉(zhuǎn)換的問題,設(shè)計(jì)了一種可以進(jìn)行網(wǎng)絡(luò)數(shù)據(jù)和串口數(shù)據(jù)轉(zhuǎn)換的網(wǎng)關(guān)。從硬件和軟件兩個(gè)方面對(duì)通信網(wǎng)關(guān)進(jìn)行設(shè)計(jì),重點(diǎn)介紹了在嵌入式操作系統(tǒng)UCOSII 下網(wǎng)絡(luò)數(shù)據(jù)和串口數(shù)據(jù)的轉(zhuǎn)換。該設(shè)計(jì)在相關(guān)設(shè)計(jì)中具有一定的借鑒意義。
[1]李成.基于嵌入式平臺(tái)的無線家庭網(wǎng)關(guān)設(shè)計(jì)[D].武漢:武漢理工大學(xué),2009.
[2]鄭景遠(yuǎn).多協(xié)議網(wǎng)關(guān)的設(shè)計(jì)與實(shí)現(xiàn)[D].西安:西安電子科技大學(xué),2010.
[3]王曉寅.基于實(shí)時(shí)系統(tǒng)的STM32 網(wǎng)絡(luò)應(yīng)用[D].上海:華東師范大學(xué),2011.
[4]楊春勇,牛磊,路杰,等.環(huán)境監(jiān)測網(wǎng)絡(luò)中的ZigBee 網(wǎng)關(guān)服務(wù)器[J].大地測量與地球動(dòng)力學(xué),2011,31(2):156-159.
[5]謝東.基于ARM 的嵌入式遠(yuǎn)程測控系統(tǒng)網(wǎng)關(guān)的設(shè)計(jì)[J].現(xiàn)代電子技術(shù),2006(13):85 -88.
[6]蔡皓,馮仁劍,萬江文.具有多種通信方式的無線傳感器網(wǎng)絡(luò)網(wǎng)關(guān)[J].傳感器技術(shù)學(xué)報(bào).2008,21(1):169 -173.
[7]劉通良,周建勇,潘仕彬,等.實(shí)現(xiàn)基于TCP/IP 的多串口轉(zhuǎn)換網(wǎng)關(guān)[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2006(3):73 -75.
[8]蔣峰.W5100 在遠(yuǎn)程溫度采集系統(tǒng)中的應(yīng)用[J].化工自動(dòng)化及儀表,2011(2):214 -217.
[9]李春林,程健.基于ARM 和nRF2401 的嵌入式無線網(wǎng)絡(luò)測控平臺(tái)[J].自動(dòng)化儀表,2007,28(8):8 -15.