《電子技術(shù)應用》
您所在的位置:首頁 > 測試測量 > 設計應用 > 基于AVR處理器at90can128的CAN總線應用
基于AVR處理器at90can128的CAN總線應用
維庫
摘要: 現(xiàn)場總線是當前工業(yè)總線領域中最活躍的一個領域, CAN 總線是工業(yè)數(shù)據(jù)總線領域重要的現(xiàn)場總線之一,。CAN 是Contro ller Area N etw ork的縮寫,, 是國際標準化的串行通信協(xié)議。在當今的汽車產(chǎn)業(yè)中,, 出于對安全性,、舒適性、方便性,、低公害,、低成本的要求, 各種各樣的電子控制系統(tǒng)被開發(fā)出來,。由于這些系統(tǒng)之間通信所用的數(shù)據(jù)類型及對可靠性的要求不盡相同,, 由多條總線構(gòu)成的情況很多, 線束的數(shù)量也隨之增加,。為減少線束的數(shù)量,、通過多個LAN進行大量數(shù)據(jù)的高速通信, 1986年德國電氣商博世公司開發(fā)出面向汽車的CAN 通信協(xié)議,。而今CAN 在歐洲已是汽車網(wǎng)絡的標準協(xié)議,。CAN 的初衷是為了解決汽車里多種復雜數(shù)據(jù)的通信, 后來證實在很多工業(yè)領域也能應用自如,。
關(guān)鍵詞: CAN總線 AVR處理器
Abstract:
Key words :

1 前 言

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

  2 CAN 總線特性及當今狀況

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

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

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

 

<a class=CAN總線應用拓撲結(jié)構(gòu)" src="http://files.chinaaet.com/images/20110216/470d7151-00ed-4cc5-8d5f-9693b544adac.jpg" style="filter: ; width: 500px; height: 430px" />

圖1 CAN總線應用拓撲結(jié)構(gòu)

  3 集成CAN 控制器的ARM 微處理器

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

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

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

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

at90can128的CAN控制結(jié)構(gòu)
 


圖2 at90can128的CAN控制結(jié)構(gòu),。

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

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

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

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

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

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

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

電梯系統(tǒng)主板與調(diào)試器之間的CAN通信
 


圖3 電梯系統(tǒng)主板與調(diào)試器之間的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作為發(fā)送MOB, 并設定標識碼

  CAN IDT1= 0X00;

  ……

  }

  發(fā)送模塊代碼:

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

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

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

  {

  CANMSG= my _dada[ i] ; / /將要發(fā)送的數(shù)據(jù)裝入數(shù)據(jù)寄存器中, 共8 by te

  CANCDMOB | = 0X48; / /發(fā)送

  }

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

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

  5 CAN 總線收發(fā)器TJA1050硬件連接圖

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

CPU 外圍收發(fā)器的硬件原理圖
 


圖4 CPU 外圍收發(fā)器的硬件原理圖,。

  6 結(jié)束語

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


 

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載。