|
x03vhflfook640100219319.gif (60.41 KB, 下載次數(shù): 0)
下載附件
保存到相冊(cè)
x03vhflfook640100219319.gif
2024-11-6 22:22 上傳
6 \9 E0 T; a8 V& X8 C% Y) o" e* _4 b# E點(diǎn)擊上方藍(lán)色字體,關(guān)注我們
$ F+ x) G; }- O/ Z, n0 e0 a8 \- T' {& e+ e, [4 V' s
在之前的博文中分享過一系列一文搞懂:SPI協(xié)議、I2C協(xié)議、PID算法、Modbus協(xié)議等文章,也考慮過是否可以出一篇介紹CAN總線協(xié)議的文章,但是在之后的學(xué)習(xí)研究中,發(fā)覺CAN總線協(xié)議比較龐大和復(fù)雜,做為剛剛進(jìn)入汽車電子行業(yè)的開發(fā)小白,一篇文章難以講解清晰,所以決定在汽車電子專欄中連載分享關(guān)于CAN總線協(xié)議的相關(guān)知識(shí)。 m/ \7 h, G! G
: T1 `( R6 U! H* Y
由于本人也處于學(xué)習(xí)和研究階段,如果對(duì)CAN總線協(xié)議有理解不到位的地方,還請(qǐng)各位大佬在文末留言指正一二。
/ Y5 M$ ~& z) A
# o, a) o- @3 D- h1
3 q. q% m: y' U" ~& J* uCAN總線簡(jiǎn)介% O2 h, P3 x- u0 m3 T4 p
CAN總線協(xié)議(Controller Area Network),控制器局域網(wǎng)總線,是德國BOSCH(博世)公司研發(fā)的一種串行通訊協(xié)議總線,它可以使用雙絞線來傳輸信號(hào),是世界上應(yīng)用最廣泛的現(xiàn)場(chǎng)總線之一。
3 e" Z; R% V! p3 O( f' LCAN通訊協(xié)議標(biāo)準(zhǔn)(ISO-11898:2003)介紹了設(shè)備間信息是如何傳遞以及符合開放系統(tǒng)互聯(lián)參考模型(OSI)的哪些分層項(xiàng)。實(shí)際CAN通訊是在連接設(shè)備的物理介質(zhì)中進(jìn)行,物理介質(zhì)的特性由模型中的物理層定義。ISO11898體系結(jié)構(gòu)定義七層,OSI模型中的最低兩層作為數(shù)據(jù)鏈路層和物理層,如下圖所示:( N. N; i9 @7 J" J2 k
3 _. L# E7 v6 A
uovftzmjdf3640100219419.png (36.68 KB, 下載次數(shù): 0)
下載附件
保存到相冊(cè)
uovftzmjdf3640100219419.png
2024-11-6 22:22 上傳
- |) E: |3 n9 y! h; \- [
h3g5g0gkbak640100219519.png (50.09 KB, 下載次數(shù): 0)
下載附件
保存到相冊(cè)
h3g5g0gkbak640100219519.png
2024-11-6 22:22 上傳
( I2 m3 u E+ ~; |. m4 p
LLC用于接收濾波、超載通告、回復(fù)管理;MAC用于數(shù)據(jù)封裝/拆封、幀編碼、媒體訪問管理、錯(cuò)誤檢測(cè)與標(biāo)定、應(yīng)答、串轉(zhuǎn)發(fā)/并轉(zhuǎn)串;PLS用于位編碼/解碼、位定時(shí)、同步;PMA為收發(fā)器特性。
" X: \3 Y0 {5 L+ D/ u2 ^+ e+ J- I" p6 Z; {: u$ M
CAN協(xié)議主要用于汽車中各種不同元件之間的通信,以此取代昂貴而笨重的配電線束,該協(xié)議的健壯性使其同樣適用于自動(dòng)化和工業(yè)環(huán)境中。
3 |9 G) k! W4 y( L4 Y- J. c
% C+ T, e$ k6 H( O l# [
2sjur415x00640100219619.png (176.92 KB, 下載次數(shù): 0)
下載附件
保存到相冊(cè)
2sjur415x00640100219619.png
2024-11-6 22:22 上傳
! j& X1 r4 e/ [6 Y" \( A/ P
CAN總線協(xié)議距今已經(jīng)發(fā)展40多年,如今,CAN總線已成為汽車(汽車、卡車、公共汽車、拖拉機(jī)等)、輪船、飛機(jī)、電動(dòng)汽車電池、機(jī)械等的標(biāo)準(zhǔn)配置。
- ~( _7 l9 t! Y9 L0 j4 K" T! nCAN之前的版本:汽車ECU是復(fù)雜的點(diǎn)對(duì)點(diǎn)布線1986年:BOSCH(博世)開發(fā)了CAN協(xié)議作為解決方案1991年:BOSCH(博世)發(fā)布了CAN 2.0(CAN 2.0A:11位,2.0B:29位)1993年:CAN被采用為國際標(biāo)準(zhǔn)(ISO 11898)2003年:ISO 11898成為標(biāo)準(zhǔn)系列2012年:博世發(fā)布了CAN FD 1.02015年:CAN FD協(xié)議標(biāo)準(zhǔn)化(ISO 11898-1)2016年:CAN物理層,數(shù)據(jù)速率高達(dá)5 Mbit/s,已通過ISO 11898-2標(biāo)準(zhǔn)化/ K& K$ h4 ?3 ^2 k* ?# N/ H* ^
1 P/ D* k; I6 O4 ?9 D3 h; d3 l
' x* y' Y1 z N2 S% \2 J/ D
ejgt0npcfi0640100219720.png (228.89 KB, 下載次數(shù): 0)
下載附件
保存到相冊(cè)
ejgt0npcfi0640100219720.png
2024-11-6 22:22 上傳
, o4 y! L9 v3 j ]) E. [" P+ nCAN總線具有以下特點(diǎn):
) a( K% O1 O3 K3 Y2 F- `8 a符合OSI開放式通信系統(tǒng)參考模型;兩線式總線結(jié)構(gòu),電氣信號(hào)為差分式;多主控制,在總線空閑時(shí),所有的單元都可開始發(fā)送消息,最先訪問總線的單元可獲得發(fā)送權(quán);多個(gè)單元同時(shí)開始發(fā)送時(shí),發(fā)送高優(yōu)先級(jí)ID消息的單元可獲得發(fā)送權(quán);點(diǎn)對(duì)點(diǎn)控制,一點(diǎn)對(duì)多點(diǎn)及全局廣播幾種傳送方式接收數(shù)據(jù),網(wǎng)絡(luò)上的節(jié)點(diǎn)可分成不同的優(yōu)先級(jí),可以滿足不同的實(shí)時(shí)要求;采用非破壞性位仲裁總線結(jié)構(gòu)機(jī)制,當(dāng)兩個(gè)節(jié)點(diǎn)同時(shí)向網(wǎng)絡(luò)上傳送信息時(shí),優(yōu)先級(jí)低的節(jié)點(diǎn)主動(dòng)停止數(shù)據(jù)發(fā)送,而優(yōu)先級(jí)高的節(jié)點(diǎn)可不受影響地繼續(xù)傳送數(shù)據(jù)消息報(bào)文不包含源地址或者目標(biāo)地址,僅通過標(biāo)識(shí)符表明消息功能和優(yōu)先級(jí);基于固定消息格式的廣播式總線系統(tǒng),短幀結(jié)構(gòu);事件觸發(fā)型,只有當(dāng)有消息要發(fā)送時(shí),節(jié)點(diǎn)才向總線上廣播消息;可以通過發(fā)送遠(yuǎn)程幀請(qǐng)求其它節(jié)點(diǎn)發(fā)送數(shù)據(jù);消息數(shù)據(jù)長(zhǎng)度0~8Byte;節(jié)點(diǎn)數(shù)最多可達(dá)110個(gè);錯(cuò)誤檢測(cè)功能。所有節(jié)點(diǎn)均可檢測(cè)錯(cuò)誤,檢測(cè)錯(cuò)誤的單元會(huì)立即通知其它所有單元;發(fā)送消息出錯(cuò)后,節(jié)點(diǎn)會(huì)自動(dòng)重發(fā);故障限制,具有自動(dòng)關(guān)閉總線的功能,節(jié)點(diǎn)控制器可以判斷錯(cuò)誤是暫時(shí)的數(shù)據(jù)錯(cuò)誤還是持續(xù)性錯(cuò)誤,當(dāng)總線上發(fā)生持續(xù)數(shù)據(jù)錯(cuò)誤時(shí),控制器可將節(jié)點(diǎn)從總線上隔離,以使總線上的其他操作不受影響;通信介質(zhì)可采用雙絞線、同軸電纜和光導(dǎo)纖維,一般使用最便宜的雙絞線;理論上,CAN總線用單根信號(hào)線就可以通信,但還是配備了第二根導(dǎo)線,第二根導(dǎo)線與第一根導(dǎo)線信號(hào)為差分關(guān)系,可以有效抑制電磁干擾;直接通信距離最遠(yuǎn)可達(dá)10KM(速率4Kbps以下),通信速率最高可達(dá)1MB/s(此時(shí)距離最長(zhǎng)40M);總線上可同時(shí)連接多個(gè)節(jié)點(diǎn),可連接節(jié)點(diǎn)總數(shù)理論上是沒有限制的,但實(shí)際可連接節(jié)點(diǎn)數(shù)受總線上時(shí)間延遲及電氣負(fù)載的限制。每幀信息都有CRC校驗(yàn)及其他檢錯(cuò)措施,數(shù)據(jù)錯(cuò)誤率極低;廢除了傳統(tǒng)的站地址編碼,取而代之的是對(duì)通信數(shù)據(jù)塊進(jìn)行編碼。采用這種方法的優(yōu)點(diǎn)是可使網(wǎng)絡(luò)內(nèi)的節(jié)點(diǎn)個(gè)數(shù)在理論上不受限制,數(shù)據(jù)塊的標(biāo)識(shí)碼可由11位或29位二進(jìn)制數(shù)組成,因此可以定義211或229個(gè)不同的數(shù)據(jù)塊,這種數(shù)據(jù)塊編碼方式,還可使不同的節(jié)點(diǎn)同時(shí)接收到相同的數(shù)據(jù),這一點(diǎn)在分步式控制中非常重要。2 d) j4 A7 |5 r
1 i* i b- g" F( C7 P! k
CAN總線具體以下優(yōu)勢(shì):0 T& I { a; W5 c3 @
& d2 h1 I2 K) ^6 ?8 k: g
cic4fhhk5wh640100219820.png (132.83 KB, 下載次數(shù): 0)
下載附件
保存到相冊(cè)
cic4fhhk5wh640100219820.png
2024-11-6 22:22 上傳
# u* A( Q6 b' b
2
! B2 u3 d; s6 S* s$ a8 Z# Y9 iCAN節(jié)點(diǎn)組成0 O2 M7 u* n8 w0 }7 y$ q
CAN節(jié)點(diǎn)通常由三部分組成:CAN收發(fā)器、CAN控制器和MCU。
: W. l0 g) R; ?9 e% M
" n, Y8 @9 s4 {4 w4 p" [CAN總線通過差分信號(hào)進(jìn)行數(shù)據(jù)傳輸,CAN收發(fā)器將差分信號(hào)轉(zhuǎn)換為TTL電平信號(hào),或者將TTL電平信號(hào)轉(zhuǎn)換為差分信號(hào),CAN控制器將TTL電平信號(hào)接收并傳輸給MCU,如下圖所示:
$ t5 L" L& q. a9 L' [2 T# h$ z1 y3 T! I: s% i
n5h2huqbut3640100219920.png (109.07 KB, 下載次數(shù): 0)
下載附件
保存到相冊(cè)
n5h2huqbut3640100219920.png
2024-11-6 22:22 上傳
0 U: t" f/ P( A4 Z目前,我們常用的STM32、華大、瑞薩等單片機(jī)內(nèi)部就集成了CAN控制器外設(shè),通過配置就可實(shí)現(xiàn)對(duì)CAN報(bào)文數(shù)據(jù)的讀取和發(fā)送。" \ |& N5 q* q v" _
3' }* T) s G; x( D
CAN總線結(jié)構(gòu)
. ?4 o7 G+ |% w- X; F" bCAN總線是一種廣播類型的總線,可支持線形拓?fù)、星形拓(fù)、樹形拓(fù)浜铜h(huán)形拓?fù)涞取AN網(wǎng)絡(luò)中至少需要兩個(gè)節(jié)點(diǎn)設(shè)備才可進(jìn)行通信,無法僅向某一個(gè)特定節(jié)點(diǎn)設(shè)備發(fā)送消息,發(fā)送數(shù)據(jù)時(shí)所有節(jié)點(diǎn)都不可避免地接收所有流量。但是,CAN總線硬件支持本地過濾,因此每個(gè)節(jié)點(diǎn)可以設(shè)置對(duì)有效的消息做出反應(yīng)。
, g; J. d1 i+ z1 O& V+ I
: v% A- u6 }; ^) K, a% ~線形拓?fù)涫窃谝粭l主干總線分出各個(gè)節(jié)點(diǎn)支線,其優(yōu)點(diǎn)在于布線施工簡(jiǎn)單,接線方便,阻抗匹配規(guī)則固定,缺點(diǎn)是拓?fù)洳粔蜢`活,在一定程度上影響通訊距離,如下圖所示:6 Z3 k! m! p+ u+ ^% v/ ^
# A9 H% J6 c& u8 R
f0hbi25qm5e640100220020.png (80.51 KB, 下載次數(shù): 0)
下載附件
保存到相冊(cè)
f0hbi25qm5e640100220020.png
2024-11-6 22:22 上傳
7 z5 }- t# K& Y" S- ]星形拓?fù)涫敲總(gè)節(jié)點(diǎn)通過中央設(shè)備連到一起,其優(yōu)點(diǎn)是容易擴(kuò)展,缺點(diǎn)是一旦中央設(shè)備出故障會(huì)導(dǎo)致總線集體故障,而且分支線長(zhǎng)不同,阻抗匹配復(fù)雜,可能需要通過一些中繼器或集線器進(jìn)行擴(kuò)展,如下圖所示:
$ X5 m8 A4 ]6 R+ _ g1 \* i) a: P9 g/ m7 x% A' s
3wrjckbim3u640100220120.png (96.3 KB, 下載次數(shù): 0)
下載附件
保存到相冊(cè)
3wrjckbim3u640100220120.png
2024-11-6 22:22 上傳
7 S1 [0 Y; {7 t% \1 u樹形拓?fù)涫枪?jié)點(diǎn)分支比較多,且分支長(zhǎng)度不同,其優(yōu)點(diǎn)是布線方便,缺點(diǎn)是網(wǎng)絡(luò)拓?fù)鋸?fù)雜,阻抗匹配困難,通訊中極易出現(xiàn)問題,必須加一些集線器設(shè)備,如下圖所示:) w2 M! ^+ T7 j Y
2 b# v! u9 O7 i W" i/ w
xoecec0tkyv640100220220.png (141.02 KB, 下載次數(shù): 0)
下載附件
保存到相冊(cè)
xoecec0tkyv640100220220.png
2024-11-6 22:22 上傳
# D- e$ R. y% F& k7 `
環(huán)形拓?fù)涫菍AN總線頭尾相連,形成環(huán)狀,其優(yōu)點(diǎn)是線纜任意位置斷開,總線都不會(huì)出現(xiàn)問題,缺點(diǎn)是信號(hào)反射嚴(yán)重,無法用于高波特率和遠(yuǎn)距離傳輸,如下圖所示:
& h- G& i) o" j& d
' Y0 P3 W( m; R$ R& ]( w0 I8 |9 L' Y8 v5 ^
lkst4hgsfiv640100220320.png (175.25 KB, 下載次數(shù): 0)
下載附件
保存到相冊(cè)
lkst4hgsfiv640100220320.png
2024-11-6 22:22 上傳
$ z7 ~, ]& [5 u( {( |9 w雖然CAN總線可以支持多種網(wǎng)絡(luò)拓?fù),但在?shí)際應(yīng)用中比較推薦使用線形拓?fù),且在IOS 11898-2中高速CAN物理層規(guī)范推薦也是線形拓?fù)洹?br />
) v0 a- T! p0 F. d4 n0 P
. |$ b+ z" v1 L在ISO 11898-2和ISO 11898-3中分別規(guī)定了兩種CAN總線結(jié)構(gòu)(在BOSCH CAN2.0規(guī)范中,并沒有關(guān)于總線拓?fù)浣Y(jié)構(gòu)的說明)。1 g" o+ [. ?$ @, s9 j# N
2 J+ `5 U* ^, T& [: cISO 11898-2中定義了通信速率為125Kbps~1Mbps的高速閉環(huán)CAN通信標(biāo)準(zhǔn),當(dāng)通信總線長(zhǎng)度≤40米,最大通信速率可達(dá)到1Mbps,高速閉環(huán)CAN(高速CAN)通信如下圖所示:
, L1 @& X& E$ y, d& `6 C. E3 O* c
r3stnnd3cas640100220421.png (100.8 KB, 下載次數(shù): 0)
下載附件
保存到相冊(cè)
r3stnnd3cas640100220421.png
2024-11-6 22:22 上傳
+ z' O4 l' j+ Q( EISO 11898-3中定義了通信速率為10~125Kbps的低速開環(huán)CAN通信標(biāo)準(zhǔn),當(dāng)傳輸速率為40Kbps時(shí),總線距離可達(dá)到1000米。低速開環(huán)CAN(低速容錯(cuò)CAN)通信如下圖所示:+ Y/ z9 k9 D+ k, r1 E$ \
5 z4 W# D; t. \. |$ x* `. }1 q4 t7 B
twcz222gc21640100220521.png (124.32 KB, 下載次數(shù): 0)
下載附件
保存到相冊(cè)
twcz222gc21640100220521.png
2024-11-6 22:22 上傳
4 A( F7 Y& n1 V: \4
6 L" L7 y9 W- L& H' k j3 {, C2 J
CAN總線物理電氣特性
) Y# V( @$ Q% C1 e ^在CAN總線上,利用CAN_H和CAN_L兩根線上的電位差來表示CAN信號(hào)。CAN 總線上的電位差分為顯性電平(Dominant Voltage)和隱性電平(Recessive Voltage),其中顯性電平為邏輯 0,隱性電平為邏輯 1。- s4 o2 o' D9 A
7 z1 M) X4 S' I+ ]) x
" E& z7 ?/ I3 \/ W3 A- t2 D
xys51p4qrka640100220621.png (124.32 KB, 下載次數(shù): 0)
下載附件
保存到相冊(cè)
xys51p4qrka640100220621.png
2024-11-6 22:22 上傳
$ X# I8 k) R: H/ U
高速CAN總線(ISO 11898-2,通信速率為125Kbps~1Mbps)在傳輸顯性(0)信號(hào)時(shí),會(huì)將 CAN_H端抬向5V高電平,將CAN_L拉向0V低電平。# R! P) b* Q; y2 h. l
" n; _7 Q& e' n# _% k
當(dāng)傳輸隱性(1)信號(hào)時(shí),并不會(huì)驅(qū)動(dòng) CAN_H 或者 CAN_L 端。 顯性信號(hào) CAN_H 和 CAN_L 兩端差分標(biāo)稱電壓為 2V。 終端電阻在沒有驅(qū)動(dòng)時(shí),將差分標(biāo)稱電壓降回 0V。顯性信號(hào)(0)的共模電壓需要在 1.5V 到 3.5V 之間。隱性信號(hào)(1)的共模電壓需要在+/-12V。
9 V4 K; J' M% Y1 ^/ {4 F; l7 d. z+ C
vnnn5rloheu640100220721.png (33.03 KB, 下載次數(shù): 0)
下載附件
保存到相冊(cè)
vnnn5rloheu640100220721.png
2024-11-6 22:22 上傳
4 H/ x" r2 O7 S: I7 ]" i
低速/容錯(cuò)CAN(ISO 11898-3,通信速率為10~125Kbps)在傳輸顯性信號(hào)(0)時(shí),驅(qū)動(dòng)CANH端抬向5V,將CANL端降向0V。
% H; g3 m4 V! p9 y( p2 C1 S5 F# n在傳輸隱性信號(hào)(1)時(shí)并不驅(qū)動(dòng)CAN 總線的任何一端。在電源電壓VCC為5V時(shí),顯性信號(hào)差分電壓需要大于2.3V,隱性信號(hào)的差分電壓需要小于0.6V。CAN總線兩端未被驅(qū)動(dòng)時(shí),終端電阻使CAN L端回歸到RTH電壓(當(dāng)電源電壓VCC為5V時(shí),RTH電壓至少為Vcc-0.3V=4.7V),同時(shí)使CAN H端回歸至RTL電壓(RTL電壓最大為0.3V)。兩根線需要能夠承受-27V至40V的電壓而不被損壞。
0 H1 e- Z8 D5 Z# d! s L
5 G! e/ W- C4 j5 ^1 v
jwfrxbzs3z5640100220821.png (40.55 KB, 下載次數(shù): 0)
下載附件
保存到相冊(cè)
jwfrxbzs3z5640100220821.png
2024-11-6 22:22 上傳
" i- m: Y. c, |- F$ ?" w1 K& U' }* Z
在高速和低速CAN中從隱性信號(hào)向顯性信號(hào)過渡的速度更快,因?yàn)榇藭r(shí)CAN線纜被主動(dòng)積極地驅(qū)動(dòng),顯性向隱性的過渡速度主要取決于CAN網(wǎng)絡(luò)的長(zhǎng)度和導(dǎo)線的電容。
9 C- J- ?! I# a+ T) g8 N* q4 O$ F# o: a+ u
關(guān)于高速和低速CAN的相關(guān)知識(shí)后期會(huì)專門出一篇文章進(jìn)行講解,敬請(qǐng)期待~
$ J6 A0 G* h! i! {* i3 x1 i& O, l6 Y$ \9 U/ h
chooi1q2al3640100220921.png (401 Bytes, 下載次數(shù): 0)
下載附件
保存到相冊(cè)
chooi1q2al3640100220921.png
2024-11-6 22:22 上傳
* D4 N1 D) f# S7 L7 G5 d
往期推薦和12歲小同志搞創(chuàng)客開發(fā):如何驅(qū)動(dòng)LED數(shù)碼管?2 v& A; [8 M$ O3 v# B
工業(yè)機(jī)器視覺系統(tǒng)相機(jī)如何選型?(理論篇—3)1 K. f( f3 x( v
Prometheus(二)之Node Exporter采集Linux主機(jī)數(shù)據(jù)2 j3 j5 v/ ^4 \2 e9 V3 A! C# }
' ]( A: j, J4 m
20vczpp1hex640100221021.gif (45.46 KB, 下載次數(shù): 0)
下載附件
保存到相冊(cè)
20vczpp1hex640100221021.gif
2024-11-6 22:22 上傳
! a: N$ \/ ?( d0 \6 p9 O
點(diǎn)擊閱讀原文,更精彩~ |
|