新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > CAN總線的硬/軟件設計簡述

        CAN總線的硬/軟件設計簡述

        作者: 時間:2012-03-31 來源:網絡 收藏

        引 言

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

        隨著信息技術的飛速發(fā)展,32位ARM微控制器以其低功耗、高性能以及小體積等特性,得到了廣泛的應用。在汽車、消費娛樂、儀器儀表、工業(yè)控制、海量存儲、網絡、安保和無線等領域,隨處可見其應用實例。因而,基于ARM的技術方案是最具市場前景和市場優(yōu)勢的解決方案。

        現場是當前工業(yè)通信領域中應用最廣的技術之一。作為現場之一的,以其高性能、高可靠性以及靈活的越來越受到人們的重視,越來越多的 ARM微控制器帶有控制器。Philips 2000系列ARM微控制器是基于ARM7的集成有2個或4個控制器的微控制器,在工業(yè)通信網絡中有廣泛的應用。

        1 CAN總線的硬/

        1.1 硬件

        LPC2000系列ARM內置CAN控制器,每一個CAN控制器都與SJAl000有相似的寄存器結構,只是寄存器訪問由8位字節(jié)訪問轉變?yōu)?2位雙字訪問,因而使得硬件連接相對變得簡單。 CAN總線驅動器使用82C250或TJA1050。為增強節(jié)點的抗干擾能力,CAN控制器與總線驅動器可不直接相連,而是通過高速光耦6N137連接。光耦部分采用的兩個電源應隔離,故采用電源隔離模塊。

        1.2 設計

        CAN節(jié)點的基本設計包括CAN節(jié)點初始化、報文發(fā)送、報文接收3部分。在這3部分程序的基礎上可編出CAN總線通信的一般應用程序。當然,要將CAN總線應用于通信任務比較復雜的系統(tǒng)中,還需要編寫CAN總線異常處理、驗收濾波設置等內容。

        2 驗收濾波器的設置及工作原理

        當CAN控制器接收一完整的標識符時,將通知驗收濾波器。驗收濾波器響應這個信號,并讀出標識符,與AF(驗收濾波)RAM中的標識符表格進行匹配,以決定接收或放棄此幀信息。

        為方便編程實現,把AF RAM的內容按32位模式排列,每個32位稱為一個“cell”。表格就是cell的集合。前兩種表格中每個cell包含2個標識符,且配置時每個 cell中高位標識符小于低位標識符,否則會引起驗收濾波器執(zhí)行失敗。接下來的2個表格,每一對范圍或每一個標識符占用1個cell,而合法的擴展標識符范圍表格必須以偶數個cell出現。每個表格均需按升序排列,每種表格可根據應用需要適當裁減。

        3 驗收濾波編程實現

        程序用C語言編制,在ADSl.2開發(fā)環(huán)境下通過JTAG接口進行實時調試、仿真和下載,并在實際應用中得到了驗證。要說明的是,Fullcan模式應用較少,程序未涉及它的設置;設置了獨立標準標識符和標準標識符范圍表格,對標準ID{1,2, 0x10,0x20}和指定范圍{{90=ID=100}及{0x300=ID=0x400}}的信號進行接收,獨立擴展標識符表格和擴展標識符范圍表格未設置。需要設置時,可參考前兩種表格的設置程序。

        在CANREG.H中,定義驗收濾波模式寄存器結構如下:

        ②初始化一個獨立標準標識符表格的內容。

        ③初始化一個標準標識符組表格的內容。

        ④用獨立標準標識符表格內容初始化1,uT的獨立標準標淤符表格。

        ⑤用標準標識符范圍表格內容初始化LuT的標準標識符范圍表格。

        ⑥模式2,啟動全局驗收濾波器。

        在majn.c中所含的4個相關函數略。

        結語

        在SJAlO∞的應用巾,驗收濾波器只能對一些規(guī)律性較強的ID和個數較少的ID進行濾波‘硼。當需要設計復雜的驗收濾波器時,以上的驗收濾波模塊能起到一定的作用。當然,在具體的應.Hj場合.還需要考慮通信協議、CAK總線異常處理、cAN初始化、接收和發(fā)送等程序。

        c語言相關文章:c語言教程




        關鍵詞: 簡述 設計 軟件 總線 CAN

        評論


        相關推薦

        技術專區(qū)

        關閉
        主站蜘蛛池模板: 阳东县| 若羌县| 林州市| 黄陵县| 沧源| 蓬溪县| 平江县| 呼伦贝尔市| 门源| 长宁区| 通渭县| 大理市| 祁连县| 瓦房店市| 淄博市| 全椒县| 全南县| 微博| 墨玉县| 改则县| 南漳县| 乌兰浩特市| 屏南县| 凌源市| 武冈市| 温州市| 永德县| 黑龙江省| 日喀则市| 白城市| 郧西县| 安新县| 尚志市| 新乡县| 曲靖市| 苏尼特左旗| 禹州市| 凤阳县| 吉安县| 南丰县| 全南县|