高效串口轉(zhuǎn)以太網(wǎng)適配器設(shè)計(jì)
當(dāng)20世紀(jì)70和80年代采用RS-232串行協(xié)議來解決電子終端及個(gè)人電腦的需求時(shí),很少有人會(huì)想到它會(huì)成為這樣一種普適標(biāo)準(zhǔn)特性。數(shù)以千計(jì)的工業(yè)設(shè)備是基于RS-232接口開發(fā)出來的。但對(duì)于電子通信而言,發(fā)展的步伐已進(jìn)入到一個(gè)更高水平。
今天,以太網(wǎng)是用于本地和廣域網(wǎng)應(yīng)用、定義完善的標(biāo)準(zhǔn)。無數(shù)設(shè)備通過以太網(wǎng)TCP/IP協(xié)議訪問互聯(lián)網(wǎng)。盡管存在其它物理層實(shí)現(xiàn),但直到電子通信因需要引入更快、更先進(jìn)的協(xié)議之前,以太網(wǎng)仍將會(huì)占有相當(dāng)話語(yǔ)權(quán)。
無數(shù)新設(shè)計(jì)仍將以太網(wǎng)作為主要網(wǎng)絡(luò)標(biāo)準(zhǔn)。其它設(shè)計(jì)可能采用不同的物理接口,但仍將采用TCP/IP來接入互聯(lián)網(wǎng)等網(wǎng)絡(luò)。事實(shí)上,廣為接受的以太網(wǎng)TCP/IP協(xié)議是互聯(lián)網(wǎng)得以在過去二十年迅速發(fā)展的主要原因。但RS-232又面臨哪些情況? 持續(xù)發(fā)展 數(shù)以百萬的電子產(chǎn)品仍將RS-232作為一種串行接口。這種情況在發(fā)展中國(guó)家尤其如此,這些國(guó)家和地區(qū)的開發(fā)商可能缺乏足夠的預(yù)算以從傳統(tǒng)系統(tǒng)升級(jí)到新技術(shù)。因此,必須考慮某些形式的可持續(xù)發(fā)展。
RS-232串口轉(zhuǎn)以太網(wǎng)適配器,即用來將傳統(tǒng)系統(tǒng)轉(zhuǎn)變?yōu)榫W(wǎng)絡(luò)應(yīng)用全新環(huán)境的進(jìn)化鏈中的“缺失環(huán)節(jié)”,是在這種新環(huán)境下仍能發(fā)揮作用的具成本效益的方式。當(dāng)估一個(gè)串口轉(zhuǎn)以太網(wǎng)橋方案時(shí),開發(fā)人員應(yīng)考慮如下因素。
小尺寸:優(yōu)化的PCB設(shè)計(jì),以及集成度更高因而數(shù)量更少的器件,使得設(shè)計(jì)項(xiàng)目的體積和成本都得以降低;工作電壓:應(yīng)與RS-232和RS-485等通用串行通信標(biāo)準(zhǔn)兼容。適應(yīng)性:強(qiáng)烈建議采用可定制和分層的軟件以及靈活的硬件設(shè)計(jì)以使該設(shè)計(jì)更適用于不同的應(yīng)用;易用性:用于配置和監(jiān)控的簡(jiǎn)單接口,如圖形用戶界面和LED指示燈等提升了易用性;性能:橋接方案應(yīng)在不給用戶帶來任何不便的情況下,實(shí)現(xiàn)RS-232和/或RS-485與以太網(wǎng)的轉(zhuǎn)換。建議使用一個(gè)帶串行通信接口的微控制器和一個(gè)以太網(wǎng)媒體訪問控制器(MAC)。為降低成本,設(shè)備只需具有恰好能滿足應(yīng)用所需的性能就好;系統(tǒng)成本:開發(fā)人員應(yīng)盡可能降低系統(tǒng)成本。
實(shí)現(xiàn)成本效益
當(dāng)你試圖把新舊系統(tǒng)連接起來時(shí),成本效益是什么?即軟件必須是互補(bǔ)的而硬件成本應(yīng)盡量低。因此,強(qiáng)烈建議采用不花成本但仍然具有魯棒性且可定制的軟件方案。
現(xiàn)成的操作系統(tǒng)和協(xié)議??梢院?jiǎn)化這一工作。與從頭開發(fā)自己的任務(wù)調(diào)度器、以太網(wǎng)TCP/IP協(xié)議棧或應(yīng)用相比,添加、修改或刪除軟件模塊所花的力氣要小得多。目前,你可以找到各種各樣的免授權(quán)和開源協(xié)議棧及操作系統(tǒng)。但選擇的時(shí)候仍需明智,因?yàn)樗鼈兣c硬件和所能獲得的支持息息相關(guān)。
你可能有能夠滿足串口轉(zhuǎn)以太網(wǎng)橋接功能的應(yīng)用。但如果所選處理器件(微處理器或微控制器)功能超過了性能要求,則成本就可能過高。而如果所選器件的性能不夠,那么最終產(chǎn)品的功能將滿足不了應(yīng)用需求。
微處理器可以輕松完成這個(gè)任務(wù)。但微控制器已經(jīng)發(fā)展到可以運(yùn)行操作系統(tǒng)且能以低得多的成本提供以太網(wǎng)連接這樣一個(gè)階段。采用一款帶有小容量SRAM和閃存的低端32位微控制器可以輕松實(shí)現(xiàn)一個(gè)串口轉(zhuǎn)以太網(wǎng)的橋接設(shè)計(jì)。
使設(shè)計(jì)和定制更容易
即使你已經(jīng)找到了具有所需性能和外設(shè)以及足夠的SRAM和閃存以運(yùn)行簡(jiǎn)化的操作系統(tǒng)和基本以太網(wǎng)協(xié)議棧的具有成本效益的微控制器,你仍需把這些軟件和硬件模塊整合在一起。工程時(shí)間會(huì)影響系統(tǒng)成本,那么,該如何簡(jiǎn)化開發(fā)工作呢? 建議采用分層軟件架構(gòu)??梢园阉胁煌K整合在一起創(chuàng)建一個(gè)可組織開發(fā)進(jìn)程的軟件環(huán)境。這會(huì)直接影響工程進(jìn)度以及后繼對(duì)串口轉(zhuǎn)以太網(wǎng)橋的定制。
這種分層軟件模型基于把幾個(gè)主要軟件模塊分成不同層以及從本質(zhì)上對(duì)所用的硬件實(shí)施抽象。硬件抽象層(HAL)被定義為:通過HAL/HW接口直接訪問硬件資源的軟件組件集,它們包括外設(shè)、配置寄存器,優(yōu)化的匯編器程序(帶合適的原型)、預(yù)編譯的目標(biāo)代碼庫(kù)或任何其它硬件相關(guān)資源。
這樣,若以后需對(duì)軟件設(shè)計(jì)進(jìn)行修改,就可將其移植到更高端的微控制器和不同的硬件平臺(tái)。軟件可容易地“進(jìn)化”,并且當(dāng)新增外設(shè)甚至改變協(xié)議和硬件時(shí)可以平穩(wěn)過渡,從而使更多軟件可復(fù)用于未來改善的設(shè)計(jì)。
集成
圖1詳解了一個(gè)典型的分層軟件架構(gòu)。應(yīng)用軟件工作在操作系統(tǒng)(FreeRTOS)下,它處理以太網(wǎng)協(xié)議棧(LwIP)和微控制器外設(shè)(見下表)。硬件包括飛思卡爾的32位MCF51CN128微控制器,所需外部元件極少。
在商用串口轉(zhuǎn)以太網(wǎng)橋應(yīng)用中,F(xiàn)reeRTOS開源軟件提供了足夠的功能。它處理信號(hào)、多路復(fù)用、中斷、RAM管理、搶占式任務(wù)、??臻g和任務(wù)優(yōu)先級(jí)等工作。FreeRTOS得到廣泛支持,這款嵌入式微控制器業(yè)界的知名軟件已在至少19種架構(gòu)中得到應(yīng)用。代碼精煉是其一個(gè)關(guān)鍵優(yōu)勢(shì)。
所選的開源TCP/IP協(xié)議棧處理所有以太網(wǎng)事務(wù)。因其平衡了功能性和低RAM /閃存需求,所以在串口轉(zhuǎn)以太網(wǎng)橋應(yīng)用中受到極力推薦。在編譯時(shí),LwIP占用12.15kb的RAM來啟動(dòng)串口橋所需的所有TCP/IP服務(wù)。
在運(yùn)行時(shí),堆棧分配并釋放一些緩沖區(qū),并從堆棧中獲取所需的RAM。它使用非常有限的一組網(wǎng)絡(luò)緩沖區(qū)發(fā)送和接收來自應(yīng)用更高層的信息。支持的協(xié)議包括TCP/IP、ICMP、UDP、專門的RAW API(用于該串口橋)、可選的插孔API、DHCP、PPP以及ARP等。
32位微控制器MCF51CN128包含128kb閃存和24kb SRAM。其片上存儲(chǔ)器足夠運(yùn)行串口轉(zhuǎn)以太網(wǎng)橋應(yīng)用以及操作系統(tǒng)和以太網(wǎng)棧。
MCF51CN128工作在50MHz最高頻率提供所需功能。它集成了一個(gè)快速以太網(wǎng)控制器(FEC)和諸如UART(SCI)、SPI和I2C等串行接口。其余的通用I/O(GPIO)引腳支持驅(qū)動(dòng)面向狀態(tài)驗(yàn)證的LED等其它工作。該芯片適合這一應(yīng)用并具有低BOM成本。
串口轉(zhuǎn)以太網(wǎng)橋?qū)崿F(xiàn)
為簡(jiǎn)單的串口轉(zhuǎn)以太網(wǎng)橋研制了一個(gè)參考設(shè)計(jì)作為交鑰匙方案,它具有Web服務(wù)器、FTP服務(wù)、電子郵件客戶端、SD-CARD支持及其它吸引人的特性。為簡(jiǎn)化設(shè)計(jì)并能最大限度地在不同產(chǎn)品設(shè)計(jì)中復(fù)用該設(shè)計(jì)布局,可將該系統(tǒng)分為兩個(gè)主要硬件模塊:最小系統(tǒng)和演示系統(tǒng)(圖2)。
最小系統(tǒng)包括實(shí)現(xiàn)以太網(wǎng)功能所需的所有硬件。這個(gè)最小的硬件模塊只有1.15×1.55英寸大。通過提供一個(gè)未穩(wěn)壓的3.7到5.5V電源,這款以太網(wǎng)功能的最小實(shí)現(xiàn)不再需要其它器件。
演示系統(tǒng)則帶有uSD卡插座、按鈕和LED等其它功能。頂層和底層分別可見用于隔離這兩個(gè)系統(tǒng)的零歐姆電阻(圖3)。斷開零歐姆電阻就把演示系統(tǒng)和最小系統(tǒng)隔離開來。
對(duì)于這個(gè)具體實(shí)現(xiàn)來說,以太網(wǎng)接口通過以太網(wǎng)電纜中兩對(duì)空閑電纜對(duì)參考設(shè)計(jì)板供電。請(qǐng)注意,這不是以太網(wǎng)供電(PoE)標(biāo)準(zhǔn)。UART引腳(+5.5 V)、電源插座連接器以及經(jīng)過穩(wěn)壓的3.3V電源接口也可供電并支持特定的系統(tǒng)功能(圖2)。利用PCB上的削切線(cut-trace)可實(shí)現(xiàn)所有這些選項(xiàng)。
該串口橋可通過一組命令工作在配置模式,其中UART(SCI)或SPI用于配置功能。在配置模式,可改變MAC、IP、掩膜、網(wǎng)關(guān)和服務(wù)器地址等各種選項(xiàng)。
可以指定是使用靜態(tài)還是動(dòng)態(tài)地址,而諸如連接哪個(gè)端口以及客戶機(jī)/服務(wù)器實(shí)現(xiàn)地址等TCP參數(shù)也是可配置的??尚薷牡腢ART參數(shù)包括端口、波特率、奇偶校驗(yàn)、位數(shù)、停止位和流量控制(硬件或軟件)。最后,可對(duì)SPI進(jìn)行端口、波特率、極性、相位、主/從和輪詢/中斷處理等配置。
當(dāng)該參考設(shè)計(jì)工作在橋模式,串口收到的字符被發(fā)送到以太網(wǎng),反之亦然。串口轉(zhuǎn)以太網(wǎng)橋工作在兩個(gè)接口之間,其目的是在這兩個(gè)接口間提供高速數(shù)據(jù)傳輸。
連接串口與以太網(wǎng)
快速以太網(wǎng)控制器(FEC)是飛思卡爾的MAC實(shí)現(xiàn)。FEC在緩沖區(qū)描述符表中存儲(chǔ)RX和TX數(shù)據(jù)包。緩沖區(qū)描述符包括大多緩沖區(qū)描述符狀態(tài)和控制標(biāo)志、接收或發(fā)送數(shù)據(jù)的緩沖區(qū)長(zhǎng)度以及與接收或傳送操作相關(guān)的緩沖區(qū)指針。
當(dāng)諸如以太網(wǎng)這樣的高速接口試圖連接到UART或SPI等低速接口時(shí),必須采用流量控制協(xié)議作為速度適配器。以太網(wǎng)沒有流量控制功能,這點(diǎn)與TCP/IP不同。UART具有軟件和硬件流量控制功能。
當(dāng)應(yīng)用需要進(jìn)行持續(xù)數(shù)據(jù)傳送時(shí),若串口橋應(yīng)用沒能以同一速率對(duì)數(shù)據(jù)進(jìn)行處理,則數(shù)據(jù)會(huì)迅速填滿UART的軟件緩沖器。確定工作波特率和UART緩沖區(qū)大小時(shí)需格外小心,因?yàn)楫?dāng)使用實(shí)時(shí)操作系統(tǒng)(RTOS)時(shí),這兩個(gè)因素會(huì)影響到運(yùn)行任務(wù)的實(shí)現(xiàn)及其優(yōu)先級(jí)。
SPI通信沒有流量控制。不應(yīng)改變其軟件驅(qū)動(dòng)器以在通信中增加額外的頭文件。應(yīng)在應(yīng)用層通過采用響應(yīng)或其它定制流量控制協(xié)議來實(shí)現(xiàn)流量控制。
借助流量控制協(xié)議可以輕松中止通訊。但若頻繁發(fā)生這種中止情況,通信性能將會(huì)降低,特別是對(duì)諸如UART和SPI等串口協(xié)議來說??梢酝ㄟ^UART或SPI硬件緩沖區(qū)(通常1~4字節(jié)長(zhǎng))解決該性能問題。為盡可能減少延誤,采用中斷來通知應(yīng)用橋何時(shí)可以發(fā)送字符。
但是,向UART硬件緩沖區(qū)要求可用空間的中斷請(qǐng)求和緩沖區(qū)相應(yīng)該請(qǐng)求之間的延遲必須予以考慮。通過在橋應(yīng)用和UART控制器間加入軟件緩沖區(qū)可縮短該延遲。采用這種方式,應(yīng)用橋可填充軟件緩沖區(qū),而UART ISR(中斷服務(wù)程序)可逐字符地取走數(shù)據(jù),直至軟件緩沖區(qū)被清空。該技術(shù)減少了流量控制中止通信的次數(shù),提升了整體性能。對(duì)UART接收來說,軟件緩沖區(qū)對(duì)存儲(chǔ)所有可以接收到的字符來說很重要。
以太網(wǎng)數(shù)據(jù)包由數(shù)據(jù)和協(xié)議報(bào)頭組成。對(duì)串口轉(zhuǎn)以太網(wǎng)橋應(yīng)用而言,有效的以太網(wǎng)數(shù)據(jù)包是通過在數(shù)據(jù)部分使用可能多的字節(jié)數(shù)組成。這將抵消所需報(bào)頭部分帶來的開銷。
應(yīng)用層(串口橋)通過使用FIFO等軟件緩沖區(qū)進(jìn)行數(shù)據(jù)排列和解排列解決了該問題??刹捎锚?dú)立的串口接收(Rx)和發(fā)送(TX)緩沖區(qū)來存儲(chǔ)應(yīng)用無法一次處理的所有信息。
本文小結(jié)
許多設(shè)備內(nèi)基于串行的接口(RS-232、RS-485和SPI)無法提供類似以太網(wǎng)協(xié)議所實(shí)現(xiàn)的更強(qiáng)的連接能力。串口轉(zhuǎn)以太網(wǎng)橋是解決該問題的一個(gè)具成本效益的方案。在設(shè)計(jì)這種轉(zhuǎn)換橋時(shí),必須把結(jié)構(gòu)和分層軟件與具成本效益的硬件結(jié)合起來以滿足應(yīng)用對(duì)功能的要求。我們采用Free-RTOS、LightweightIP(以太網(wǎng)-TCP/IP棧)和飛思卡爾的MCF51CN128嵌入式控制器為簡(jiǎn)單串口轉(zhuǎn)以太網(wǎng)橋構(gòu)建了一個(gè)參考設(shè)計(jì)。