加入星計(jì)劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入
  • 正文
    • 一、CAN的概述及發(fā)展歷史
    • 二、CAN的物理層
    • 三、數(shù)據(jù)鏈路層
    • 四、CAN應(yīng)用層
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

【晟矽課堂】FlexCAN發(fā)送接收

2023/04/19
3487
閱讀需 13 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

一、CAN的概述及發(fā)展歷史

CAN總線的概述及發(fā)展歷史

CAN發(fā)展的時(shí)間線:

1983年,Bosch開始研究汽車網(wǎng)絡(luò)技術(shù)

1986年,Bosch在SAE大會(huì)正式公布CAN的協(xié)議

1987年,Intel和philips公司先后推出CAN控制器芯片

1991年,Bosch頒布CAN2.0技術(shù)規(guī)范

1991年,CAN總線最新在Benz S系列轎車上實(shí)現(xiàn)

1993年,ISO頒布CAN國際標(biāo)準(zhǔn)ISO-11898

1994年,由CiA組織舉辦第一屆國際CAN大會(huì)(iCC)

2015年,CAN FD的ISO標(biāo)準(zhǔn)化

2021年,CAN XL第三代使用的規(guī)范CIA-610

CAN概述

CAN(Controller Area Network,控制器局域網(wǎng))是一種串行通信技術(shù),專門用于在汽車電子控制單元ECU)之間實(shí)現(xiàn)可靠的數(shù)據(jù)交換。

CAN通信特點(diǎn)

1)節(jié)點(diǎn)間采樣多主通訊的方式

2)采用短幀結(jié)構(gòu),報(bào)文幀的有效字節(jié)數(shù)為8個(gè),可達(dá)汽車到實(shí)時(shí)響應(yīng)的要求

3)報(bào)文ID越小,優(yōu)先級(jí)別越高。報(bào)文ID可分成不同的優(yōu)先級(jí),進(jìn)一步滿足汽車網(wǎng)絡(luò)報(bào)文的實(shí)時(shí)性要求

4)非破壞性總線仲裁處理機(jī)制

5)可靠的CRC校驗(yàn)方式,傳輸數(shù)據(jù)出錯(cuò)率極低,滿足汽車數(shù)據(jù)傳輸的可靠性要求

6)報(bào)文幀仲裁失敗或傳輸期間被破壞有自動(dòng)重發(fā)機(jī)制

7)節(jié)點(diǎn)在錯(cuò)誤嚴(yán)重的情況下,具有自動(dòng)脫離總線的功能,切斷它與總線的聯(lián)系,不影響總線的正常工作。

8)通訊距離最遠(yuǎn)達(dá)10KM

9)通訊速率最高1MB/S(此時(shí)距離最長40m)

10)節(jié)點(diǎn)數(shù)實(shí)際可達(dá)110個(gè)

11)CAN節(jié)點(diǎn)設(shè)計(jì)成本較低,通訊介質(zhì)采用雙絞線

通信網(wǎng)絡(luò)參考模型OSI

應(yīng)用層:人家交互

表示層:壓縮解壓、加密解密、編碼解碼

會(huì)話層:會(huì)話建立、維護(hù)中止會(huì)話隔離

傳輸層:可靠的連接,傳輸端口號(hào)---區(qū)分不同的應(yīng)用程序

網(wǎng)絡(luò)層:為了數(shù)據(jù)提供地址信息 ----IP地址(軟件地址)

數(shù)據(jù)鏈路層:為數(shù)據(jù)轉(zhuǎn)發(fā)提供地址MAC地址硬件地址)

物理層:提供電氣規(guī)格,數(shù)據(jù)bit的傳輸100101011

二、CAN的物理層

CAN使用總線傳輸方式

早期汽車使用點(diǎn)對(duì)點(diǎn)的通訊方式,現(xiàn)在使用總線式的線束連接,減少了通訊線的數(shù)量、通過多個(gè)網(wǎng)絡(luò)進(jìn)行大量數(shù)據(jù)的高速傳輸、診斷和做線纜簡單。

CAN物理電平說明

容錯(cuò)CAN優(yōu)缺點(diǎn):通訊速率低,承載的節(jié)點(diǎn)少,但具有更高的抗干擾能力。

CAN的編碼規(guī)則

CAN編碼采用的NRZ非歸零編碼(5個(gè)相同電平加入一個(gè)填充位),相同帶寬的情況下,NRZ編碼方式的信息量更大。

