女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

CAN總線通信協議的基礎知識

CHANBAEK ? 來源:安德魯的設計筆記本 ? 作者:安德魯蘇 ? 2023-06-16 10:58 ? 次閱讀

引言

本文將介紹CAN總線通信協議的基礎知識,目前的內容僅為通用的協議部分,暫不涉及具體的外設模塊的用法。研究通信協議的具體內容,主要是看建立通信的物理環境(信號與總線拓撲結構),通信過程的對象(通信幀),以及交互過程(通信或握手過程)。

在后續的文章中,將以實現本文描述的協議作為需求,結合具體的IP外設,以及配套的軟件,基于具體的硬件電路實現功能。

CAN總線應用

CAN總線有兩個ISO國際標準:ISO11898 和 ISO11519。其中:

  • ISO11898 定義了通信速率為 125 kbps~1 Mbps 的高速 CAN 通信標準,屬于閉環總線,傳輸速率可達1Mbps,總線長度 ≤ 40米。
  • ISO11519 定義了通信速率為 10~125 kbps 的低速 CAN 通信標準,屬于開環總線,傳輸速率為40kbps時,總線長度可達1000米。

Tips: 總線的傳輸速率,又稱為總線的通信速率,指的是位速率,或稱為比特率(和波特率不是一回事),表示單位時間內,通信線路上傳輸的二進制位的數量,其基本單位是 bps 或者 b/s (bit per second)。波特率強調的是傳送數據的同步載波信號的速率。

在汽車中為了滿足車載系統的不同要求,主要采用高速CAN和低速CAN。這兩者以不同的總線速率工作以獲得最佳的性價比,在兩條總線之間采用CAN網關進行連接。

  • 高速CAN總線(動力總線)的傳輸速率范圍在125kbit/s - 1Mbit/s之間,主要用于傳動系數傳輸的實時性要求(如發動機控制、自動變速箱控制、行駛穩定系統、組合儀表等)。
  • 低速CAN總線(舒適總線)的傳輸速率范圍在5kbit/s - 125kbit/s之間。主要用于舒適系統和車身系統的數據傳輸的實時性要求(如空調控制、座椅調節、車窗升降等)。

圖片

figure-can-network-in-car

圖x 整車CAN網絡示意圖CAN總線是一種串行數據通訊協議,其中包含了CAN協議的物理層以及數據鏈路層。可以完成對數據的位填充,數據塊編碼,循環冗余效驗,幀優先級的判別等工作。其主要特點如下:

  • 多主機方式工作,網絡上任意一個節點(未脫離總線)均可以隨時向總線網絡上發布報文幀。
  • 節點發送的報文幀可以分為不同的優先級,滿足不同實時要求。
  • 采用載波偵聽多路訪問/沖突檢測(CSMA/CD)技術,當兩個節點同時發布信息時,高優先級報文可不受影響地傳輸數據。
  • 節點總數實際可達110個。
  • 采用短幀結構,每一幀最多有8個有效字節的數據負載。短幀的優勢在于,發送和接收速度快,實時性好,被干擾的概率小,抗干擾能力強。
  • 當某個節點錯誤嚴重時,具有自動關閉功能,切斷與總線的聯系,致使總線上的其他操作不受影響。

CAN總線信號與拓撲結構(物理層)

CAN總線采用雙線差分傳輸,兩根導線分別作為CAN_H、CAN_L,并在終端配備有120Ω的電阻。CAN收發器收到總線信號時,將信號電平轉化為邏輯狀態,即CAN_H與CAN_L電平相減后,得到一個差分電平。各種干擾(如點火系統)在兩根導線上的作用相同,相減后得到的插值電平可以濾過這些干擾(共模抑制)。

圖片

figure-can-bus-connection

圖x CAN總線連接CAN總線有兩種邏輯電平狀態,即顯性與隱性。顯性電平代表“0”,隱性電平代表“1”。采用非歸零碼編碼,即在兩個相同電平之間并不強制插入一個零狀態電平。

  • 高速CAN在傳輸隱性狀態位時,CAN_H與CAN_L上的電平位均為2.5V;在傳輸顯性狀態位時分別為3.5V與1.5V。
  • 低速CAN在傳輸隱性狀態位時,CAN_H上的電平為0V,CAN_L上的電平為5V;在傳輸顯性狀態位時,CAN_H上的電平為3.6V,CAN_L為1.4V。

圖片

figure-can-voltage-high-speed

圖x 高速CAN總線上的信號電平圖片

figure-can-voltage-low-speed

