新聞中心

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

        基于AVR處理器at90can128的CAN總線應用

        作者: 時間:2011-02-15 來源:網絡 收藏

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

        at90can128的CAN控制結構


        圖2 at90的CAN控制結構。

          對于復雜的CAN 通信協議, 在此不詳述, 以下就at90128的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)。

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


        圖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;



        關鍵詞: AVR 128 CAN can

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 锡林郭勒盟| 通道| 武乡县| 台北市| 那曲县| 永吉县| 定结县| 杭锦旗| 九江市| 山东省| 普宁市| 措美县| 富平县| 腾冲县| 河池市| 平舆县| 武平县| 客服| 调兵山市| 民和| 开原市| 湟源县| 德安县| 巴彦淖尔市| 历史| 青铜峡市| 眉山市| 海宁市| 子长县| 宁化县| 屯昌县| 昌吉市| 双牌县| 高邑县| 惠水县| 兴仁县| 大理市| 娄烦县| 抚顺市| 筠连县| 佛冈县|