新聞中心

EEPW首頁 > 汽車電子 > 設計應用 > 基于CAN總線的車輛虛擬儀表數(shù)據(jù)采集系統(tǒng)設計

基于CAN總線的車輛虛擬儀表數(shù)據(jù)采集系統(tǒng)設計

作者: 時間:2011-09-25 來源:網(wǎng)絡 收藏
3.1 控制器編程

本文引用地址:http://www.butianyuan.cn/article/197306.htm

  本系統(tǒng)軟件設計的一個難點在于關于的編程。本系統(tǒng)處理的程序模塊有:CAN初始化子程序、CAN中斷程序和CAN數(shù)據(jù)收發(fā)子程序。

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

  CAN的基本特點:

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

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

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

  *CAN的每幀數(shù)據(jù)都有CRC效驗及其他檢錯措施,保證了數(shù)據(jù)傳輸?shù)母呖煽啃?,適于在高干擾環(huán)境中使用。

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

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

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

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

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

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

表1 SFR功能簡述

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

  圖4 CAN通信中一個重要的子程序

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

  圖5 CAN中斷子程序

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

  4 結語

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


上一頁 1 2 下一頁

評論


相關推薦

技術專區(qū)

關閉