AVR單片機(jī)集成CAN總線控制器分析與應(yīng)用
引言
CAN總線應(yīng)用中,總線節(jié)點(diǎn)是CAN總線的基本組成部分。CAN總線節(jié)點(diǎn)有兩種典型設(shè)計(jì)方法,第一種方法采用MCU結(jié)合獨(dú)立CAN控制器組成總線節(jié)點(diǎn)[1];第二種方法采用獨(dú)立的MCU,這時(shí)MCU需要內(nèi)部集成CAN控制器。由于第二種設(shè)計(jì)方法所用的器件少,電路關(guān)系簡單,已得到廣泛應(yīng)用。本文重點(diǎn)分析AVR系列單片機(jī)內(nèi)部集成的CAN控制器及其應(yīng)用方法。
AT90CAN集成CAN總線控制器分析
AVR內(nèi)部集成CAN控制器的芯片主要包括AT90CAN32/64/128三種單片機(jī),它們之間的主要區(qū)別是存儲(chǔ)空間不同。
AT90CAN32/64/128內(nèi)部集成的CAN總線控制器由CAN通道和郵箱組成,其工作參數(shù)通過寄存器設(shè)置,工作過程也通過寄存器監(jiān)控。CAN控制器基本結(jié)構(gòu)如圖1所示。
CAN總線控制器組成
CAN通道
CAN通道是CAN控制器用于完成發(fā)送和接收的部分。使用CAN控制器時(shí),需要對(duì)CAN通道工作模式和位定時(shí)進(jìn)行設(shè)置。
(1)CAN通道工作模式
CAN通道有使能、待命以及只聽三種工作模式。不同模式下通道、時(shí)鐘以及寄存器的工作模式不同,詳細(xì)內(nèi)容見參考文獻(xiàn)[3]。
(2)位定時(shí)
CAN通道位定時(shí)的概念和基本規(guī)定與CAN總線協(xié)議一致。AVR系列單片機(jī)中,CAN總線控制器時(shí)間份額(TQ)即為波特率分頻器輸出時(shí)鐘信號(hào)的周期。CAN總線位周期由同步段(SYNS)、傳播段(PRS)、相位緩沖段1(PHS1)、相位緩沖段2(PHS2)組成,每個(gè)時(shí)間段的長度都是時(shí)間份額(TQ)的整數(shù)倍。通過位定時(shí)設(shè)置可以確定各時(shí)間段的長度,同時(shí)還可以設(shè)置重同步跳轉(zhuǎn)寬度(SJW)以及信號(hào)采樣位置和采樣次數(shù)。設(shè)置時(shí),CAN總線位時(shí)間必須設(shè)置在8~25個(gè)時(shí)間份額之間。位定時(shí)設(shè)置完畢后即可計(jì)算總線波特率,計(jì)算方法見參考文獻(xiàn)[3]。
郵箱及報(bào)文對(duì)象(MOb)
AT90CAN32/64/128單片機(jī)集成的CAN控制器通過郵箱存儲(chǔ)報(bào)文,并以MOb的形式管理。郵箱包含15個(gè)獨(dú)立的MOb,每個(gè)MOb都可以設(shè)置為接收或發(fā)送模式。發(fā)送時(shí),編號(hào)小的MOb優(yōu)先級(jí)高。接收時(shí),只有當(dāng)CAN控制器接收到報(bào)文的標(biāo)識(shí)符與某個(gè)MOb預(yù)先設(shè)置的標(biāo)識(shí)符吻合時(shí),CAN控制器才會(huì)將接收到的報(bào)文存儲(chǔ)在該MOb中,并可以通過中斷的方式通知單片機(jī)。CAN控制器還可自動(dòng)對(duì)遠(yuǎn)程幀作出應(yīng)答,從而減輕CPU的負(fù)擔(dān)。
(1)MOb工作模式
MOb包括禁止、發(fā)送、接收、自動(dòng)應(yīng)答、幀緩沖器接收等6種不同的工作模式。芯片復(fù)位后,MOb并沒有默認(rèn)的工作狀態(tài)。因此,在使能MOb之前必須對(duì)MOb進(jìn)行配置,配置內(nèi)容及相應(yīng)的工作模式如表1所示。
評(píng)論