新聞中心

        EEPW首頁 > 汽車電子 > 設計應用 > 一種基于CAN總線的車輛虛擬儀表數據采集系統設計

        一種基于CAN總線的車輛虛擬儀表數據采集系統設計

        作者: 時間:2014-09-24 來源:網絡 收藏

          頻率信號處理模塊完成對捕獲端口頻率的測量,其基本思想是:在被測信號的一個周期時間內,2次脈沖下降沿分別啟動和停止定時器T2計數,兩次計數值之差的倒數即為頻率值,本模塊只需計算差值,頻率值由上位機解算。

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

          3.1 控制器編程

          本系統軟件設計的一個難點在于關于的編程。本系統處理的程序模塊有:CAN初始化子程序、CAN中斷程序和CAN數據收發子程序。

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

          CAN總線的基本特點:

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

          *CAN采用非破壞性仲裁技術,當兩個節點同時向網絡上傳送數據時,優先級低的節點主動停止數據發送,而優先級高的節點可不受影響地繼續傳輸數據,有效避免了總線沖突。

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

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

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

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

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

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

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

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

          表1 SFR功能簡述

          

        4.jpg

         

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

          

        5.jpg

         

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

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

          

        6.jpg

         

          圖5 CAN中斷子程序

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

          4 結語

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


        上一頁 1 2 下一頁

        關鍵詞: CAN RS-232/485 以太網

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 莒南县| 布尔津县| 酉阳| 奉节县| 电白县| 上蔡县| 通州区| 浦城县| 紫金县| 白河县| 九台市| 凤城市| 桂阳县| 平塘县| 马龙县| 宾阳县| 黄梅县| 敦煌市| 维西| 兰坪| 乌兰县| 崇左市| 汉川市| 松江区| 孟村| 盐池县| 蓬莱市| 云林县| 恩平市| 株洲市| 阳城县| 增城市| 闻喜县| 德州市| 聂拉木县| 东城区| 梅河口市| 潮安县| 阳江市| 斗六市| 唐海县|