新聞中心

        EEPW首頁 > 手機與無線通信 > 設計應用 > CAN總線到Ethernet網的網關研究實現

        CAN總線到Ethernet網的網關研究實現

        作者: 時間:2009-09-21 來源:網絡 收藏


        控制器協議模塊
        控制器協議轉換模塊程序主要由SJA1000的寄存器讀、寫程序,初始化程序和發送、接收程序5 個子程序組成。之所以要編寫單獨的SJA1000寄存器讀、寫子程序,這是由SX52 芯片只有I/O端口的特點所決定的。

        (1) 讀SJA1000 寄存器子程序Read()其過程為:Re引腳設為輸出;CS片選清零;Rd引腳設為輸出;輸出地址;置位ALE;延時20 ns ;ALE位清零;Rd 引腳設為輸入;/Read 位清零;讀入數據;延時20ns ;/Read 位置位;CS片選置位;返回。

        (2) 寫SJA1000寄存器子程序CANWrite()其過程為:Re引腳設為輸出;CS片選清零;置位ALE;Rd 引腳設為輸出;輸出地址;ALE位清零;/wr位清零;輸出數據;延時20ns;CS片選置位; 返回。

        (3) SJA1000初始化子程序CANInit()選用CAN2.0A協議構建CAN控制網絡,對SJA1000的初始化主要完成控制寄存器CR、驗收代碼寄存器ACR、驗收屏蔽寄存器AMR、定時寄存器BTR0,1和輸出控制寄存器OCR的設置。

        (4) 發送接收子程序txdsub(),rxdsub()發送子程序負責節點報文的發送,由CAN控制器SJA1000獨立完成。主控制器SX52只需將數據緩沖區A中已按CAN2.0A協議格式組合成的一幀報文送入SJA1000 發送緩沖區中,然后將命令寄存器里的發送請求標志置位,即可發送報文。

        接收子程序負責節點報文的接收。SJA1000自動接收發往該節點的數據并將收到的數據放到它的接收緩沖器中。SJA1000 的報文接收主要有兩種方式:中斷接收方式和查詢接收方式。該系統采用查詢接收方式。可以發送給主控制器SX52的接收信息由狀態寄存器的接收緩沖器狀態標志RBS和接收中斷標志RI 標出。SX52將會把這一幀數據包存入數據緩沖區B中,然后釋放接收緩沖器,再通知總調度程序,由總調度程序調用以太網控制器協議轉換模塊轉發。

        以太網控制器協議轉換模塊
        以太網控制器協議轉換模塊主要負責從UDP數據包中解析出完整CAN協議報文,存入數據緩沖區A。同時,將數據緩沖區B中的完整CAN協議報文封裝成UDP數據報后發送到以太網上。采用UDP協議是考慮到CAN 協議數據報為短幀形式(每個數據幀最多為8個字節),因為TCP協議要進行3次握手建立連接,這對網絡來說無疑是一種資源的浪費。而UDP是無連接的傳輸,這樣可以提高網絡傳輸效率,同時,也減輕的處理任務。當然,UDP是不可靠的傳輸協議。為了提高通信的可靠性,在應用層建立回傳校驗機制,通過實驗
        測試表明這種方式是行之有效的。以太網控制器協議轉換模塊主要由若干個ARP、UDP協議的API函數組成。

        TCP/IP應用層程序設計
        基于以太網的高層通信協議一般采用TCP/IP協議。這里采用流行的SOCKET套接字編程,傳輸層協議選擇UDP(用戶數據報協議),通過VisualC++編寫應用層程序。WinSock提供了對UDP的支持,通過UDP協議可以向指定IP 地址的發送CAN 協議數據,同時也可以從它接收CAN協議數據,發送和接收方處于相同的地位沒有主次之分。利用CAsyncSocket類操縱無連接的數據發送較簡單,首先生成一個本地套接口,然后利用int CAsyncSocket : : SendTo ( constvoid 3 1pBuf , int nBufLen , UINT nHostPort , LPCTSTR1pszHostAddress = NULL ,int nFlags = 0) 發送數據,intCAsyncSocket : : ReceiveFrom ( void 3 1pBuf , int nBufLen ,CString rSocketAddess ,UINT rSocketPort , intnFlags = 0) 接收數據。利用UDP 協議發送和接收都可以是雙向的,即管理主機和SX52都可以發送和接收數據。在程序設計中,創建了一個CAsyncSocket 派生類CCanSocket ,該派生類CCanSocket 有若干成員函數,通過這些類成員函數,可以很方便地CAN到Internet 的通信。

        結 論

          隨著Internet技術的日益成熟測控系統網絡和以太網將漸漸融合。CAN總線到Internet的互聯網關的設計是一項具有重要意義的工作,它有非常廣闊的應用前景。

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



        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 无锡市| 扬州市| 神农架林区| 绍兴市| 板桥市| 临漳县| 海淀区| 辛集市| 卓资县| 吐鲁番市| 堆龙德庆县| 台中县| 汨罗市| 德惠市| 宜城市| 河西区| 洪湖市| 高平市| 双牌县| 黔西县| 南投市| 兴隆县| 溧阳市| 米易县| 自治县| 两当县| 科尔| 香港 | 固安县| 铁岭市| 贵州省| 景东| 邢台市| 新乐市| 锡林浩特市| 罗甸县| 邵阳县| 文成县| 龙岩市| 娄烦县| 罗定市|