圖x 低速CAN總線上的信號電平為了確保通訊的正確性,總線信號必須在一定時間內出現在總線上,并且保證被正確采樣。總線信號傳輸有一定的時間延遲,最大的可靠的總線波特率與總線長度有關。ISO11898中對各種總線長度有著以下定義:

  • 1Mbit/s 總線長度為40m(規范)。
  • 500kbit/s 總線長度最大值為100m(建議值)。
  • 250kbit/s 總線長度最大值為250m。
  • 125kbit/s 總線長度最大值為500m。
  • 40kbit/s 總線長度最大值為1000m。

接入CAN總線的設備需要滿足一定的條件:

  • CAN通信線纜,實現節點的互聯,是傳輸數據的通道。主要有:普通雙絞線,同軸電纜,光纖。
  • CAN微控制器,嵌有部分或全部CAN控制模塊及相關接口的通用型微控制器現如今很多芯片都配備CAN接口。
  • CAN收發器,將絕對電平信號表示的數據幀與差分信號表示的通信幀相互轉換。

集成CAN外設模塊的微控制器接入CAN總線,如圖x所示。

圖片

figure-can-transiver

圖x 微控制器通過CAN收發器接入CAN總線在這塊電路中,CAN外設同CAN收發器之間的兩根信號線CAN_TXCAN_RX是單方向的位數據流,分別對應發送數據和接收數據,用絕對電平表示數據位;CAN收發器同總線之間的兩根信號線CAN_HCAN_L的數據方向是雙向的,走的是差分電平信號。用邏輯分析儀可以觀察CAN_TXCAN_RX上的數據幀,如圖x所示。至于CAN_HCAN_L上的差分信號,可以通過示波器直接觀察,或者通常會使用“CAN分析儀”,一種可以抓CAN通信幀的抓包工具,將在后續文章中介紹。

圖片

figure-can-tx-line-waveform

圖x CAN_TX線上的信號波形## CAN通信幀格式

在CAN總線上,報文是以“幀”來發送的,每一幀都包含以下幾個部分:

  • SOF幀起始:在總線空閑時,總線為隱性狀態。幀起始由單個顯性位構成,標志著報文的開始,并在總線上起著同步作用。
  • 仲裁段:仲裁段定義了報文的標識符,俗稱ID。在CAN2.0A規范中,標識符為11位,而在CAN2.0B中擴展到了29位。這意味著在2.0B中可以存在更多不同類型的報文,但是也降低了總線的利用率。仲裁段還包含RTR遠程幀/數據幀控制位。
  • DLC控制段:定義了數據域字節的長度。通過數據長度碼,接收節點可以判斷報文數據是否完整。
  • DATA數據域:包含有0~8個字節數據。實際有效的數據負載。此處僅是基本CAN協議的定義,在CAN FD協議的通信幀中,有效數據負載可以達到64字節,在更高速的CAN XL協議中,定義有效數據負載可達2048字節。
  • CRC域:CRC又稱循環冗余碼校驗(Cyclical Redundancy Check),是數據通信中常見的查錯方法。
  • ACK域:用于接收節點的反饋應答。
  • EOF幀結束:由一串7個隱性位組成,表示報文幀的結束。

CAN標準幀結構如圖x所示。

圖片

figure-can-frame-standard

圖x CAN標準幀格式CAN2.0B中新增了擴展幀,擴展幀相對于標準幀,ID標識符字段從11位擴展到29位,可以容納更多的消息種類。如圖x所示。

圖片

figure-can-frame-ext

圖x CAN擴展幀格式注意,擴展幀的29位ID不是連續的,其中前11位同標準幀相同,之后緊跟著SRR和IDE位(均為1),然后才是接下來的18位ID。

開發CAN總線的過程中,主要關注CAN報文ID和數據域。根據客戶的要求,ECU接收自己需要的ID報文的同時,也向外發送別的ECU所需要的ID報文。一般不同整車廠在開發自己的CAN協議規范的同時,也會有自己的校驗機制,不滿足校驗規則的報文,數據將被ECU所遺棄。

CAN網絡通信

CAN網絡將多個CAN節點設備通過總線連接在一起,在通信過程中傳遞報文消息。通信過程以幀為基本通信單元。總線上節點之間的通信過程大體有節點向總線發送消息,和節點向總線請求消息。

CAN報文幀種類

CAN總線報文傳輸有4種不同的格式:

  • 數據幀:由發送節點發出,包含0 - 8個數據字節。主要用于本節點向總線主動發送數據。
  • 遠程幀:發送遠程幀向網絡節點請求發送某一標識符的數據幀。主要用于本節點向總線發出數據請求,被能夠提供數據的節點捕獲到后,再通過數據幀把消息發送到總線上。
  • 錯誤幀:總線節點發現錯誤時,以錯誤幀的方式通知網絡上的其他節點。
  • 過載幀:發送過載幀,表示當前節點不能處理后續的報文(如幀延遲等)。

