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