電子產業(yè)一站式賦能平臺

PCB聯盟網

搜索
查看: 106|回復: 0
收起左側

詳解CAN總線:什么是CAN總線?

[復制鏈接]

601

主題

601

帖子

4762

積分

四級會員

Rank: 4

積分
4762
跳轉到指定樓層
樓主
發(fā)表于 2022-9-9 12:00:00 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式

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
! y: x! C2 N3 u' z! Z- R
! \* i- J9 h1 O8 }& f& O$ i  \9 S# q
  • LLC用于接收濾波、超載通告、回復管理;
  • 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   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.0
  • 2015年: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

    * 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 * 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
    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 ( 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
    " y. k5 g% }; X
    樹形拓撲是節(jié)點分支比較多,且分支長度不同,其優(yōu)點是布線方便,缺點是網絡拓撲復雜,阻抗匹配困難,通訊中極易出現問題,必須加一些集線器設備,如下圖所示:
    - l* H- o3 T. n* a+ W. V6 B
    ) a  G  a4 _2 [# B0 B  M3 B - 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
    , 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

    % 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 ( |& 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 {
    ; 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

    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' | - 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 @

    : 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
    # B, A* N6 P1 U$ \5 D' @: @點擊閱讀原文,更精彩~
  • 回復

    使用道具 舉報

    發(fā)表回復

    您需要登錄后才可以回帖 登錄 | 立即注冊

    本版積分規(guī)則


    聯系客服 關注微信 下載APP 返回頂部 返回列表