Ps:為了保持總線的利用率,在車載CAN總線上數據幀的報文一般均為8字節。

其中關于錯誤幀監測的錯誤情況詳加說明。CAN總線將錯誤分為臨時性錯誤和長期性錯誤。前者主要由外部因素引起,如總線上驅動電壓波形不規整、有尖峰或毛刺時,其數據傳輸性能會受到一定程度的短期干擾。長期性錯誤則主要由網絡組建非正常狀況引起,比如接觸不良、線路故障、發送器或接收器失效等。CAN中每個具有數據通信能力的網絡單元內部都集成有一個發送錯誤計數器和接收錯誤計數器,當該單元在數據發送階段出現一次錯誤時,其發送錯誤計數器自加8;在數據接收階段出現一次錯誤時,其接收錯誤計數器自加1。在相應計數器內容非0的情況下,網絡單元每成功發送一幀,發送錯誤計數器自減1;每成功接收一幀,接收錯誤計數內容原本小于127時自減1,大于127時被置為119 - 127之間任意值。這樣,如果某個網絡單元的錯誤計數在不斷增長,就說明該單元的數據通信在頻繁發生故障。當計數器內容超過一定閾值時,可以認為該故障是由長期性錯誤引起的。這種機制保證了當某一個節點出現故障的時候,不會造成總線長時間癱瘓。

仲裁機制

仲裁是CAN總線應用中一個重要的概念。在CAN總線采用載波偵聽多路訪問/沖突檢測(CSMA/CD)技術。如果總線空閑(隱性位),那么每一個節點都可以開始發送報文。報文以顯性位(報文幀開始位)開始,接著是標識符。如果多個節點同時開始發送報文,那么將使用“線與”仲裁機制(仲裁用邏輯“與”)來解決總線沖突,低電平(顯性位)將獲得仲裁,從而確定優先級最高的報文,而不需要損失高優先級報文的通信時間或數據(非破壞性仲裁)。仲裁機制使用標識符ID為判斷依據,不僅代表報文幀的內容,還代表報文幀發送的優先級。二進制數越小的標識符,優先級越高;反之亦然。

關于報文的標識符ID,這里要強調一個特別有用的知識點。CAN總線仲裁的是報文消息的優先級,而不是節點的優先級(CAN總線上的節點沒有優先級)。例如,某個CAN總線節點發送低優先級的報文時,可能被正在進行的高優先級報文通信搶占,但同一個節點發送更高優先級的報文時,就可以獲得總線的使用權。報文的優先級,也就是報文的標識符ID,是由消息的表示的內容決定的。這里面體現了一個“公平”合作的系統,合作的開發者人人不分貴賤,只以任務的重要性獲取更多的資源,并且多個開發者可以共同做一個任務,一個開發者也可以做多個不同的任務。整個總線上所有節點構成的系統作為整體調度多任務。

總結

本文試圖用最簡約的描述總結出CAN總線通信協議的要點。CAN總線是一個共享介質的總線結構,因此具備典型的總線型通信方式,例如通信過程建立在總線與節點之間(而不是點對點直連的通信),存在沖突檢測和仲裁等。需要注意的是,CAN總線通信的幀結構,包括各個字段的位置以及含義,這些數據位將以位流的方式出現在總線上,后續使用微控制器上的CAN外設模塊,也是在芯片內部的緩沖區按照這些字段組織好數據,交由外設收發引擎將位流轉變成電平信號接入總線。

