CAN基礎(chǔ)知識介紹_第1頁
CAN基礎(chǔ)知識介紹_第2頁
CAN基礎(chǔ)知識介紹_第3頁
CAN基礎(chǔ)知識介紹_第4頁
CAN基礎(chǔ)知識介紹_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

WordCAN基礎(chǔ)知識介紹

1.

(CAN)協(xié)議

1.1

CAN協(xié)議簡介

CAN是控制器局域(網(wǎng)絡(luò))(ControllerAreaNetwork)的簡稱,它是由研發(fā)和生產(chǎn)(汽車電子)產(chǎn)品著稱的德國(BOSCH)公司開發(fā)的,并最終成為國際標(biāo)準(zhǔn)(ISO11519以及ISO11898),是國際上應(yīng)用最廣泛的現(xiàn)場總線之一。差異點(diǎn)如下:

1.2CAN物理層

CAN通訊不是以(時鐘)(信號)來進(jìn)行同步的,它是一種異步通訊,只具有CAN_High和

CAN_Low兩條信號線,共同構(gòu)成一組差分信號線,以差分信號的形式進(jìn)行通訊。CAN物理層的形式主要有兩種:

遵循ISO11898標(biāo)準(zhǔn)的高速、短距離閉環(huán)網(wǎng)絡(luò),總線最大長度為40m,(通信)速度最高為1Mbps,總線的兩端各要求有一個120歐的電阻

是遵循ISO11519-2標(biāo)準(zhǔn)的低速、遠(yuǎn)距離開環(huán)網(wǎng)絡(luò),最大傳輸距離為1km,最(高通)訊速率為125kbps,兩根總線是獨(dú)立的、不形成閉環(huán),要求每根總線上各串聯(lián)有一個2.2千歐的電阻

以TJA1050(芯片)作為CAN(收發(fā)器)的(電路原理)圖如下圖示

差分信號又稱差模信號,差分信號傳輸時,需要兩根信號線,這兩個信號線的振幅相等,相位相反,通過兩根信號線的電壓差值來表示邏輯0和邏輯1,CAN中顯性電平(差值為正)對應(yīng)邏輯0,隱性電平(差值小于或等于0)對應(yīng)邏輯1,顯性電平比隱性電平更強(qiáng)

1.3CAN協(xié)議層

CAN屬于異步通訊,沒有時鐘信號線,連接在同一個總線網(wǎng)絡(luò)中的各個節(jié)點(diǎn)會像串口異步通訊那樣,節(jié)點(diǎn)間使用約定好的波特率進(jìn)行通訊,CAN使用位同步的方式來抗干擾、吸收誤差,實(shí)現(xiàn)對總線電平信號進(jìn)行正確的采樣,確保通訊正常

位時序分解:為了實(shí)現(xiàn)位同步,CAN協(xié)議把每一個數(shù)據(jù)位的時序分解成SS段、PTS段、PBS1段、PBS2段,這四段的長度加起來即為一個CAN數(shù)據(jù)位的長度。分解后最小的時間單位是Tq,一個完整的位由8~25個Tq組成

波特率:總線上的各個通訊節(jié)點(diǎn)只要約定好1個Tq的時間長度以及每一個數(shù)據(jù)位占據(jù)多少個Tq,就可以確定CAN通訊的波特率

例如,假設(shè)上圖中的1Tq=1us,而每個數(shù)據(jù)位由19個Tq組成,則傳輸一位數(shù)據(jù)需要時間T1bit=19us,從而每秒可以傳輸?shù)臄?shù)據(jù)位個數(shù)為:1x10次方/19=52631.6(bps)。這個每秒可傳輸?shù)臄?shù)據(jù)位的個數(shù)即為通訊中的波特率。

同步過程:波特率只是約定了每個數(shù)據(jù)位的長度,數(shù)據(jù)同步還涉及到相位的細(xì)節(jié),此時就要用到數(shù)據(jù)位內(nèi)的SS、PTS、PBS1及PBS2段了。根據(jù)對段的應(yīng)用方式差異,CAN的數(shù)據(jù)同步分為硬同步和重新同步。其中硬同步只是當(dāng)存在幀起始信號時起作用,無法確保后續(xù)一連串的位時序都是同步的,而重新同步方式可解決該問題

硬同步:CAN節(jié)點(diǎn)通過總線發(fā)送數(shù)據(jù)時,會發(fā)送一個幀起始信號。而掛載到CAN總線上的節(jié)點(diǎn)在不發(fā)送數(shù)據(jù)時,會時刻(檢測)總線上的信號。如下圖,當(dāng)總線出現(xiàn)幀起始信號時,節(jié)點(diǎn)檢測到總線的幀起始信號不在節(jié)點(diǎn)內(nèi)部時序的SS段范圍,所以判斷它自己的內(nèi)部時序與總線不同步,因而這個狀態(tài)的采樣點(diǎn)采集得的數(shù)據(jù)是不正確的。所以節(jié)點(diǎn)以硬同步的方式調(diào)整,把自己的位時序中的SS段平移至總線出現(xiàn)下降沿的部分,獲得同步,同步后采樣點(diǎn)就可以采集得正確數(shù)據(jù)了

