天天看點

飛思卡爾MC9S12X CAN驅動

     今天帶着大家學習下MC9S12XS  CAN驅動子產品開發。首先先了解下什麼CAN,用途。          

CAN總線的概念:

       CAN是控制器區域網路絡(Controller Area Network)的簡稱,是由研發和生産汽車電子産品著稱的德國BOSCH公司開發,并最終成為國際标準(ISO11898)。

       CAN(Controller Area Network)是ISO國際标準化的串行通信協定。廣泛應用于汽車、船舶等。具有已經被大家認可的高性能和可靠性。

  CAN控制器通過組成總線的2根線(CAN-H和CAN-L)的電位差來确定總線的電平,在任一時刻,總線上有2種電平:顯性電平和隐性電平。

       “顯性”具有“優先”的意味,隻要有一個單元輸出顯性電平,總線上即為顯性電平,并且,“隐性”具有“包容”的意味,隻有所有的單元都輸出隐性電平,總線上才為隐性電平。(顯性電平比隐性電平更強)。總線上執行邏輯上的線“與”時,顯性電平的邏輯值為“0”,隐性電平為“1”。

CAN總線的用途:

       在目前的汽車産業中,出于對安全性、舒适性、友善性、低公害、低成本的要求,各種各樣的電子控制系統被開發了出來。由于這些系統之間通信所用的資料類型及對可靠性的要求不盡相同,由多條總線構成的情況很多,線束的數量也随之增加。為适應“減少線束的數量”、“通過多個LAN,進行大量資料的高速通信”的需要,1986 年德國電氣商博世公司開發出面向汽車的CAN 通信協定。此後,CAN 通過ISO11898 及ISO11519 進行了标準化,現在在歐洲已是汽車網絡的标準協定。現在,CAN 的高性能和可靠性已被認同,并被廣泛地應用于工業自動化、船舶、醫療裝置、工業裝置等方面。

        當車載各電子控制裝置在不具有CAN功能(如果是不具有CAN通訊能力的電控裝置,使得其與其它電控裝置互相之間不能進行資料通訊,這樣造成各電控裝置的電控能力差,功能單一,可擴充性差),不能直接進行通訊的情況下,采用“CAN子產品”産品就可以實作具有CAN功能的車載電控網絡系統,各電控裝置互相之間可以互相傳遞所需的電控信号,使得整車的電控系統作用更加強大。

下面我們正式的開始學習下MC9S12  CAN驅動子產品開發。

飛思卡爾MC9S12X CAN驅動
飛思卡爾MC9S12X CAN驅動

MSCAN子產品整體架構如下所示:

飛思卡爾MC9S12X CAN驅動
飛思卡爾MC9S12X CAN驅動

下面我們結合代碼一起來看看,CAN驅動

飛思卡爾MC9S12X CAN驅動

CAN初始化函數主要包括:CAN波特率的設定,設定CAN接收中斷使能、CAN濾波器等等。

飛思卡爾MC9S12X CAN驅動

CAN接收函數主要包括:當接收寄存器标志位置位之後,讀取相應的寄存器。如CAN 辨別符  CAN 資料 CAN 長度,儲存至制定的變量中。。

飛思卡爾MC9S12X CAN驅動

ca

CAN發送函數主要包括  設定CAN辨別符、設定CAN資料、設定CAN長度等,在此之前還有一些邏輯判斷,如判斷長度、判斷寄存器是為空等。

想要擷取CAN驅動源碼,請關注微信公衆号“嵌入式軟體開發學習圈”。。。。。

飛思卡爾MC9S12X CAN驅動