關于CAN總線協議,仍有很多細節尚未在本文中記錄,例如CAN總線為了確保電平信號是“中和”的,會將超過連續5個相同的位流電平信號翻轉,或是更詳細的錯誤檢測判定機制,這些電路系統中的設計,通常已經固化在常規的集成電路中了,對于開發者來說,不需要直接操作。但如果仍有興趣繼續探究,可以參見標準化文檔ISO11989和ISO11519,通讀協議有注意讀者了解CAN總線通信的全貌,便于理解設定一些規則的來由,對于調試環節也大有裨益。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 微控制器
    +關注

    關注

    48

    文章

    7911

    瀏覽量

    153732
  • CAN總線
    +關注

    關注

    145

    文章

    1974

    瀏覽量

    132269
  • 通信協議
    +關注

    關注

    28

    文章

    1003

    瀏覽量

    40958
  • 網關
    +關注

    關注

    9

    文章

    5329

    瀏覽量

    52491
  • 總線通信
    +關注

    關注

    0

    文章

    59

    瀏覽量

    11985
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    CAN協議基礎知識

    CAN協議基礎知識I2C.SPI總線多用于短距離傳輸,協議簡單,數據量少,主要用于IC之間的通訊,而 C
    發表于 08-19 06:24

    STM32 CAN通信協議

    CAN 簡介CAN 是控制器區域網絡(Controller Area Network) 的縮寫(以下稱為CAN),是ISO國際標準化的串行通信協議。在當前的汽車產業中,出于對安全性、舒
    發表于 08-19 09:31

    SPI通信協議基礎知識解析

    SPI通信協議詳解寫在最前: 本文講述了SPI通信協議的基本內容包括如下SPI的基礎知識SPI的讀寫時序本文重點參考 英文維基百科 中文維基百科 百度百科注意: 倘若讀者有足夠的耐心和英文
    發表于 12-13 08:05

    基于雙CAN總線的數字伺服通信協議

    基于雙CAN總線的數字伺服通信協議
    發表于 09-01 14:25 ?8次下載
    基于雙<b class='flag-5'>CAN</b><b class='flag-5'>總線</b>的數字伺服<b class='flag-5'>通信協議</b>

    CAN總線通信協議的分析和實現 CAN總線通信協議以及其實現方法

    CAN總線通信協議的分析和實現 CAN總線通信協議以及其實現方法
    發表于 09-04 08:45 ?40次下載
    <b class='flag-5'>CAN</b><b class='flag-5'>總線</b><b class='flag-5'>通信協議</b>的分析和實現 <b class='flag-5'>CAN</b><b class='flag-5'>總線</b><b class='flag-5'>通信協議</b>以及其實現方法

    CAN總線通信協議分析實現

    CAN總線通信協議,才能完成數據準確可靠的傳輸。目前,也存在一些CAN總線產品開發公司定制的協議
    發表于 01-08 15:01 ?9次下載
    <b class='flag-5'>CAN</b><b class='flag-5'>總線</b><b class='flag-5'>通信協議</b>分析實現

    CAN總線協議是什么?CAN總線協議有哪些?CAN總線協議知識分析

    屬于軟件協議。本篇文章先概述一下CAN網絡,讓大家對CAN總線協議有一個全局的概念,再到底層的CAN
    的頭像 發表于 10-03 19:53 ?7.5w次閱讀
    <b class='flag-5'>CAN</b><b class='flag-5'>總線</b><b class='flag-5'>協議</b>是什么?<b class='flag-5'>CAN</b><b class='flag-5'>總線</b><b class='flag-5'>協議</b>有哪些?<b class='flag-5'>CAN</b><b class='flag-5'>總線</b><b class='flag-5'>協議</b><b class='flag-5'>知識</b>分析

    CAN總線通信協議

    CAN總線通信協議詳細如下。
    發表于 04-19 16:54 ?79次下載

    CAN總線基礎知識詳細講解

    CAN總線基礎知識詳細講解。
    發表于 04-02 17:44 ?14次下載

    CAN總線基礎知識

    CAN總線是一種常用的總線,對于剛開始接觸CAN總線的,面對著各式各樣的資料,可能不知道從何看起,今天科普一下
    的頭像 發表于 02-09 15:43 ?4614次閱讀

    CAN總線通信協議是什么

    CAN總線 CAN 是Controller Area Network 的縮寫(以下稱為CAN),是ISO國際標準化的串行通信協議。在汽車產業
    的頭像 發表于 07-18 11:10 ?3818次閱讀
    <b class='flag-5'>CAN</b><b class='flag-5'>總線</b><b class='flag-5'>通信協議</b>是什么

    can總線通信協議有哪些 CAN接口保護及工作原理

    CAN總線(Controller Area Network)是一種廣泛應用于汽車、工業自動化和其他領域的串行通信協議。以下是幾種常見的CAN總線
    的頭像 發表于 08-18 14:40 ?2.6w次閱讀
    <b class='flag-5'>can</b><b class='flag-5'>總線</b>的<b class='flag-5'>通信協議</b>有哪些 <b class='flag-5'>CAN</b>接口保護及工作原理

    CAN總線通信協議詳解

    一、CAN總線概述 CAN總線是一種多主控制的串行通信協議,它允許多個設備共享同一通信線路,而無
    的頭像 發表于 11-12 09:46 ?3175次閱讀

    CAN總線與其他串行通信協議比較

    CAN總線與其他串行通信協議相比,具有其獨特的特點和優勢。以下是對CAN總線與UART、I2C、SPI等常見串行
    的頭像 發表于 11-12 09:56 ?2030次閱讀

    總線通信協議解析及應用

    在現代計算機系統中,總線通信協議扮演著至關重要的角色。它們定義了數據如何在處理器、內存、輸入/輸出設備等組件之間傳輸。 總線通信協議的基本概念 總線
    的頭像 發表于 12-31 10:07 ?858次閱讀