NRZI編碼:當(dāng)電平狀態(tài)發(fā)生變化時(shí),表示數(shù)據(jù)0,信號(hào)電平不變表示1(7個(gè)1變換一次0USB2.0通訊使用的編碼方式就是NRZI編碼。

RZ編碼

NRZ編碼

NRZI編碼

CAN的傳輸介質(zhì)

傳輸介質(zhì):非屏蔽雙絞線

終端電阻:120Ω

雙絞線的作用:外部干擾在兩根導(dǎo)線上產(chǎn)生的噪聲(在專業(yè)領(lǐng)域里,把無用的信號(hào)叫做噪聲)相同,以便后續(xù)的差分電路提取出有用信號(hào),差分電路是一個(gè)減法電路,兩個(gè)輸入端同相的信號(hào)(共模信號(hào))相互抵消(m-n),反相的信號(hào)相當(dāng)于x-(-y),得到增強(qiáng)。

CAN的終端電阻

CAN總線終端電阻的作用有3個(gè):

1.提高抗干擾能力,讓高頻低能量的信號(hào)迅速走掉

2.確??偩€快速進(jìn)入隱性狀態(tài),讓寄生電容的能量更快走掉

3.提高信號(hào)質(zhì)量,放置在總線的兩端,讓反射能量降低

寄生電容進(jìn)行充電和放電

 

高速信號(hào)傳輸阻抗變化,引起的反射,“振鈴”現(xiàn)象

CAN終端電阻選擇

如圖所示是CAN總線的經(jīng)典拓?fù)鋱D。終端電阻一般選擇放在最遠(yuǎn)的兩個(gè)節(jié)點(diǎn)上。如果其中一個(gè)放在中間位置,終端電阻外面的CAN收發(fā)器處于支路上,這將大大增加該節(jié)點(diǎn)的信號(hào)反射,進(jìn)而影響總線通訊。

在CAN總線中使用的典型線纜,將它們扭制成雙絞線,就可根據(jù)上述方法得到特征阻抗大約為120Ω,這也是CAN標(biāo)準(zhǔn)推薦的終端電阻阻值,所以這個(gè)120Ω是測(cè)出來的,不是算出來的,都是根據(jù)實(shí)際的線束特性進(jìn)行計(jì)算得到的。

根據(jù)標(biāo)準(zhǔn)需要考慮短路到18V的情況,假設(shè)CANH短路到18V,電流會(huì)通過終端電阻流到CANL上,而CANL內(nèi)部由于限流的原因,最大注入電流為50mA(TJA1145的規(guī)格書上標(biāo)注),這時(shí)候120Ω電阻的功率就是50mA*50mA*120Ω=0.3W。

CAN總線的電平邏輯

CAN的數(shù)據(jù)采樣點(diǎn)

采樣點(diǎn):是總線數(shù)據(jù)被讀取并被解釋為相應(yīng)位值的時(shí)間點(diǎn)。

三、數(shù)據(jù)鏈路層

幀類型類型

數(shù)據(jù)幀

分類:標(biāo)準(zhǔn)幀和擴(kuò)展幀

SOF:1bit,起始位,顯性

Identifier:11bit/29bit, ID位

RTR:遠(yuǎn)程幀和數(shù)據(jù)幀位,遠(yuǎn)程幀“1”,數(shù)據(jù)幀“0”

SRR:替代遠(yuǎn)程幀位,“1”

IDE:擴(kuò)展幀和標(biāo)準(zhǔn)幀,擴(kuò)展幀“1”,標(biāo)準(zhǔn)幀“0”

r:預(yù)留

DLC:4bit,數(shù)據(jù)長度位

Data Field:0-8 Byte,數(shù)據(jù)位

CRC:15bit,數(shù)據(jù)CRC校驗(yàn)SOF----CRC前

DEL:校驗(yàn)和應(yīng)答界定符

ACK:1bit,確認(rèn)數(shù)據(jù)是否正常接收,所謂正常接收是指不含填充錯(cuò)誤、格式錯(cuò)誤、 CRC 錯(cuò)誤。發(fā)送節(jié)點(diǎn)將此位為1,接收節(jié)點(diǎn)正常接收數(shù)據(jù)后將此位置為”0”;(1 bit)

DEL:校驗(yàn)和應(yīng)答界定符,隱形“1”

