新聞中心

        EEPW首頁 > 測試測量 > 設計應用 > 基于AVR處理器的CAN總線設計方案

        基于AVR處理器的CAN總線設計方案

        作者: 時間:2012-09-20 來源:網絡 收藏

        1 前 言

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

        現場總線是當前工業總線領域中最活躍的一個領域, 總線是工業數據總線領域重要的現場總線之一。 是Contro ller Area N etw ork的縮寫, 是國際標準化的串行通信協議。在當今的汽車產業中, 出于對安全性、舒適性、方便性、低公害、低成本的要求, 各種各樣的電子控制系統被開發出來。由于這些系統之間通信所用的數據類型及對可靠性的要求不盡相同, 由多條總線構成的情況很多, 線束的數量也隨之增加。為減少線束的數量、通過多個LAN進行大量數據的高速通信, 1986年德國電氣商博世公司開發出面向汽車的 通信協議。而今CAN 在歐洲已是汽車網絡的標準協議。CAN 的初衷是為了解決汽車里多種復雜數據的通信, 后來證實在很多工業領域也能應用自如。

        2 CAN 總線特性及當今狀況

        CAN 總線與其他通訊網絡的不同之處在于: 報文傳送中不包括目標地址, 以全網廣播為基礎, 各接收站根據報文中反映數據性質的標識符過濾報文;強化了對數據安全性的關注, 滿足控制系統較高的數據需求。它具有如下顯著特征: 極高的總線利用率、低成本、高速的數據傳輸速率、遠距離傳輸、可靠的錯誤處理和檢錯機制、可根據報文的ID決定接收或屏蔽該報文, 節點在錯誤嚴重的情況下具有自動退出總線的功能等等。

        CAN 總線所需完善的通信協議可由CAN 控制器芯片和接口芯片實現, 大大降低了系統的開發難度、組成成本、縮短了開發周期, 其高性能高可靠性以及靈活的設計受到人們的重視, 應用也越來越廣泛。目前比較流行的控制器芯片是飛利浦公司的SJA1000和收發器芯片TJA1050。

        由于近幾年來CAN 總線技術逐步在我國推廣開來, CAN 總線技術的獨特特點 傳輸數據的可靠性和實時性, 已獲得國際自動化控制領域的認可,其應用前景十分光明。國內推動CAN 總線技術進步的應用事例不斷擴展, 積極促進了我國自動化技術的進步。由于CAN 總線本身的特點, 其應用范圍己經擴展到過程工業、機械工業、數控機床、醫療機械、家用電器及傳感器等領域, 而在電梯控制系統中, 主板需要接收不同樓層呼梯、轎廂里呼梯、調整電梯運行參數等多路信號, 因此CAN 總線的優勢明顯。如圖1所示。

        11.jpg

        圖1 CAN總線應用拓撲結構

        3 集成CAN 控制器的ARM 微

        CAN 總線基于一組嚴格的協議, 一般來說在主CPU 外接一個專用CAN 控制器以實現。由于近年來微的迅速發展, 出現了很多功能強大的集成CAN 控制器的CPU, 使得在CAN 總線應用上又簡便了一些。而在價格上, 集成CAN 總線的微和一般處理器加上專用CAN 控制器芯片的價格相當, 所以, 集成CAN 總線的微處理器必然成為今后CAN 總線應用的趨勢。NXP 公司生產的ARM結構LPC2294就是其中一款流行的帶CAN 總線控制器的CPU。它是基于一個支持實時仿真和跟蹤的32位ARM7TDM I- S CPU 的微控制器, 并帶有256k字節嵌入的高速Flash 存儲器。極低的功耗、多個32位定時器、8路10位ADC、4路CAN以及多達9個外部中斷使它們特別適用于工業控制, 因此,LPC2294也可作為電梯控制系統的主控制器。

        4 集成CAN 控制器的高端8位

        上文提到, 電梯控制系統需要處理多路信息, 而且它們可能是具有不同傳輸速率的, 因此需要使用不同通道的CAN 總線控制器。對于控制系統, 必須具有可操作性, 考慮到要減輕主CPU 的負擔, 因此,設計一個簡單的操作系統對主系統進行操作, 而數據的交換方式就是采用CAN 總線傳輸, 此文中稱這個操作系統為副系統。副系統相對比較簡單, 其功能主要包括: ! 和主板進行信息交換; ? 具有按鍵供輸入; # 具有顯示信息的顯示器。針對功能的需要和程序的體積, 選用了ATMEL公司近年力推的8位控制器at90can128。

        a t90can128是一種基于 增強型R ISC結構的低功耗CMOS 8位單片機。通過執行一個單時鐘周期的高效指令, AT90CAN128每MH z能達1M IPS,這就可讓系統設計人員將功率損耗與處理速度優化。AVR內核具有豐富的指令集并帶有32個通用目的工作寄存器。32 個寄存器全都直接連到運算邏輯單元( ALU ) , 允許兩個獨立的寄存器在一個時鐘周期執行單個指令的方式訪問。其結果就是, 采用這種結構的速度比常規的R ISC單片機快10倍的同時代碼效率更高。它除了擁有一般AVR 處理器的AD 模塊, SPI模塊外, 還集成CAN 控制器, 為搭建基于CAN 通信的系統提供了便利。控制結構如圖2所示。

        22.jpg

        圖2 at90can128的CAN控制結構。

        對于復雜的CAN 通信協議, 在此不詳述, 以下就at90can128的CAN控制器使用作介紹。

        a t90can128的CAN 控制器提供了所有有利于消息管理的硬件, 對于每個要發送或接收的信息都是通過一個叫做消息對象( message ob ject) 的東西來封裝起來的。在對模塊初始化的時候, 程序會指定哪些消息要發送, 哪些消息要接收, 只有那些約定好標識符的消息才能被正確無誤地交換。另外, 對于接收到的遠程幀, 控制器會進行相應的自動回復。

        所以在這種方式下, 相對于最原始的CAN 控制方式, CPU 的負擔大大減小了。用戶可以根據自身要求, 通過對相關寄存器進行配置達到自己的要求。

        而在發送消息之前, 必須初始化幾個字段:

        其中IDT 是標識符字段, IDE 是標識符擴展使能選擇, RTRTAG是遠程傳輸請求, DLC 是數據長度代碼, RBnTAG 是保留字段( n = 0, 1) , MSG 是指向相應MOB的CAN 數據。當MOB 的發送指令執行后, MOB 就會準備發送一個數據或者是一個遠程幀。接著, CAN 通道就會掃描各個MOB, 尋找到優先級最高的MOB, 將其發送出去。當傳送成功后,MOB 狀態寄存器CANSTMOB 中的TXOK 位就會置位。而最重要的是, 對于每一次新的數據傳輸都必須重新對相關寄存器初始化, 否則無法正常工作。

        接收消息之前所要做的初始化步驟基本相同,只是多了IDMSK 和IDEMSK 標識符掩碼的設置。

        以下就給出基于AVR at90can128CAN 總線接口初始化以及發送、接收功能模塊的關鍵代碼及注解(見圖3)。

        33.jpg

        圖3 電梯系統主板與調試器之間的CAN通信。

        CAN 初始化:

        CANGCON | = 0X01;

        for( i= 0; i 15; i+ + )

        {

        CANPAGE = i 4; / /將15個MOB 都初始化一次

        CANCDMOB = 0;

        CANSTMOB= 0;

        CAN IDT1= 0;

        CAN IDT2= 0;

        ……

        for( j= 0; j 8; j+ + )

        CANMSG= 0;

        CANBT1= 0X1E; / /設置CAN 傳輸波特率, 16分頻

        CANBT2= 0X40;

        CANBT3= 0X49;

        CANPAGE = ( 0 4) ; / /選擇MOB0作為接收MOB, 并設定標識碼

        CAN IDT1= 0X00;

        CAN IDM1= 0X00;

        ……

        CANPAGE = ( 1 4); / /選擇MOB1作為發送MOB, 并設定標識碼

        CAN IDT1= 0X00;

        ……

        }

        發送模塊代碼:

        CANPAGE = ( 1 4); / /選定MOB1

        If( ( CANGSTA 0X10) = = 0) / /查詢CAN 狀態寄存器的TXBSY 位, 為0, 則可以發送

        for( i= 0; i 8; i+ + )

        {

        CANMSG= my _dada[ i] ; / /將要發送的數據裝入數據寄存器中, 共8 by te

        CANCDMOB | = 0X48; / /發送

        }

        接收模塊代碼是類似的, 設計思路都是在判斷發送允許標志之后, 如果允許, 就將數據裝入到指定的MOB中, 而每個MOB 一個發送周期一共可以發送8byte的數據。而CAN 總線的另一端是NXP公司LPC2294的CAN總線外圍, 其結構和原理都差不多, 當然, 在寄存器設置中會有一點差別, 但只要兩個CPU 約定好數據幀的標識符編號是什么, 傳輸速率相同, 就可以進行數據交換了。由于篇幅有限,LPC2294的CAN接口設置在此就不作介紹了。

        最后給出了CAN 總線應用CPU 外部的硬件原理參考圖, 如圖4所示。

        5 CAN 總線收發器TJA1050硬件連接圖

        圖中CAN 收發器為NXP公司的TJA1050, TXD和RXD分別連接到CPU 的CAN接口, CANL和CANH 則為與另一個CPU 連接的總線, CANL 和CANH 之間電阻值約為120歐姆, 開關S可以作為CAN 總線的硬件啟用開關。另外, 如果在抗干擾要求高的場合, 可以對TXD 和RXD使用光電隔離。

        44.jpg

        圖4 CPU 外圍收發器的硬件原理圖。

        6 結束語

        基于at90can128的CAN 總線模塊設計的電梯系統調試器, 經過長時間的檢驗, 使用良好, 通信正常無誤。在眾多的現場總線當中, CAN 總線憑借其優秀的特性已經為越來越多的工程人員認同和偏愛, 而隨著越來越多的高端CPU 對CAN 控制器的集成和綜合成本的下降, CAN 總線的使用必定會越來越普遍, 其中集成CAN 控制器的8位AVR 也會受到越來越多人的青睞。



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 安仁县| 宁蒗| 龙山县| 于都县| 江城| 重庆市| 合作市| 大田县| 水城县| 合水县| 怀来县| 河北区| 五指山市| 渭源县| 铜梁县| 蓬莱市| 涟水县| 钟山县| 威海市| 苍南县| 仪征市| 元朗区| 云浮市| 崇文区| 泾源县| 全州县| 承德市| 九龙坡区| 涟水县| 灵山县| 新竹县| 利津县| 思茅市| 逊克县| 建水县| 贺兰县| 抚松县| 安达市| 井陉县| 凌源市| 江都市|