<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 汽車(chē)電子 > 設計應用 > 基于CAN總線(xiàn)的車(chē)輛虛擬儀表數據采集系統設計

基于CAN總線(xiàn)的車(chē)輛虛擬儀表數據采集系統設計

作者: 時(shí)間:2011-09-25 來(lái)源:網(wǎng)絡(luò ) 收藏
3.1 控制器編程

本文引用地址:http://dyxdggzs.com/article/197306.htm

  本系統軟件設計的一個(gè)難點(diǎn)在于關(guān)于的編程。本系統處理的程序模塊有:CAN初始化子程序、CAN中斷程序和CAN數據收發(fā)子程序。

  CAN 是Controller Area Network 的縮寫(xiě),是國際標準化的串行通信協(xié)議。在當前的汽車(chē)產(chǎn)業(yè)中,出于對安全性、舒適性、方便性、低公害、低成本的要求,各種各樣的電子控制系統被開(kāi)發(fā)了出來(lái)。由于這些系統之間通信所用的數據類(lèi)型及對可靠性的要求不盡相同,由多條構成的情況很多,線(xiàn)束的數量也隨之增加。為適應減少線(xiàn)束的數量、通過(guò)多個(gè)LAN,進(jìn)行大量數據的高速通信的需要,1986 年德國電氣商博世公司開(kāi)發(fā)出面向汽車(chē)的CAN 通信協(xié)議。此后,CAN 通過(guò)ISO11898 及ISO11519 進(jìn)行了標準化,現在在歐洲已是汽車(chē)網(wǎng)絡(luò )的標準協(xié)議。

  CAN的基本特點(diǎn):

  *CAN協(xié)議廢除了傳統的站地址編碼,采用數據通信數據塊進(jìn)行編程,可以多主方式工作。

  *CAN采用非破壞性仲裁技術(shù),當兩個(gè)節點(diǎn)同時(shí)向網(wǎng)絡(luò )上傳送數據時(shí),優(yōu)先級低的節點(diǎn)主動(dòng)停止數據發(fā)送,而優(yōu)先級高的節點(diǎn)可不受影響地繼續傳輸數據,有效避免了沖突。

  *CAN采用短幀結構,每一幀的 有效字節為8個(gè)(CAN技術(shù)規范2.0A),數據傳輸時(shí)間短,受干擾的概率低,重新發(fā)送的時(shí)間短。

  *CAN的每幀數據都有CRC效驗及其他檢錯措施,保證了數據傳輸的高可靠性,適于在高干擾環(huán)境中使用。

  *適用于現場(chǎng)設備與儀表之間或者與其上位設備間的通信網(wǎng)絡(luò ),可以統一組態(tài),相互操作,控制功能分散到最底層。

  *CAN節點(diǎn)在錯誤嚴重的情況下,具有自動(dòng)關(guān)閉總線(xiàn)的功能,切斷它與總線(xiàn)的聯(lián)系,以使總線(xiàn)上其它操作不受影響。

  *CAN可以點(diǎn)對點(diǎn)、一點(diǎn)對多點(diǎn)(成組)及全局廣播集中方式傳送和接受數據

  *CAN總線(xiàn)直接通訊距離最遠可達10km/5Kbps,通訊速率最高可達1Mbps/40m.

  *采用不歸零碼(NRZ-Non-Return-to-Zero)編碼/解碼方式,并采用位填充(插入)技術(shù)。

  CAN控制器是以CPU存儲器映像外圍設備出現的。P80C592的CPU與CAN控制器之間的數據傳輸通過(guò)4個(gè)特殊功能寄存器來(lái)實(shí)現,即: CANADR、CANCON、CANSTA和CANDAT,通過(guò)這四個(gè)特殊功能寄存器,CPU可以訪(fǎng)問(wèn)CAN控制器內部的任一寄存器(地址為0~29)和 DMA邏輯。表1給出了這四個(gè)SFR的功能簡(jiǎn)述,其中CANCON和CANSTA的讀寫(xiě)操作含義不同。

表1 SFR功能簡(jiǎn)述

  CAN控制器初始化(圖4)是CAN通信中一個(gè)非常重要的子程序,程序是否合理將直接影響整個(gè)通信過(guò)程。CAN控制器的初始化首先必須通過(guò)置位CAN控制寄存器的復位請求位,置位復位請求并不影響正在進(jìn)行的一個(gè)收發(fā)作業(yè),特別需要注意的是,只有當復位請求被置位時(shí),CAN內部地址為4-8的寄存器方可被訪(fǎng)問(wèn),在復位操作結束后必須將該位置0以保持所進(jìn)行的設置并使CAN返回工作狀態(tài)。

  圖4 CAN通信中一個(gè)重要的子程序

  P80C592和其在片CAN控制器都具有中斷寄存器,必須注意兩者的區別。CAN中斷子程序(圖5)首先讀CAN中斷寄存器(IR)以判斷中斷類(lèi)型,據此轉入相應的操作。如果接收緩存器滿(mǎn)而另一個(gè)報文的首字節又需要被存儲時(shí),數據超限位被置位,此時(shí)應清除超限并釋放接收緩存,然后重新發(fā)送數據請求。在數據接受子程序中當數據被轉入RAM區后,應及時(shí)釋放接受緩存器,以便為接收下一幀數據做好準備。

  圖5 CAN中斷子程序

  數據發(fā)送子程序見(jiàn)圖6.CAN控制器向總線(xiàn)發(fā)送數據時(shí),首先將在片主RAM中數據存放的首地址寫(xiě)入CANSTA,然后讀取CANSTA.6的值(讀 CANSTA的操作其實(shí)是對CAN控制器內部狀態(tài)寄存器的讀操作,CANSTA.6是錯誤顯示位,當至少有一個(gè)總線(xiàn)錯誤計數器計數達到CPU告警極限時(shí),該位將被CAN控制器置位。),若檢測出錯,則執行CAN初始化子程序,若正常,則繼續檢測接收狀態(tài)和發(fā)送緩沖器狀態(tài),若發(fā)送條件滿(mǎn)足則在CANADR中寫(xiě)入發(fā)送緩存器地址并置位DMA控制位,DMA傳送隨即被啟動(dòng),數據場(chǎng)由RAM拷貝到發(fā)送緩存器,置發(fā)送請求位后數據開(kāi)始發(fā)送。

  4 結語(yǔ)

  用高性能的P80C592和AD1674A模塊組成車(chē)輛環(huán)境系統具有較高的性?xún)r(jià)比,目前該系統已投入試用階段,運行狀況良好。CAN總線(xiàn)非常適合分布式控制或適時(shí)控制的串行通信網(wǎng)絡(luò ),本課題只涉及了,如果在此基礎上擴展車(chē)輛輔助控制和重要數據備份功能,系統將會(huì )有更廣闊的應用前景。


上一頁(yè) 1 2 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>