由于嵌入式技術和網絡技術的迅速發展,以太網接口在嵌入式系統中的應用越來越廣泛,以太網接口不僅通信速度快,傳輸可靠,使用和配置方便,而且不受地域限制(廣域網和局域網均可)。但通常使用的以太網控制器如RTL8019、DM9008、AX88796L CS8900A 、LAN91C111等都是為個人專用計算機系統設計的,這些器件不僅接口電路復雜,體積厚度較大,而且比較昂貴。Silabs(Silicon Laboratories)公司的獨立單芯片以太網控制器CP2200是工業界體積最小、性能最高的單芯片10BASE-T以太網控制器, CP2200可以為具有11個以上端口I/O引腳的任何微控制器或主處理器增加以太網通信功能。
本文使用通用型單片機C8051F020、以太網控制CP2200和經過自行裁剪的TCP/IP協議棧,構成了嵌入式系統的以太網接口。
1、微控制器C8051F020
C8051F020[2]是美國Silabs公司推出的C8051F系列單片機中的通用型單片機。C8051系列是片上系統(SOC)單片機。片上系統(SOC)是把計算機常用的一些數字和模擬外設等全部都做在一塊芯片上,使它成為一個完整的模擬數據采集與控制系統,這使得以8051為內核的單片機上了一個新的臺階。
C8051F020是完全集成的混合信號系統級MCU芯片,100腳TQFP(Thin Quad Flat Packeage)封裝,MCU可在工業溫度范圍(-45℃到+85℃)內工作,具有高速、流水線結構,與8051的微控制器內核CIP-51兼容。
2、以太網控制器CP2200
CP2200是Silabs(Silicon Laboratories)公司于近期推出的一款針對工業控制領域的以太網控制器,集成了IEEE 802.3以太網媒體訪問控制器(MAC)、10Base-T物理層(PHY)和8KB非易失性FLASH存儲器的單芯片以太網控制[1]器。8位并行總線接口支持Intel和Motorola總線方式,可以使用復用或非復用方式尋址。
CP2200有28腳QFN和48腳TQFP兩種封裝。28腳QFN封裝只支持復用方式尋址。有方式選擇引腳,用于選擇總線接口方式。
CP2200有8KB片內FLASH存儲器,可用于存儲用戶常數、Web服務器內容或作為通用非易失性存儲器。FLASH存儲器的最后6個存儲單元是工廠預編程的唯一48位MAC地址,這樣可以從大多數嵌入式系統的生產過程中消除必不可少的序列化步驟。
CP2200完全兼容100/1000 BASE-T網絡,可以工作在全雙工或半雙工模式,自適應,能進行自動極性檢測和糾正,具有碰撞自動重發功能,能自動填充和生成CRC,支持廣播和多播MAC尋址。工作的溫度范圍在-40°C到+85°C 之間。
圖1 CP2200的系統結構圖
3、以太網接口硬件設計
在嵌入式系統中,擴展以太網接口,通常有下面兩種方法:
1.以太網接口由不帶網絡接口控制器的嵌入式處理器和以太網接口芯片組成。以太網接口芯片和嵌入式處理器通過總線相連。此方法通用性強,不受處理器的限制,但由于處理器和網絡通過外部總線交換數據,速度慢。
2.選擇帶有以太網接口的嵌入式處理器。這種方法要求嵌入式處理器有通用的網絡接口控制器。處理器和網絡數據交換通過內部總線,速度快。
這里選用前一種方法來實現嵌入式系統的以太網接口,其主要由C8051F020單片機和單芯片以太網控制器CP2200構成,如圖2所示,單片機控制數據采集和傳輸,以太網控制器CP2200負責將數據發送到因特網或從網絡上接收數據包。
本以太網接口單元是中國民航總局科技基金項目“機場噪聲自動監測與數據傳輸的研究與實現”中Internet接入設備的重要組成部分。Internet接入設備的主要功能是將噪聲數據傳送到Internet局域網上。單片機將從現場采集的數據,通過以太網控制器芯片發送到Internet上,以太網服務器端接收該數據包。服務器發送數據的流向與之相反,來自服務器的以太網幀數據,通過RJ45接口送到以太網控制器,處理后的數據包再送入單片機協議棧。
這里使用的是48引腳的CP2200,這樣可以不用工作在復用模式。單片機C8051F020與以太網控制器CP2200采用并口相連接,CP2200有一個8位的并行主機接口用于訪問該設備上的直接寄存器。串行口代表數據采集,CP2200通過RJ45接口接入Internet網。
4、以太網接口軟件設計
4.1 CP2200驅動程序
以太網中,網絡接口就是一個以太網控制芯片及其驅動程序。以太網接口驅動程序包含管理控制器芯片與網絡協議棧中上一層之間通信的程序代碼,為了在以太網上傳送IP數據報,IP層將數據報傳遞給以太網控制器的驅動程序,驅動程序指示以太網控制器傳送以太網幀。在接收來自網絡的IP數據報時,以太網控制器檢查目標地址是否與接口硬件地址或控制器可接收的組播或廣播地址一致,如果一致,則控制器檢查錯誤,驅動程序把數據報或出錯指示傳遞給IP層。
這里以太網接口驅動程序主要是CP2200的初始化配置和收發配置。
(1) CP2200復位初始化
CP2200復位初始化過程可以確保設備正常工作。復位開始時,首先要等待復位引腳升高,然后等待振蕩器初始化完成,振蕩器初始化完成后會發送一個中斷信號。之后是CP2200自身初始化,可以通過檢測INT0中斷狀態寄存器確定自身初始化的完成。由于系統默認的是允許所有的中斷,通過設置INT0EN和INT1EN關閉哪些不被主處理器處理的中斷事件。初始化過程還包括物理層(PHY)的初始化,以及媒體訪問層(MAC)的初始化。最后配置接收過濾器,系統復位后,過濾器允許廣播包和組播包,通過設置RXFILT寄存器可以決定是接收還是忽略諸如廣播、組播、短幀(幀長度小于64字節)或者CRC錯誤的幀等。初始化完成后,接收緩沖區為空,CP2200開始準備發送或接收數據。
(2) 數據的接收和發送
單片機C8051F020通過使用CP2200的直接和間接寄存器來控制CP2200,直接寄存器可
以訪問RAM緩沖區,FLASH存儲區,間接的MAC配置寄存器及其它的狀態和控制寄存器。CP2200具有2K(0x0000–0x07FF)字節的發送緩沖區和4K(0x0000–0x0FFF)字節的接收緩沖區,它們共享相同的地址空間,都使用RAMADDRH:RAMADDRL指針訪問,每個緩沖區都有一個專門的數據寄存器。其中CP2200發送數據的流程圖如圖3所示:
使用隨機儲存器訪問方法將該包裝入發送緩沖區:
a.將RAMADDRH:RAMADDRL設為0x0000。
b.將第一個字節寫入 RAMTXDATA。
c.將RAMADDRH:RAMADDRL加1。
d.將另一個數據字節寫入 RAMTXDATA.
e.重復步驟c和d直到整個包全部裝入發送緩存區。
f.長度小于64字節的幀需要填充為至少64字節。
g.將TXENDH:TXENDL設置為最后一個字節的地址。該地址值必須大于等于0x0040。
4.2 TCP/IP協議棧的設計
我們結合項目的實際需要,自行開發了簡化的TCP/IP協議,實現的協議包括UDP協議、IP協議、ARP協議、ICMP協議、TCP協議以及一個簡單的HTTP協議。各協議自成一個模塊,可以根據實際需要,選擇使用全部的協議或部分協議,由于本應用主要使用UDP協議傳輸數據,因此,TCP部分和HTTP部分可以不使用,去掉這兩個模塊不會影響系統的正常工作。
在實現時,每種協議的格式都定義為一個結構體,發送數據時,只需將應用數據由高層傳遞到下一層,每層協議會自動添加本層協議所需的報首內容,如,發送UDP數據時,將數據傳給UDP層,UDP層會在數據之前加入源目的端口號和目的端口號以及數據報長度和校驗和等8個字節的UDP報首信息,然后交給IP層處理,IP同樣地在UDP報文前加入IP報首信息,然后發送給下一層。IP層發送時先從ARP Cache中查詢目的IP地址對應的MAC地址,如果有,則將該MAC地址放入相應位置,然后發送;如果找不到目的MAC地址則需要發送ARP請求包,廣播請求擁有該IP地址的MAC地址,收到ARP回復包后,再將該IP數據發送到下一層,在IP報之前再封裝上源MAC和目的MAC地址以及幀類型后,就可以由CP2200進行數據的發送,CP2200會自動添加幀首用于幀同步的8字節前導符和最后的幀校驗序列,真正將數據發送到網絡上。
5、 結論
本論文的創新點:本文設計的以太網接口采用新型的單芯片以太網控制器CP2200,可以實現不同數據的網絡實時傳輸,具有穩定的工作性能、抗干擾抗震性能和較低的系統開發成本。簡化的TCP/IP協議棧,既避免了通用嵌入式TCP/IP的移植工作,也避免了資源的浪費,同時便于修改和擴充。
CP2200是一款新型的單芯片以太網控制器,具有高性能的并行外部內存界面,高達30 Mbps的操作速度可大幅縮短通訊時間,可使搭配的微控制器能以更高效率執行通訊協議或其它程序?;贑P2200開發的以太網接口現以廣泛應用于遠程檢測和監視、嵌入式Web服務器、POS設備、遠程以太網-UART橋等領域,產生了良好的經濟效益,具有廣闊的發展前景。
責任編輯:gt
評論
查看更多