<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 手機與無線通信 > 設(shè)計應(yīng)用 > CAN總線到Ethernet網(wǎng)的網(wǎng)關(guān)研究實現(xiàn)

          CAN總線到Ethernet網(wǎng)的網(wǎng)關(guān)研究實現(xiàn)

          作者: 時間:2009-09-21 來源:網(wǎng)絡(luò) 收藏


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

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

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

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

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

          接收子程序負責(zé)節(jié)點報文的接收。SJA1000自動接收發(fā)往該節(jié)點的數(shù)據(jù)并將收到的數(shù)據(jù)放到它的接收緩沖器中。SJA1000 的報文接收主要有兩種方式:中斷接收方式和查詢接收方式。該系統(tǒng)采用查詢接收方式。可以發(fā)送給主控制器SX52的接收信息由狀態(tài)寄存器的接收緩沖器狀態(tài)標(biāo)志RBS和接收中斷標(biāo)志RI 標(biāo)出。SX52將會把這一幀數(shù)據(jù)包存入數(shù)據(jù)緩沖區(qū)B中,然后釋放接收緩沖器,再通知總調(diào)度程序,由總調(diào)度程序調(diào)用以太網(wǎng)控制器協(xié)議轉(zhuǎn)換模塊轉(zhuǎn)發(fā)。

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

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

          結(jié) 論

            隨著Internet技術(shù)的日益成熟測控系統(tǒng)網(wǎng)絡(luò)和以太網(wǎng)將漸漸融合。CAN總線到Internet的互聯(lián)網(wǎng)關(guān)的設(shè)計是一項具有重要意義的工作,它有非常廣闊的應(yīng)用前景。

          tcp/ip相關(guān)文章:tcp/ip是什么



          上一頁 1 2 下一頁

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();