重新同步:前面的硬同步只是當(dāng)存在幀起始信號時才起作用,如果在一幀很長的數(shù)據(jù)內(nèi),節(jié)點(diǎn)信號與總線信號相位有偏移時,這種同步方式就無能為力了。因而引入重新同步方式,它利用普通數(shù)據(jù)位的高至低電平的跳變沿來同步。與硬同步方式相似的是它們都使用SS段來進(jìn)行檢測,同步的目的都是使節(jié)點(diǎn)內(nèi)的SS段把跳變沿包含起來。重新同步分為超前和滯后兩種情況,以總線跳變沿與SS段的相對位置進(jìn)行區(qū)分。

--相位超前:節(jié)點(diǎn)從總線的邊沿跳變中,檢測到它內(nèi)部的時序比總線的時序相對超前2Tq,這時控制器在下一個位時序中的PBS1段增加2Tq的時間長度,使得節(jié)點(diǎn)與總線時序重新同步

--相位滯后:節(jié)點(diǎn)從總線的邊沿跳變中,檢測到它的時序比總線的時序相對滯后2Tq,這時控制器在前一個位時序中的PBS2段減少2Tq的時間長度,獲得同步

報文種類及結(jié)構(gòu):對數(shù)據(jù)、操作命令(如讀/寫)以及同步信號進(jìn)行打包,打包后的這些內(nèi)容稱為報文。CAN一共規(guī)定了5種類型的幀

數(shù)據(jù)幀的結(jié)構(gòu):數(shù)據(jù)幀是在CAN通訊中最主要、最復(fù)雜的報文,它的結(jié)構(gòu)如下圖

其他報文結(jié)構(gòu)

2.CAN控制器

(STM32)的芯片中具有bxCAN控制器,支持CAN協(xié)議2.0A和2.0B標(biāo)準(zhǔn)。該CAN控制器支持最高的通訊速率為1Mb/s;可以自動地接收和發(fā)送CAN報文,支持使用標(biāo)準(zhǔn)ID和擴(kuò)展ID的報文;外設(shè)中有3個發(fā)送郵箱,發(fā)送報文的優(yōu)先級可以使用軟件控制,還可記錄發(fā)送的時間;有2個3級深度的接收FIFO,可使用過濾功能只接收或不接收某些ID號的報文;可配置成自動重發(fā);不支持使用(DMA)進(jìn)行數(shù)據(jù)收發(fā)??蚣苁疽鈭D如下:

STM32有兩組CAN控制器,其中CAN1是主設(shè)備,框圖中的存儲訪問控制器是由CAN1控制的,CAN2無法直接訪問存儲區(qū)域,所以使用CAN2的時候必須使能CAN1外設(shè)的時鐘??驁D中主要包含CAN控制內(nèi)核、發(fā)送郵箱、接收FIFO以及驗(yàn)收篩選器,下面對框圖中的各個部分進(jìn)行介紹

2.1CAN控制內(nèi)核

主控(寄存器)CAN_MCR:負(fù)責(zé)管理CAN的工作模式

INRQ位:用來控制初始化請求,在CAN初始化時,先設(shè)置該位為1,進(jìn)行初始化,之后再設(shè)置該位為0,讓CAN進(jìn)入正常工作模式

位時序寄存器CAN_BTR:用于配置測試模式、波特率以及各種位內(nèi)的段參數(shù)

CAN波特率的計算公式:只需要知道BS1和BS2的設(shè)置,以及APB1的時鐘頻率,就可以方便的計算出波特率。比如設(shè)置TS1=9、TS2=5和BRP=6,在APB1頻率為45Mhz的條件下,即可得到CAN通信的波特率=45000/6/(5+9+1)=500Kbps

2.2CAN發(fā)送郵箱

CAN共有3個發(fā)送郵箱,即最多可以緩存3個待發(fā)送的報文。每個發(fā)送郵箱中包含有標(biāo)識符寄存器CAN_(TI)xR、數(shù)據(jù)長度控制寄存器CAN_TDTxR及2個數(shù)據(jù)寄存器CAN_TDLxR、CAN_TDHxR,如下圖

當(dāng)使用CAN外設(shè)發(fā)送報文時,需要把報文的各個段分解,按位置寫入到這些寄存器中,并對標(biāo)識符寄存器CAN_TIxR中的發(fā)送請求寄存器位TMIDxR_TXRQ置1,即可把數(shù)據(jù)發(fā)送出去。其中標(biāo)識符寄存器CAN_TIxR中的STDID寄存器位比較特別。我們知道CAN的標(biāo)準(zhǔn)標(biāo)識符的總位數(shù)為11位,而擴(kuò)展標(biāo)識符的總位數(shù)為29位的。當(dāng)報文使用擴(kuò)展標(biāo)識符的時候,標(biāo)識符寄存器CAN_TIxR中的STDID[10:0]等效于EXTID[18:28]位,它與EXTID[17:0]共同組成完整的29位擴(kuò)展標(biāo)識符