EOF:7bit,結(jié)束標(biāo)志位,連續(xù)7bit隱形位表示幀結(jié)束

CRC和ACK位

EOF結(jié)束位

遠(yuǎn)程幀

錯(cuò)誤幀

錯(cuò)誤幀:錯(cuò)誤幀可用于指示通信期間檢測(cè)到的錯(cuò)誤。錯(cuò)誤幀將強(qiáng)行中止正在進(jìn)行的錯(cuò)誤數(shù)據(jù)傳輸。

錯(cuò)誤幀的結(jié)構(gòu)與數(shù)據(jù)幀或遠(yuǎn)程幀明顯不同,僅由兩部分構(gòu)成:錯(cuò)誤標(biāo)志(error flag)和錯(cuò)誤界定符。

錯(cuò)誤幀分類:

位錯(cuò)誤:發(fā)送節(jié)點(diǎn)檢查,發(fā)送數(shù)據(jù)后回讀數(shù)據(jù),檢查發(fā)送是否錯(cuò)誤

填充錯(cuò)誤:接收節(jié)點(diǎn)檢測(cè)。CRC之前,連續(xù)6個(gè)顯性或隱形位

ACK錯(cuò)誤:發(fā)送節(jié)點(diǎn)檢測(cè)。發(fā)送數(shù)據(jù)后ACK位沒有置低

格式錯(cuò)誤:CRC之后11bit固定的格式位,

CRC錯(cuò)誤:接收節(jié)點(diǎn)檢測(cè)

位填充

位填充從以SOF的傳輸為開始,以CRC序列的最后一位的傳輸為結(jié)束。因此在傳輸包含8個(gè)數(shù)據(jù)字節(jié)的標(biāo)準(zhǔn)格式的數(shù)據(jù)幀時(shí),在極限情況下,應(yīng)有24個(gè)填充位。所以,理論上標(biāo)準(zhǔn)格式數(shù)據(jù)幀最多包含132位。

 

錯(cuò)誤檢測(cè)

 

錯(cuò)誤跟蹤

 

錯(cuò)誤處理流程

 

過載幀和幀間隙

過載幀:接收節(jié)點(diǎn)向總線上其它節(jié)點(diǎn)報(bào)告自身接收能力達(dá)到極限的幀。

幀間隔:是用來隔離數(shù)據(jù)幀(或者遠(yuǎn)程幀)的,也就是說,數(shù)據(jù)幀(或者遠(yuǎn)程幀)經(jīng)過插入幀間隔能夠?qū)⒈編c先行幀

(數(shù)據(jù)幀、遠(yuǎn)程幀、錯(cuò)誤幀、過載幀)分隔開來。

主動(dòng)錯(cuò)誤狀態(tài)下的間隙幀

 

被動(dòng)錯(cuò)誤狀態(tài)下的間隙幀

 

發(fā)送仲裁機(jī)制

特點(diǎn):

1.仲裁發(fā)送在仲裁段

2.采用“線與”機(jī)制

3.ID值越小,優(yōu)先級(jí)越高

4.仲裁失敗進(jìn)入“只聽”模式,等待空閑發(fā)送

上圖在多個(gè)節(jié)點(diǎn)同時(shí)發(fā)送報(bào)文時(shí),首次出現(xiàn)不同,且發(fā)送顯性位的節(jié)點(diǎn)占用總線。由于CAN報(bào)文首先發(fā)送的為ID段且顯性位為邏輯“0”,因此ID越小該幀的優(yōu)先級(jí)越高。

 

發(fā)送仲裁機(jī)制

上圖:數(shù)據(jù)幀A的優(yōu)先級(jí)高于數(shù)據(jù)幀B的優(yōu)先級(jí),總線空閑時(shí),數(shù)據(jù)A先發(fā)。

 

仲裁場(chǎng)

仲裁流程

 

幾種狀態(tài)仲裁錯(cuò)誤

仲裁場(chǎng)相同,數(shù)據(jù)場(chǎng)不一致

相同幀無應(yīng)答,產(chǎn)生應(yīng)答錯(cuò)誤

相同幀有應(yīng)答,隱藏了錯(cuò)誤

位同步機(jī)制

