新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于ENC28J60的嵌入式以太網/CAN網關設計

        基于ENC28J60的嵌入式以太網/CAN網關設計

        作者: 時間:2009-05-19 來源:網絡 收藏

        2.1.2 數據的接收與發送
        LPC2294的每個控制器中有3個發送緩沖區,發送數據時先查詢SR寄存器是否空閑,若空閑才能寫入數據,然后判斷報文的類型,根據報文類型調用相應的發送函數,即對數據進行封裝并寫入發送緩沖區,最后調用發送命令。為了提高效率,接收數據采用中斷方式,首先在open的初始化程序中要使能接收中斷,當有中斷發生,讀取CANICR寄存器,判斷接收中斷標志是否置位,如果有則判斷報文的類型,根據報文類型調用相應的接收函數,處理接收緩沖區的數據。
        2.1.3 異常處理
        在總線發生嚴重故障的情況下,CAN節點脫離總線,此時下述寄存器位被置位為CANSR的BS位、CANIR的BEI位和EI位(如果使能)和CAN-MOD的RM位。RM將許多CAN控制器功能復位和禁止。軟件下一步必須置零RM位。發送錯誤計數器將遞減計數總線釋放條件(11個連續的隱性位)的第128個錯誤。軟件通過讀取Tx錯誤計數器對計數器遞減計數的情況進行監測。
        2.2 通信軟件
        2.2.1 的初始化
        LPC2294。對的各種操作均通過SPI接口進行,包括寄存器的設置、數據的發送和接收。LPC2294的SPI工作在主動方式,即的SPI時鐘信號由LPC2294提供。ENC28J60初始化內容主要有定義ENC28J60發送緩沖區的大小,設置MAC地址與IP地址、子網掩碼、初始化LEDA、LEDB顯示狀態,設置ENC28J60工作模式。
        2.2.2 TCP/IP協議
        采用系統中廣泛應用的LwIP協議棧。LwIP TCP/IP實現的特點是在保持協議主要功能的基礎上減少對RAM的占用,這使協議棧LwIP適合在低端系統中使用。LwIP協議棧應用到的協議有ARP,IP,IcMP,TCP,UDP,其具有滑動窗口、擁塞控制和接收分片的分組功能。在LwIP中可以有多個網絡接口,每個網絡接口都對應一個strut netif()。netif包含了相應網絡接口的屬性、收發函數。采取調用netif的方法netif→inpln()及netif→output()進行packet的收、發等操作。在驅動中主要進行的就是實現網絡口的收、發、初始化以及中斷處理。LwIP協議中沒有提供HTTP協議,所以需要用原始API函數編寫HTTP應用程序。
        2.3 /CAN雙向協議轉換
        整個中最為關鍵的就是CAN協議與TCP/IP協議的相互轉換。協議轉換流程圖如圖6所示。

        本文引用地址:http://www.104case.com/article/152488.htm

        具體過程如下:當接收到數據,首先判斷數據類型,如果是從CAN接口接收CAN協議報文,便分離出數據部分,再將報文數據部分按系統規定的應用層格式進行封裝,然后將應用層數據存入以太網接口發送緩沖區,由該接口在數據前面依次添加TCP或UDP頭、IP頭、以太幀頭,最后封裝成以太幀后,通過以太網接口發往以太網。若接收到的以太網數據,數據轉換過程相反,依次去掉IP頭、TCP或UDP頭和應用層頭,再將應用層數據按CAN報文格式封裝好后存入CAN接口發送緩沖區,由CAN接口發往CAN網絡中相應設備。若應用層數據長度大于8 B,則還需將數據以8 B為一組進行拆分。


        3 結 語
        符合IEEE802.3協議的ENC28J60不僅能提供以太網通信的相應功能,而且體積小,能夠簡化設計,可以設計出較小的。用上述方法構建的通信可實現以太網與CAN總線之間的協議轉換,為以太網與CAN總線網絡的互聯提供了一種傳輸速度快,成本低,穩定性和安全性高的解決方案。

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

        上一頁 1 2 3 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 科尔| 鄢陵县| 彰武县| 依安县| 横山县| 赤城县| 胶州市| 郁南县| 岳阳县| 三门县| 册亨县| 张家川| 哈巴河县| 桦甸市| 临城县| 泾阳县| 都昌县| 栾城县| 南充市| 河间市| 诏安县| 边坝县| 宝清县| 舞钢市| 兴义市| 吉木乃县| 当涂县| 县级市| 报价| 敖汉旗| 鹤岗市| 本溪市| 嘉善县| 日照市| 重庆市| 个旧市| 红原县| 安义县| 阿巴嘎旗| 崇明县| 娱乐|