發(fā)送郵箱標(biāo)識符寄存器CAN_TIxR

發(fā)送郵箱數(shù)據(jù)長度和時間戳寄存器CAN_TDTxR

發(fā)送郵箱低字節(jié)數(shù)據(jù)寄存器CAN_TDLxR

發(fā)送郵箱高字節(jié)數(shù)據(jù)寄存器CAN_TDHxR

2.3CAN接收FIFO

CAN共有2個接收FIFO,每個FIFO中有3個郵箱,即最多可以緩存6個接收到的報文。當(dāng)接收到報文時,F(xiàn)IFO的報文計數(shù)器會自增,而STM32內(nèi)部讀取FIFO數(shù)據(jù)之后,報文計數(shù)器會自減,通過狀態(tài)寄存器可獲知報文計數(shù)器的值,而通過前面主控制寄存器的(RF)LM位,可設(shè)置鎖定模式,鎖定模式下FIFO溢出時會丟棄新報文,非鎖定模式下FIFO溢出時新報文會覆蓋舊報文。跟發(fā)送郵箱類似,每個接收FIFO中包含有標(biāo)識符寄存器CAN_RIxR、數(shù)據(jù)長度控制寄存器CAN_RDTxR及2個數(shù)據(jù)寄存器CAN_RDLxR、CAN_RDHxR,它們的功能見下表

通過中斷或狀態(tài)寄存器知道接收FIFO有數(shù)據(jù)后,我們再讀取這些寄存器的值即可把接收到的報文加載到STM32的內(nèi)存中

接收FIFO郵箱標(biāo)識符寄存器CAN_RIxR

接收FIFO郵箱數(shù)據(jù)長度和時間戳寄存器CAN_RDTxR

接收FIFO郵箱低字節(jié)數(shù)據(jù)寄存器CAN_RDLxR

接收FIFO郵箱高字節(jié)數(shù)據(jù)寄存器CAN_RDHxR

2.4CAN驗(yàn)收篩選器

AN驗(yàn)收篩選器,共有28個篩選器組,每個篩選器組有2個寄存器,CAN1和CAN2共用篩選器。CAN協(xié)議中,消息的標(biāo)識符與節(jié)點(diǎn)地址無關(guān),但與消息內(nèi)容有關(guān)。因此,發(fā)送節(jié)點(diǎn)將報文廣播給所有接收器時,接收節(jié)點(diǎn)會根據(jù)報文標(biāo)識符的值來確定軟件是否需要該消息,為了簡化軟件的工作,STM32的CAN外設(shè)接收報文前會先使用驗(yàn)收篩選器檢查,只接收需要的報文到FIFO中。篩選器工作的時候,可以調(diào)整篩選ID的長度及過濾模式。

根據(jù)篩選ID長度來分類有有以下兩種:

檢查STDID[10:0]、EXTID[17:0]、IDE和RTR位,共31位

檢查STDID[10:0]、RTR、IDE和EXTID[17:15],共16位

根據(jù)過濾的方法分為以下兩種模式:

標(biāo)識符列表模式,它把要接收報文的ID列成一個表,要求報文ID與列表中的某一個標(biāo)識符完全相同才可以接收,可以理解為白名單管理。

掩碼模式,它把可接收報文ID的某幾位作為列表,這幾位被稱為掩碼,可以把它理解成關(guān)鍵字搜索,只要掩碼(關(guān)鍵字)相同,就符合要求,報文就會被保存到接收FIFO

通過配置篩選模式寄存器CAN_FM1R的FBMx位可以設(shè)置篩選器工作在哪個模式。通過配置篩選尺度寄存器CAN_FS1R的FSCx位可以設(shè)置篩選器工作在哪個尺度。不同的尺度和不同的過濾方法可使篩選器工作在圖的4種狀態(tài)

每組篩選器包含2個32位的寄存器,分別為CAN_FxR1和CAN_FxR2,它們用來存儲要篩選的ID或掩碼,各個寄存器位代表的意義與圖中兩個寄存器下面“映射”的一欄一致,各個模式的說明見表

例如下面的表格所示,在掩碼模式時,第一個寄存器存儲要篩選的ID,第二個寄存器存儲掩碼,掩碼為1的部分表示該位必須與ID中的內(nèi)容一致,篩選的結(jié)果為表中第三行的ID值,它是一組包含多個的ID值,其中x表示該位可以為1可以為0

而工作在標(biāo)識符模式時,2個寄存器存儲的都是要篩選的ID,它只包含2個要篩選的ID值(

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論