一、CAN的概述及發(fā)展歷史
CAN總線的概述及發(fā)展歷史
CAN發(fā)展的時間線:
1983年,Bosch開始研究汽車網(wǎng)絡(luò)技術(shù)
1986年,Bosch在SAE大會正式公布CAN的協(xié)議
1987年,Intel和philips公司先后推出CAN控制器芯片
1991年,Bosch頒布CAN2.0技術(shù)規(guī)范
1991年,CAN總線最新在Benz S系列轎車上實現(xiàn)
1993年,ISO頒布CAN國際標準ISO-11898
1994年,由CiA組織舉辦第一屆國際CAN大會(iCC)
2015年,CAN FD的ISO標準化
2021年,CAN XL第三代使用的規(guī)范CIA-610
CAN概述
CAN(Controller Area Network,控制器局域網(wǎng))是一種串行通信技術(shù),專門用于在汽車電子控制單元(ECU)之間實現(xiàn)可靠的數(shù)據(jù)交換。
CAN通信特點
1)節(jié)點間采樣多主通訊的方式
2)采用短幀結(jié)構(gòu),報文幀的有效字節(jié)數(shù)為8個,可達汽車到實時響應(yīng)的要求
3)報文ID越小,優(yōu)先級別越高。報文ID可分成不同的優(yōu)先級,進一步滿足汽車網(wǎng)絡(luò)報文的實時性要求
4)非破壞性總線仲裁處理機制
5)可靠的CRC校驗方式,傳輸數(shù)據(jù)出錯率極低,滿足汽車數(shù)據(jù)傳輸?shù)目煽啃砸?/p>
6)報文幀仲裁失敗或傳輸期間被破壞有自動重發(fā)機制
7)節(jié)點在錯誤嚴重的情況下,具有自動脫離總線的功能,切斷它與總線的聯(lián)系,不影響總線的正常工作。
8)通訊距離最遠達10KM
9)通訊速率最高1MB/S(此時距離最長40m)
10)節(jié)點數(shù)實際可達110個
11)CAN節(jié)點設(shè)計成本較低,通訊介質(zhì)采用雙絞線
通信網(wǎng)絡(luò)參考模型OSI
應(yīng)用層:人家交互
表示層:壓縮解壓、加密解密、編碼解碼
會話層:會話建立、維護中止會話隔離
傳輸層:可靠的連接,傳輸端口號---區(qū)分不同的應(yīng)用程序
網(wǎng)絡(luò)層:為了數(shù)據(jù)提供地址信息 ----IP地址(軟件地址)
數(shù)據(jù)鏈路層:為數(shù)據(jù)轉(zhuǎn)發(fā)提供地址MAC地址(硬件地址)
物理層:提供電氣規(guī)格,數(shù)據(jù)bit的傳輸100101011
二、CAN的物理層
CAN使用總線傳輸方式
早期汽車使用點對點的通訊方式,現(xiàn)在使用總線式的線束連接,減少了通訊線的數(shù)量、通過多個網(wǎng)絡(luò)進行大量數(shù)據(jù)的高速傳輸、診斷和做線纜簡單。
CAN物理電平說明
容錯CAN優(yōu)缺點:通訊速率低,承載的節(jié)點少,但具有更高的抗干擾能力。
CAN的編碼規(guī)則
CAN編碼采用的NRZ非歸零編碼(5個相同電平加入一個填充位),相同帶寬的情況下,NRZ編碼方式的信息量更大。
NRZI編碼:當電平狀態(tài)發(fā)生變化時,表示數(shù)據(jù)0,信號電平不變表示1(7個1變換一次0USB2.0通訊使用的編碼方式就是NRZI編碼。
RZ編碼
NRZ編碼
NRZI編碼
CAN的傳輸介質(zhì)
傳輸介質(zhì):非屏蔽雙絞線
終端電阻:120Ω
雙絞線的作用:外部干擾在兩根導線上產(chǎn)生的噪聲(在專業(yè)領(lǐng)域里,把無用的信號叫做噪聲)相同,以便后續(xù)的差分電路提取出有用信號,差分電路是一個減法電路,兩個輸入端同相的信號(共模信號)相互抵消(m-n),反相的信號相當于x-(-y),得到增強。
CAN的終端電阻
CAN總線終端電阻的作用有3個:
1.提高抗干擾能力,讓高頻低能量的信號迅速走掉
2.確??偩€快速進入隱性狀態(tài),讓寄生電容的能量更快走掉
3.提高信號質(zhì)量,放置在總線的兩端,讓反射能量降低
寄生電容進行充電和放電
高速信號傳輸,阻抗變化,引起的反射,“振鈴”現(xiàn)象
CAN終端電阻選擇
如圖所示是CAN總線的經(jīng)典拓撲圖。終端電阻一般選擇放在最遠的兩個節(jié)點上。如果其中一個放在中間位置,終端電阻外面的CAN收發(fā)器處于支路上,這將大大增加該節(jié)點的信號反射,進而影響總線通訊。
在CAN總線中使用的典型線纜,將它們扭制成雙絞線,就可根據(jù)上述方法得到特征阻抗大約為120Ω,這也是CAN標準推薦的終端電阻阻值,所以這個120Ω是測出來的,不是算出來的,都是根據(jù)實際的線束特性進行計算得到的。
根據(jù)標準需要考慮短路到18V的情況,假設(shè)CANH短路到18V,電流會通過終端電阻流到CANL上,而CANL內(nèi)部由于限流的原因,最大注入電流為50mA(TJA1145的規(guī)格書上標注),這時候120Ω電阻的功率就是50mA*50mA*120Ω=0.3W。
CAN總線的電平邏輯
CAN的數(shù)據(jù)采樣點
采樣點:是總線數(shù)據(jù)被讀取并被解釋為相應(yīng)位值的時間點。
三、數(shù)據(jù)鏈路層
幀類型類型
數(shù)據(jù)幀
分類:標準幀和擴展幀
SOF:1bit,起始位,顯性
Identifier:11bit/29bit, ID位
RTR:遠程幀和數(shù)據(jù)幀位,遠程幀“1”,數(shù)據(jù)幀“0”
SRR:替代遠程幀位,“1”
IDE:擴展幀和標準幀,擴展幀“1”,標準幀“0”
r:預留
DLC:4bit,數(shù)據(jù)長度位
Data Field:0-8 Byte,數(shù)據(jù)位
CRC:15bit,數(shù)據(jù)CRC校驗SOF----CRC前
DEL:校驗和應(yīng)答界定符
ACK:1bit,確認數(shù)據(jù)是否正常接收,所謂正常接收是指不含填充錯誤、格式錯誤、 CRC 錯誤。發(fā)送節(jié)點將此位為1,接收節(jié)點正常接收數(shù)據(jù)后將此位置為”0”;(1 bit)
DEL:校驗和應(yīng)答界定符,隱形“1”
EOF:7bit,結(jié)束標志位,連續(xù)7bit隱形位表示幀結(jié)束
CRC和ACK位
EOF結(jié)束位
遠程幀
錯誤幀
錯誤幀:錯誤幀可用于指示通信期間檢測到的錯誤。錯誤幀將強行中止正在進行的錯誤數(shù)據(jù)傳輸。
錯誤幀的結(jié)構(gòu)與數(shù)據(jù)幀或遠程幀明顯不同,僅由兩部分構(gòu)成:錯誤標志(error flag)和錯誤界定符。
錯誤幀分類:
位錯誤:發(fā)送節(jié)點檢查,發(fā)送數(shù)據(jù)后回讀數(shù)據(jù),檢查發(fā)送是否錯誤
填充錯誤:接收節(jié)點檢測。CRC之前,連續(xù)6個顯性或隱形位
ACK錯誤:發(fā)送節(jié)點檢測。發(fā)送數(shù)據(jù)后ACK位沒有置低
格式錯誤:CRC之后11bit固定的格式位,
CRC錯誤:接收節(jié)點檢測
位填充
位填充從以SOF的傳輸為開始,以CRC序列的最后一位的傳輸為結(jié)束。因此在傳輸包含8個數(shù)據(jù)字節(jié)的標準格式的數(shù)據(jù)幀時,在極限情況下,應(yīng)有24個填充位。所以,理論上標準格式數(shù)據(jù)幀最多包含132位。
錯誤檢測
錯誤跟蹤
錯誤處理流程
過載幀和幀間隙
過載幀:接收節(jié)點向總線上其它節(jié)點報告自身接收能力達到極限的幀。
幀間隔:是用來隔離數(shù)據(jù)幀(或者遠程幀)的,也就是說,數(shù)據(jù)幀(或者遠程幀)經(jīng)過插入幀間隔能夠?qū)⒈編c先行幀
(數(shù)據(jù)幀、遠程幀、錯誤幀、過載幀)分隔開來。
主動錯誤狀態(tài)下的間隙幀
被動錯誤狀態(tài)下的間隙幀
發(fā)送仲裁機制
特點:
1.仲裁發(fā)送在仲裁段
2.采用“線與”機制
3.ID值越小,優(yōu)先級越高
4.仲裁失敗進入“只聽”模式,等待空閑發(fā)送
上圖在多個節(jié)點同時發(fā)送報文時,首次出現(xiàn)不同,且發(fā)送顯性位的節(jié)點占用總線。由于CAN報文首先發(fā)送的為ID段且顯性位為邏輯“0”,因此ID越小該幀的優(yōu)先級越高。
發(fā)送仲裁機制
上圖:數(shù)據(jù)幀A的優(yōu)先級高于數(shù)據(jù)幀B的優(yōu)先級,總線空閑時,數(shù)據(jù)A先發(fā)。
仲裁場
仲裁流程
幾種狀態(tài)仲裁錯誤
仲裁場相同,數(shù)據(jù)場不一致
相同幀無應(yīng)答,產(chǎn)生應(yīng)答錯誤
相同幀有應(yīng)答,隱藏了錯誤
位同步機制
同步的目的其實就是保證采樣點采集時,采集的位數(shù)不會錯亂,并且都是接收端同步。發(fā)送端發(fā)送一個幀,如果接收端有延時,并不做同步,那么就可能會出現(xiàn),發(fā)送端發(fā)送第2位時,接收端還是按照第1位的時序來采樣,導致接收端認為采集的到是第1位。顯然就出錯了。
1)同步段(Synchronization Segment):長度固定,1個時間量子Tq;一個位的傳輸從同步段開始;同步段用于同步總線上的各個節(jié)點,一個位的跳邊沿在此時間段內(nèi)。
2)傳播段(Propagation Segment):傳播段用于補償報文在總線和節(jié)點上傳輸時所產(chǎn)生的時間延遲;傳播段時長 ≥ 2 × 報文在總線和節(jié)點上傳輸時產(chǎn)生的時間延遲 ;傳播段時長可編程(1~8個時間量子Tq)。
3)相位緩沖段1(Phase Buffer Segment1):用于補償節(jié)點間的晶振誤差;允許通過重同步對該段加長;在這個時間段的末端進行總線狀態(tài)的采樣;長度可編程(1~8個時間量子Tq)。
4)相位緩沖段2(Phase Buffer Segment2):用于補償節(jié)點間的晶振誤差;允許通過重同步對該段縮短;長度可編程(1~8個時間量子Tq)。
同步段時鐘機制
系統(tǒng)時鐘→CAN時鐘→CAN位時間
波特率 = 1 / CAN位時間
位同步特點
一個位時間內(nèi)只允許一種同步方式,要么硬同步要么重同步;
任何一個從“隱性”到“顯性”的下降沿 都可以用于同步;
硬同步發(fā)生在報文的SOF位,所有接收節(jié)點調(diào)整各自當前位的同步段,使其位于發(fā)送的SOF位內(nèi);
重同步發(fā)生在一個報文SOF位之外的其它段,當下降沿落在了同步段之外時發(fā)生重同步;
在SOF到仲裁場發(fā)送的時間段內(nèi),如果有多個節(jié)點同時發(fā)送報文,那么這些發(fā)送節(jié)點對跳變沿不進行重同步。
硬同步
重同步
重同步,PBS1延長
重同步,PBS2縮短
同步跳轉(zhuǎn)寬度
在重同步時,有個同步跳轉(zhuǎn)寬度(SJW,Synchro Jump Width)的概念,表示的是PBS1和PBS2重同步時允許跳轉(zhuǎn)的最大寬度。
同步跳轉(zhuǎn)寬度必須滿足以下幾個條件:
SJW必須小于PBS1和PBS2的最小值
SJW最大值不能超過4
同步段規(guī)則
CAN報文在CAN總線上的傳輸時,物理延遲包含兩個部分:
在CAN-BUS上傳輸造成的延遲
在節(jié)點內(nèi)部傳輸造成延遲
按照CAN通信協(xié)議的規(guī)定,補償給傳播延遲的時間長度要至少等于實際實際傳播延遲時長的2被,
即:tPTS≥2×tdel=2×(tdel+tBus)
四、CAN應(yīng)用層
定義ID的規(guī)則
定義控制命令和節(jié)點
定義索引對象
分段報文寫---起始幀
分段報文寫---傳輸幀和結(jié)束幀
分段報文讀-----起始幀
分段報文讀----傳輸過程
審核編輯 :李倩
-
控制器
+關(guān)注
關(guān)注
112文章
16103瀏覽量
177074 -
CAN
+關(guān)注
關(guān)注
57文章
2694瀏覽量
463150 -
網(wǎng)絡(luò)層
+關(guān)注
關(guān)注
0文章
40瀏覽量
10288
原文標題:【晟矽課堂】FlexCAN發(fā)送接收
文章出處:【微信號:shengxiweidian,微信公眾號:晟矽微電】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論