同步的目的其實(shí)就是保證采樣點(diǎn)采集時(shí),采集的位數(shù)不會(huì)錯(cuò)亂,并且都是接收端同步。發(fā)送端發(fā)送一個(gè)幀,如果接收端有延時(shí),并不做同步,那么就可能會(huì)出現(xiàn),發(fā)送端發(fā)送第2位時(shí),接收端還是按照第1位的時(shí)序來采樣,導(dǎo)致接收端認(rèn)為采集的到是第1位。顯然就出錯(cuò)了。

1)同步段(Synchronization Segment):長度固定,1個(gè)時(shí)間量子Tq;一個(gè)位的傳輸從同步段開始;同步段用于同步總線上的各個(gè)節(jié)點(diǎn),一個(gè)位的跳邊沿在此時(shí)間段內(nèi)。

2)傳播段(Propagation Segment):傳播段用于補(bǔ)償報(bào)文在總線和節(jié)點(diǎn)上傳輸時(shí)所產(chǎn)生的時(shí)間延遲;傳播段時(shí)長 ≥ 2 × 報(bào)文在總線和節(jié)點(diǎn)上傳輸時(shí)產(chǎn)生的時(shí)間延遲 ;傳播段時(shí)長可編程(1~8個(gè)時(shí)間量子Tq)。

3)相位緩沖段1(Phase Buffer Segment1):用于補(bǔ)償節(jié)點(diǎn)間的晶振誤差;允許通過重同步對(duì)該段加長;在這個(gè)時(shí)間段的末端進(jìn)行總線狀態(tài)的采樣;長度可編程(1~8個(gè)時(shí)間量子Tq)。

4)相位緩沖段2(Phase Buffer Segment2):用于補(bǔ)償節(jié)點(diǎn)間的晶振誤差;允許通過重同步對(duì)該段縮短;長度可編程(1~8個(gè)時(shí)間量子Tq)。

 

同步段時(shí)鐘機(jī)制

系統(tǒng)時(shí)鐘→CAN時(shí)鐘→CAN位時(shí)間

波特率? =? 1 / CAN位時(shí)間

 

位同步特點(diǎn)

一個(gè)位時(shí)間內(nèi)只允許一種同步方式,要么硬同步要么重同步;

任何一個(gè)從“隱性”到“顯性”的下降沿 都可以用于同步;

硬同步發(fā)生在報(bào)文的SOF位,所有接收節(jié)點(diǎn)調(diào)整各自當(dāng)前位的同步段,使其位于發(fā)送的SOF位內(nèi);

重同步發(fā)生在一個(gè)報(bào)文SOF位之外的其它段,當(dāng)下降沿落在了同步段之外時(shí)發(fā)生重同步;

在SOF到仲裁場(chǎng)發(fā)送的時(shí)間段內(nèi),如果有多個(gè)節(jié)點(diǎn)同時(shí)發(fā)送報(bào)文,那么這些發(fā)送節(jié)點(diǎn)對(duì)跳變沿不進(jìn)行重同步。

硬同步

 

重同步

重同步,PBS1延長

重同步,PBS2縮短

同步跳轉(zhuǎn)寬度

在重同步時(shí),有個(gè)同步跳轉(zhuǎn)寬度(SJW,Synchro Jump Width)的概念,表示的是PBS1和PBS2重同步時(shí)允許跳轉(zhuǎn)的最大寬度。

同步跳轉(zhuǎn)寬度必須滿足以下幾個(gè)條件:

SJW必須小于PBS1和PBS2的最小值

SJW最大值不能超過4

同步段規(guī)則

CAN報(bào)文在CAN總線上的傳輸時(shí),物理延遲包含兩個(gè)部分:

在CAN-BUS上傳輸造成的延遲

在節(jié)點(diǎn)內(nèi)部傳輸造成延遲

 

按照CAN通信協(xié)議的規(guī)定,補(bǔ)償給傳播延遲的時(shí)間長度要至少等于實(shí)際實(shí)際傳播延遲時(shí)長的2被,

即:tPTS≥2×tdel=2×(tdel+tBus)

四、CAN應(yīng)用層

定義ID的規(guī)則

 

定義控制命令和節(jié)點(diǎn)

 

定義索引對(duì)象

 

分段報(bào)文寫---起始幀

 

分段報(bào)文寫---傳輸幀和結(jié)束幀

 

分段報(bào)文讀-----起始幀

 

分段報(bào)文讀----傳輸過程

 

相關(guān)推薦

電子產(chǎn)業(yè)圖譜