新聞中心

        EEPW首頁 > 手機與無線通信 > 設計應用 > 一種精簡可靠的低成本嵌入式以太網接口設計

        一種精簡可靠的低成本嵌入式以太網接口設計

        ——
        作者:張瑞瑞 馬晨普 時間:2007-03-21 來源:21IC 收藏
        引 言

        當前,設計人員在為遠程控制或監控設備提供以太網接入時,使用的以太網控制器都是專為個人計算機系統設計的,如RTL8019,DM9008,CS8900A 等。這些器件不僅接口電路復雜、體積較大,而且比較昂貴。CP2200 是Silabs于近期推出的一款獨立以太網控制器,它符合IEEE 802.3協議,支持10M以太網接入,而且僅需要很少的外部電路連線就可滿足絕大多數的設計要求,使得潛入式以的設計大大簡化,占板空間大大減小,系統開發成本大大降低。
        另外,該以太網控制器具有8位并行主機接口,可以為絕大多數微控制器或主處理器提供以太網通信功能。8位并行總線接口支持Intel和Motorola總線方式,可以使用復用或非復用方式尋址。這些功能加上相關處理器的TCP/IP協議棧,使得應用系統的以實現變得極其簡易。

        件電路設計

        系統的硬件電路示于圖1。CP2200的外圍電路比較簡單。

        硬件電路

                                                              圖1  硬件電路

        I/O并行接口

        CP2200的并行主機接口,支持Motorola 和 Intel兩種總線方式,且支持地址數據復用和非復用方式。可以通過將MUXEN和MOTEN引腳接地或拉高電平來實現對主機接口總線方式的配置。

        以太網變壓器

        要實現以太網接口,以太網變壓器是不可缺少的。在差分接收引腳(RX+/RX-)上,需要一個專用于10BASE-T 操作的1:1 脈沖變壓器。 在差分發送引腳(TX+/TX-)上,需要外接一個帶有中心抽頭的1:2.5 脈沖變壓器。變壓器應具有2kV 以上的電壓隔離性能,以防止靜電干擾。發送端需要兩個8W(精度為1%)的電阻和一個560pF 的電容與特定端相連,接收端需要一個100W電阻與特定端相連。

        按照CP2200的要求,筆者采用的是PRJ系列的PRJ-010型變壓器。該變壓器集成了RJ-45接頭,在省去了不少連線的同時也提高了高頻信號傳輸的可靠性。

        其他電路

        LINK和ACT引腳輸出電平來驅動LED,用來指示的連接和活動狀態。

        所有電源引腳都必須與同一個外部3.3V 電源相連。類似的,所有參考地都應在外部連接到相同的接地點。每個VDD 和VSS 引腳都應連接一個0.1mF 的陶瓷旁路電容,該電容盡可能靠近引腳。

        需要特別說明的是,驅動雙絞線接口需要相對高的電流,因此以太網的收發數據線應盡可能短,并且線徑適當加大以減少電阻損耗(為了保證數據的可靠傳輸,筆者的PCB電路板選擇了20mil的線徑)。

        軟件設計

        TCP/IP 協議種類繁多,相互之間交互作用復雜,在單片機上不可能實現所有協議,所以必須對協議棧進行剪裁。結合系統的具體通信要求,筆者的系統最后只保留了TCP、UDP、IP、ICMP、ARP協議模塊。在協議棧程序的整體設計上,考慮到單片機的單任務執行方式很難發揮TCP/IP協議的特點,我們采用了基于事件驅動機制的TCP/IP協議棧的實現方法。該機制的引入,使得系統在保證具有高效的匯編語言代碼效率的同時,實時響應性也得到了大幅提高。下面將具體闡述事件驅動機制的特點和基于該機制的TCP/IP協議棧的實現。

        事件驅動機制

        系統初始化完成后, 進入事件循環體,不斷查詢C8051F040的事件隊列是否有事件。一旦事件隊列非空,則讀取事件標志字,判斷事件類型,而后調用對應事件處理子程序。處理子程序執行完畢后,仍然返回到事件循環體中。事件標志字由中斷直接或者間接驅動,當某個事件發生后,只需在中斷服務程序中將狀態字的對應位置位。中斷不斷向事件隊列中添加事件,C8051F040處理程序則不停地從事件隊列中讀取事件標志字,處理事件。

        事件驅動機制的特點為:

        *由于在中斷處理程序中,僅僅執行了改變事件標志字這樣的簡單程序語句,把事件添加到C8051F040的事件隊列中后就立即返回。所以系統關閉中斷的時間很短。增強了系統對中斷處理的實時性。

        *C8051F040根據當前讀取的事件,進行相應事件處理或者向事件隊列中添加進一步處理所需的事件。這實際上是把任務都進行了分步處理,在執行一步這一任務的同時,也可以執行一步其他任務。這樣.在不影響主程序流程的情況下,又提高了系統的實時性。

        事件循環的簡要流程

        事件循環流程

                                                        圖2  事件循環流程

        圖注:1=EVENT_ETH_ARRIVED;2=EVENT_TCP_RETRAN;3=EVENT_TCP_INACTIVITY;4=EVENT_ARP_RETRAN;5=EVENT_AGE_ARP_CACHE;6=EVENT_COME_NEWDATA;
                       

        事件循環體的簡要流程如圖2所示,其中各事件的含義分別為:

        EVENT_ETH_ARRIVED: 有待處理的以太網幀事件。檢測到此事件,C8051F040會調用讀CP2200接受緩沖區程序,然后對幀進行解包處理;

        EVENT_TCP_RETRAN: TCP重傳事件。當TCP定時器超時,觸發該事件;

        EVENT_TCP_INACTIVITY:關斷不活動連接事件。當某連接超過0.5秒沒有收發數據,則觸發此事件;
        EVENT_ARP_RETRAN:ARP請求數據包重傳事件。當某一ARP請求在發出0.5秒后沒有相應,則觸發該事件。經兩次重發都沒回應,則將以該IP為目的地址的數據包丟棄;

        EVENT_AGE_ARP_CACHE:更新ARP緩存事件。每60秒觸發該事件一次;

        EVENT_COME_NEWDATA: 有新數據事件。當有新數據待發送時,觸發該事件;

        結語

        CP2200的多種集成功能如CRC校驗,數據濾波等有效地減輕了單片機的載荷,它內部的收發接口單元操作起來靈活方便,為以太網數據包提供了有效的緩沖。芯片具有穩定的工作性能和抗干擾抗震性能,筆者利用CP2200, C8051F040單片機和TCP/IP協議棧開發出了用于鐵路機車的以太網接口板卡。此板卡已在測試機車上運行,工作性能良好,能夠進行穩定的數據傳遞。

        linux操作系統文章專題:linux操作系統詳解(linux不再難懂)

        tcp/ip相關文章:tcp/ip是什么




        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 博客| 金华市| 河池市| 洛浦县| 宣威市| 安庆市| 米林县| 五常市| 永宁县| 青浦区| 汕头市| 武功县| 正宁县| 固安县| 吴江市| 徐州市| 泗洪县| 东明县| 大足县| 罗定市| 佛冈县| 濮阳县| 绥化市| 灯塔市| 青龙| 双牌县| 滨海县| 巴林左旗| 临澧县| 达拉特旗| 盐边县| 黑河市| 通江县| 右玉县| 普宁市| 陇川县| 英超| 搜索| 扬州市| 新余市| 南溪县|