|
x03vhflfook640100219319.gif (60.41 KB, 下載次數: 0)
下載附件
保存到相冊
x03vhflfook640100219319.gif
2024-11-6 22:22 上傳
0 d2 n1 |- a) x2 R+ w點擊上方藍色字體,關注我們3 I2 o' Q. G6 l6 C. d; G9 h" Q
$ O% O4 R$ j3 b- B: k, ] s$ ]9 b
在之前的博文中分享過一系列一文搞懂:SPI協議、I2C協議、PID算法、Modbus協議等文章,也考慮過是否可以出一篇介紹CAN總線協議的文章,但是在之后的學習研究中,發(fā)覺CAN總線協議比較龐大和復雜,做為剛剛進入汽車電子行業(yè)的開發(fā)小白,一篇文章難以講解清晰,所以決定在汽車電子專欄中連載分享關于CAN總線協議的相關知識。
3 y7 }1 s$ ^% ?/ O) @( G( M2 U9 b
由于本人也處于學習和研究階段,如果對CAN總線協議有理解不到位的地方,還請各位大佬在文末留言指正一二。
/ _+ \ B* m( S6 f+ K# |! T1 t0 ~+ E' P- p3 V
11 @ t9 @, N9 p. Y4 t
CAN總線簡介5 r1 g/ q+ Z) P5 j# ^: n7 o& t
CAN總線協議(Controller Area Network),控制器局域網總線,是德國BOSCH(博世)公司研發(fā)的一種串行通訊協議總線,它可以使用雙絞線來傳輸信號,是世界上應用最廣泛的現場總線之一。
9 u7 w, P9 G3 b( e) Y: g, wCAN通訊協議標準(ISO-11898:2003)介紹了設備間信息是如何傳遞以及符合開放系統互聯參考模型(OSI)的哪些分層項。實際CAN通訊是在連接設備的物理介質中進行,物理介質的特性由模型中的物理層定義。ISO11898體系結構定義七層,OSI模型中的最低兩層作為數據鏈路層和物理層,如下圖所示:
5 o0 M' y6 B1 y, F$ O( P0 d
L" [0 f# p. F0 {1 z$ D( l) B
uovftzmjdf3640100219419.png (36.68 KB, 下載次數: 0)
下載附件
保存到相冊
uovftzmjdf3640100219419.png
2024-11-6 22:22 上傳
! y: x! C2 N3 u' z! Z- R
h3g5g0gkbak640100219519.png (50.09 KB, 下載次數: 0)
下載附件
保存到相冊
h3g5g0gkbak640100219519.png
2024-11-6 22:22 上傳
! \* i- J9 h1 O8 }& f& O$ i \9 S# qLLC用于接收濾波、超載通告、回復管理;MAC用于數據封裝/拆封、幀編碼、媒體訪問管理、錯誤檢測與標定、應答、串轉發(fā)/并轉串;PLS用于位編碼/解碼、位定時、同步;PMA為收發(fā)器特性。% J) \9 P4 A8 U5 Y
9 e( Y8 l" f, J/ I9 L2 Z
CAN協議主要用于汽車中各種不同元件之間的通信,以此取代昂貴而笨重的配電線束,該協議的健壯性使其同樣適用于自動化和工業(yè)環(huán)境中。
" |) I' b% S5 J; ]' r6 u
2 \0 t* n7 A" Z0 z# v7 v* V
2sjur415x00640100219619.png (176.92 KB, 下載次數: 0)
下載附件
保存到相冊
2sjur415x00640100219619.png
2024-11-6 22:22 上傳
l7 N1 Q) [4 P3 L" r- R, p
CAN總線協議距今已經發(fā)展40多年,如今,CAN總線已成為汽車(汽車、卡車、公共汽車、拖拉機等)、輪船、飛機、電動汽車電池、機械等的標準配置。1 f3 l0 u/ w0 b n: L6 o
CAN之前的版本:汽車ECU是復雜的點對點布線1986年:BOSCH(博世)開發(fā)了CAN協議作為解決方案1991年:BOSCH(博世)發(fā)布了CAN 2.0(CAN 2.0A:11位,2.0B:29位)1993年:CAN被采用為國際標準(ISO 11898)2003年:ISO 11898成為標準系列2012年:博世發(fā)布了CAN FD 1.02015年:CAN FD協議標準化(ISO 11898-1)2016年:CAN物理層,數據速率高達5 Mbit/s,已通過ISO 11898-2標準化
% Q# B0 J- H6 R2 ~! x2 I( P( t) }% E1 a3 t& X5 q
7 @$ d9 N* G" m% y; a+ u/ I' S2 V; v
ejgt0npcfi0640100219720.png (228.89 KB, 下載次數: 0)
下載附件
保存到相冊
ejgt0npcfi0640100219720.png
2024-11-6 22:22 上傳
* h: F7 N) r" x7 Q" B& P: a: xCAN總線具有以下特點:
+ ~, g, ~4 j& M% `符合OSI開放式通信系統參考模型;兩線式總線結構,電氣信號為差分式;多主控制,在總線空閑時,所有的單元都可開始發(fā)送消息,最先訪問總線的單元可獲得發(fā)送權;多個單元同時開始發(fā)送時,發(fā)送高優(yōu)先級ID消息的單元可獲得發(fā)送權;點對點控制,一點對多點及全局廣播幾種傳送方式接收數據,網絡上的節(jié)點可分成不同的優(yōu)先級,可以滿足不同的實時要求;采用非破壞性位仲裁總線結構機制,當兩個節(jié)點同時向網絡上傳送信息時,優(yōu)先級低的節(jié)點主動停止數據發(fā)送,而優(yōu)先級高的節(jié)點可不受影響地繼續(xù)傳送數據消息報文不包含源地址或者目標地址,僅通過標識符表明消息功能和優(yōu)先級;基于固定消息格式的廣播式總線系統,短幀結構;事件觸發(fā)型,只有當有消息要發(fā)送時,節(jié)點才向總線上廣播消息;可以通過發(fā)送遠程幀請求其它節(jié)點發(fā)送數據;消息數據長度0~8Byte;節(jié)點數最多可達110個;錯誤檢測功能。所有節(jié)點均可檢測錯誤,檢測錯誤的單元會立即通知其它所有單元;發(fā)送消息出錯后,節(jié)點會自動重發(fā);故障限制,具有自動關閉總線的功能,節(jié)點控制器可以判斷錯誤是暫時的數據錯誤還是持續(xù)性錯誤,當總線上發(fā)生持續(xù)數據錯誤時,控制器可將節(jié)點從總線上隔離,以使總線上的其他操作不受影響;通信介質可采用雙絞線、同軸電纜和光導纖維,一般使用最便宜的雙絞線;理論上,CAN總線用單根信號線就可以通信,但還是配備了第二根導線,第二根導線與第一根導線信號為差分關系,可以有效抑制電磁干擾;直接通信距離最遠可達10KM(速率4Kbps以下),通信速率最高可達1MB/s(此時距離最長40M);總線上可同時連接多個節(jié)點,可連接節(jié)點總數理論上是沒有限制的,但實際可連接節(jié)點數受總線上時間延遲及電氣負載的限制。每幀信息都有CRC校驗及其他檢錯措施,數據錯誤率極低;廢除了傳統的站地址編碼,取而代之的是對通信數據塊進行編碼。采用這種方法的優(yōu)點是可使網絡內的節(jié)點個數在理論上不受限制,數據塊的標識碼可由11位或29位二進制數組成,因此可以定義211或229個不同的數據塊,這種數據塊編碼方式,還可使不同的節(jié)點同時接收到相同的數據,這一點在分步式控制中非常重要。
* m; t- ~: P" b8 f
4 A* x' i+ P0 b% ?CAN總線具體以下優(yōu)勢:
$ U9 J: i7 T6 r
' `! [( a$ V2 F8 K' W0 p0 [; V
cic4fhhk5wh640100219820.png (132.83 KB, 下載次數: 0)
下載附件
保存到相冊
cic4fhhk5wh640100219820.png
2024-11-6 22:22 上傳
* p* \8 U- M! j" [" Z
2
~* D& p) H `* fCAN節(jié)點組成; |8 k% B2 u; F# ^& N5 y4 O
CAN節(jié)點通常由三部分組成:CAN收發(fā)器、CAN控制器和MCU。5 E( V% D0 X7 k1 E) Q
! t( O N2 v# y3 L CCAN總線通過差分信號進行數據傳輸,CAN收發(fā)器將差分信號轉換為TTL電平信號,或者將TTL電平信號轉換為差分信號,CAN控制器將TTL電平信號接收并傳輸給MCU,如下圖所示:" S. h8 W; G& G8 E: p: z. ^6 |
2 ]6 S4 }: I9 ~, H
n5h2huqbut3640100219920.png (109.07 KB, 下載次數: 1)
下載附件
保存到相冊
n5h2huqbut3640100219920.png
2024-11-6 22:22 上傳
5 S! _6 `3 l" e' Q) V9 S目前,我們常用的STM32、華大、瑞薩等單片機內部就集成了CAN控制器外設,通過配置就可實現對CAN報文數據的讀取和發(fā)送。
3 r4 L8 ~0 n1 d: l' W: d& S }3
/ O$ m X3 G; L1 p! ~CAN總線結構
' D" M& r& p7 \6 a7 x: u6 VCAN總線是一種廣播類型的總線,可支持線形拓撲、星形拓撲、樹形拓撲和環(huán)形拓撲等。CAN網絡中至少需要兩個節(jié)點設備才可進行通信,無法僅向某一個特定節(jié)點設備發(fā)送消息,發(fā)送數據時所有節(jié)點都不可避免地接收所有流量。但是,CAN總線硬件支持本地過濾,因此每個節(jié)點可以設置對有效的消息做出反應。
, B- W: \0 J% H$ d7 M& Y) g/ A, W' C: o* c) c% j
線形拓撲是在一條主干總線分出各個節(jié)點支線,其優(yōu)點在于布線施工簡單,接線方便,阻抗匹配規(guī)則固定,缺點是拓撲不夠靈活,在一定程度上影響通訊距離,如下圖所示:
B* J, j( w5 Y' f+ I2 V2 f
1 S9 A. T: \% \% y. Q
f0hbi25qm5e640100220020.png (80.51 KB, 下載次數: 0)
下載附件
保存到相冊
f0hbi25qm5e640100220020.png
2024-11-6 22:22 上傳
( z3 @4 n" A/ G; ?5 R" ]
星形拓撲是每個節(jié)點通過中央設備連到一起,其優(yōu)點是容易擴展,缺點是一旦中央設備出故障會導致總線集體故障,而且分支線長不同,阻抗匹配復雜,可能需要通過一些中繼器或集線器進行擴展,如下圖所示:# N2 J! R A2 m9 f: b: z
j' H5 V, E0 n& W1 U
3wrjckbim3u640100220120.png (96.3 KB, 下載次數: 1)
下載附件
保存到相冊
3wrjckbim3u640100220120.png
2024-11-6 22:22 上傳
" y. k5 g% }; X
樹形拓撲是節(jié)點分支比較多,且分支長度不同,其優(yōu)點是布線方便,缺點是網絡拓撲復雜,阻抗匹配困難,通訊中極易出現問題,必須加一些集線器設備,如下圖所示:
- l* H- o3 T. n* a+ W. V6 B
) a G a4 _2 [# B0 B M3 B
xoecec0tkyv640100220220.png (141.02 KB, 下載次數: 0)
下載附件
保存到相冊
xoecec0tkyv640100220220.png
2024-11-6 22:22 上傳
- s$ x/ k$ z& _/ y
環(huán)形拓撲是將CAN總線頭尾相連,形成環(huán)狀,其優(yōu)點是線纜任意位置斷開,總線都不會出現問題,缺點是信號反射嚴重,無法用于高波特率和遠距離傳輸,如下圖所示:5 K6 u4 J$ Z3 c% p0 I
7 @4 `. P' \& v1 [" {3 ^0 f; u
8 V0 A o' u6 p9 G$ d1 R; s
lkst4hgsfiv640100220320.png (175.25 KB, 下載次數: 1)
下載附件
保存到相冊
lkst4hgsfiv640100220320.png
2024-11-6 22:22 上傳
, G3 W& p8 p+ d雖然CAN總線可以支持多種網絡拓撲,但在實際應用中比較推薦使用線形拓撲,且在IOS 11898-2中高速CAN物理層規(guī)范推薦也是線形拓撲。* _( ]: f- e* o( [" H1 E; B2 `
1 w5 C1 B) R" N. j" ?3 g4 ]; m
在ISO 11898-2和ISO 11898-3中分別規(guī)定了兩種CAN總線結構(在BOSCH CAN2.0規(guī)范中,并沒有關于總線拓撲結構的說明)。1 P$ o- `$ Q X0 W% w
M1 n7 C8 ]9 d5 d$ }
ISO 11898-2中定義了通信速率為125Kbps~1Mbps的高速閉環(huán)CAN通信標準,當通信總線長度≤40米,最大通信速率可達到1Mbps,高速閉環(huán)CAN(高速CAN)通信如下圖所示: F: i5 z3 i# S5 \, `! X3 r
& Y _; m7 M3 A0 |$ r
r3stnnd3cas640100220421.png (100.8 KB, 下載次數: 1)
下載附件
保存到相冊
r3stnnd3cas640100220421.png
2024-11-6 22:22 上傳
% p P% X3 j. JISO 11898-3中定義了通信速率為10~125Kbps的低速開環(huán)CAN通信標準,當傳輸速率為40Kbps時,總線距離可達到1000米。低速開環(huán)CAN(低速容錯CAN)通信如下圖所示:
$ z9 X1 K9 z/ x+ y8 n2 b/ u4 m7 c) A- I/ V3 }4 U; S: o
7 K( m1 U! [" `' f
twcz222gc21640100220521.png (124.32 KB, 下載次數: 1)
下載附件
保存到相冊
twcz222gc21640100220521.png
2024-11-6 22:22 上傳
( |& i+ l1 L: M4 W- \
4- }" d5 s; d0 Z+ F) z* e; O9 D9 H' F
3 }+ c* t; [! Q8 Y6 l! U; A( u. wCAN總線物理電氣特性! W5 y4 P* e- l
在CAN總線上,利用CAN_H和CAN_L兩根線上的電位差來表示CAN信號。CAN 總線上的電位差分為顯性電平(Dominant Voltage)和隱性電平(Recessive Voltage),其中顯性電平為邏輯 0,隱性電平為邏輯 1。
6 h3 V& L! @& ~) y7 b$ c6 g- r0 k, S4 w' ?* q
. ?" l4 t. y- y8 H6 {
xys51p4qrka640100220621.png (124.32 KB, 下載次數: 0)
下載附件
保存到相冊
xys51p4qrka640100220621.png
2024-11-6 22:22 上傳
; L# U( h9 j# O9 M- a- P; p
高速CAN總線(ISO 11898-2,通信速率為125Kbps~1Mbps)在傳輸顯性(0)信號時,會將 CAN_H端抬向5V高電平,將CAN_L拉向0V低電平。2 o; {1 N# _7 Y- u
5 w2 Z% c( R1 P- j# m" u
當傳輸隱性(1)信號時,并不會驅動 CAN_H 或者 CAN_L 端。 顯性信號 CAN_H 和 CAN_L 兩端差分標稱電壓為 2V。 終端電阻在沒有驅動時,將差分標稱電壓降回 0V。顯性信號(0)的共模電壓需要在 1.5V 到 3.5V 之間。隱性信號(1)的共模電壓需要在+/-12V。
* c4 V# E1 R B+ m5 K% h. y0 W; }( {' E3 _: b- M" h& z
vnnn5rloheu640100220721.png (33.03 KB, 下載次數: 0)
下載附件
保存到相冊
vnnn5rloheu640100220721.png
2024-11-6 22:22 上傳
4 s! Y/ x) _7 R+ D' ~; V低速/容錯CAN(ISO 11898-3,通信速率為10~125Kbps)在傳輸顯性信號(0)時,驅動CANH端抬向5V,將CANL端降向0V。( |8 \ V9 G: o
在傳輸隱性信號(1)時并不驅動CAN 總線的任何一端。在電源電壓VCC為5V時,顯性信號差分電壓需要大于2.3V,隱性信號的差分電壓需要小于0.6V。CAN總線兩端未被驅動時,終端電阻使CAN L端回歸到RTH電壓(當電源電壓VCC為5V時,RTH電壓至少為Vcc-0.3V=4.7V),同時使CAN H端回歸至RTL電壓(RTL電壓最大為0.3V)。兩根線需要能夠承受-27V至40V的電壓而不被損壞。: W( u. f+ {+ G: H7 j
8 d' x$ F, h/ [5 x o" e' |
jwfrxbzs3z5640100220821.png (40.55 KB, 下載次數: 0)
下載附件
保存到相冊
jwfrxbzs3z5640100220821.png
2024-11-6 22:22 上傳
- j k4 X+ E. Y a4 p0 Q# E1 w3 |, W
在高速和低速CAN中從隱性信號向顯性信號過渡的速度更快,因為此時CAN線纜被主動積極地驅動,顯性向隱性的過渡速度主要取決于CAN網絡的長度和導線的電容。
6 B$ u* L8 [8 i+ y; `* ?
! A1 S4 a# c, v1 H! _2 p }" w- V關于高速和低速CAN的相關知識后期會專門出一篇文章進行講解,敬請期待~
. Q: J, Y. d4 A, }5 B( J3 \/ [1 B; [, N6 {) h4 W/ b" I5 @
chooi1q2al3640100220921.png (401 Bytes, 下載次數: 0)
下載附件
保存到相冊
chooi1q2al3640100220921.png
2024-11-6 22:22 上傳
: h: o0 H( i s) p$ d% v往期推薦和12歲小同志搞創(chuàng)客開發(fā):如何驅動LED數碼管?& z W* p& b* x% r. I& u2 X
工業(yè)機器視覺系統相機如何選型?(理論篇—3)
0 ^$ Y7 e0 X& T1 k: H WPrometheus(二)之Node Exporter采集Linux主機數據
4 ^( r2 Y M) L) h, E( D
& B$ m% @% `1 x* i* Q
20vczpp1hex640100221021.gif (45.46 KB, 下載次數: 0)
下載附件
保存到相冊
20vczpp1hex640100221021.gif
2024-11-6 22:22 上傳
# B, A* N6 P1 U$ \5 D' @: @點擊閱讀原文,更精彩~ |
|