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

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

3天內不再提示

深入探討CAN節點錯誤管理機制

AGk5_ZLG_zhiyua ? 來源:ZLG致遠電子 ? 作者: 研發部 ? 2021-10-20 09:49 ? 次閱讀

CAN節點的穩定性、可靠性和安全性得益于其強大的錯誤管理機制。那么,CAN節點為什么能感知錯誤?又是如何響應錯誤?您是否能清晰地想象出這一過程?本文將為大家詳細分析CAN節點錯誤管理的工作過程。

節點電路構成

如圖1所示,MCU作為主控制器,完成CAN控制器和功能電路的控制。

6961e90e-30fb-11ec-82a8-dac502259ad0.jpg

圖1 CAN節點組成框圖

CAN控制器是工作于數據鏈路層的器件,集成了CAN規范中數據鏈路層的全部功能,其功能由軟件和硬件共同實現,從設備供應商買回來的CAN控制器已經把相應的邏輯固化在其硅片之中;

MCU是工作于應用層的器件,其功能由軟件和硬件共同實現,MCU運行的程序可由設計者靈活設計,以實現CAN節點的特定功能;

CAN收發器工作于物理層,其功能完全由硬件實現,其作用是將CAN控制器的邏輯電平轉化為CAN總線的模擬差分信號,以及把總線模擬差分信號轉換成CAN控制器的邏輯電平。

CAN節點的錯誤管理屬于CAN通信規范數據鏈路層的內容,具體來說,錯誤管理是通過MCU和CAN控制器來實施的??梢哉f,CAN控制器是錯誤管理的基礎設施,我們可以從兩個方面理解其工作邏輯:一是如何感知錯誤,二是如何響應錯誤。

注:

1、本文所說的CAN規范指的是德國BOSCH公司的《CAN Specification Version 2.0》。

節點如何感知錯誤?

如前文所述,節點對總線錯誤的識別是通過CAN控制器來完成的。CAN控制器輸出給收發器發送引腳TX的邏輯信號位會從收發器接收引腳RX接收,這使得CAN控制器可以在發送一個邏輯位期間同時監測總線的實際電平值。CAN控制器檢測總線錯誤原理如圖2所示:

69fbdfc8-30fb-11ec-82a8-dac502259ad0.jpg

圖2 監測總線錯誤原理圖

如圖2描述,CAN控制器監測一個總線電平的電平值是在采樣點位置進行的,判斷是否出現錯誤是在信息處理時間內完成的。

綜上所述,CAN控制器對錯誤的識別可概括為:無論是作為發送器還是接收器,在采樣點位置成功監測到當前總線的實際電平值后,CAN控制器便按照CAN規范中描述的錯誤管理規則判斷是否出現錯誤。

CAN通信過程中的錯誤類型包括5種,分別是:位錯誤、填充錯誤、CRC錯誤、幀格式錯誤、應答錯誤。接下來分別對5種錯誤的檢測識別過程進行解析。

1、位錯誤

位錯誤是由作為發送器的節點在發送報文期間進行檢測識別的。CAN控制器的程序邏輯發送的電平與監測到總線的實際信號不一致即在此位期間檢測到位錯誤。

例外情況,在仲裁場或應答間隙期間發送一“隱性”位卻監視到一“顯性”位,以及當發送器發送一個被動錯誤標志但檢測到“顯性”位時,均也不被視為位錯誤,以實現特定的功能。

2、填充錯誤

在CAN幀的位場中,幀起始、仲裁場、控制場、數據場以及CRC序列,均通過位填充的方法編碼。無論何時,發送器只要檢測到這些位場對應位流里有5個連續相同值的位,便自動在接著的下一位插入一個補碼位。CAN控制器在監測總線電平值的同時對連續相同的位電平值會進行計數,如果在使用位填充法進行編碼的信息中,出現了第6個連續相同的位電平值時,便檢測到一個填充錯誤。

3、CRC錯誤

CRC錯誤是由作為接收器的節點進行檢測識別的。CRC序列共15位(不包含填充位),其內容由幀起始、仲裁場、控制場、數據場(如果有)的無填充位流計算而來。

CRC序列計算使用CAN規范規定的方法。作為發送器的節點發送CAN報文時CRC序列由規定的計算方法確定,作為接收器的節點從總線上接收完數據場最后一個數據位(沒有數據場時是接收完控制場的最后一個位)后,如果接下來接收到實際的CRC序列與接收器的計算結果不一致,便檢測到CRC錯誤。

4、格式錯誤

節點無論是作為發送器的還是作為接收器均可在監測報文期間檢測識別格式錯誤。由于CAN通信嚴格按照CAN規范定義的幀格式進行報文封裝傳輸,CAN控制器在監測總線電平位時明確知道當前位、后續位屬于幀格式中哪個位場,以及屬于位場的第幾個位,當接收到一個屬于幀格式固定形式的位時,如果實際電平值與幀格式定義不一致,則檢測到一個格式錯誤。

例外情況,對于接收器來說,幀結束最后的位被置于“不重要”狀態,監測到的幀結束最后一位期間的顯性位不被當作幀錯誤。

5、應答錯誤應答錯誤是由作為發送器的節點檢測識別的。在發送報文時,只要在發送應答間隙(隱性)期間所監測到的位不為“顯性”,則發送器會檢測到一個應答錯誤。

注:

1、上述5種錯誤不會相互排斥,也就是說CAN幀中的某個錯誤有可能同屬一種以上的錯誤類型。

2、如上所述,作為發送器或接收器的不同角色時,直接能檢測到的錯誤類型是不一樣的。

節點如何響應錯誤?

CAN規范中規定每個CAN控制器中實現一個發送錯誤計數器和一個接收錯誤計數器。根據計數值不同,節點會處于不同的節點狀態,并根據計數值的變化進行狀態轉換,狀態轉換如圖3所示。

6a87abe8-30fb-11ec-82a8-dac502259ad0.png

圖3 節點轉態轉換圖

當CAN控制器檢測到總線錯誤后通過發送錯誤標志指示錯誤。對于“錯誤主動”的節點,錯誤標志表現為“主動錯誤標志”,對于“錯誤被動”的節點,錯誤標志表現為“被動錯誤標志”。

無論檢測到位錯誤、填充錯誤、幀格式錯誤、還是應答錯誤,CAN控制器會在緊鄰的下一位發送錯誤標志。如果檢測到的錯誤類型是CRC錯誤,錯誤標志的發送開始于ACK定界符之后的位,即幀結尾。

綜上所述,CAN控制器對錯誤的響應可概括為:根據當前的節點狀態在位流序列相應的位置用錯誤標志標示錯誤,并按照CAN規范更新錯誤計數值,進行節點狀態轉換。并且是每成功監測到一次錯誤便進行一次響應。

注:

1、由于篇幅有限,關于錯誤計數的詳細規則、節點狀態轉換以及錯誤幀格式等細節均不在本文進行討論,請讀者查閱CAN協議規范。

2、上述分析可知道,錯誤響應的關鍵要素包括錯誤標志的類型和響應的位置。

錯誤管理機制的作用

錯誤管理機制的作用主要體現在對錯誤的響應過程。

作為發送器發送錯誤標志時,無論“主動錯誤”還是“被動錯誤”都必然包括6個連續同極性的位,使其他節點也識別到總線錯誤,進而使所有節點都能丟棄當前出錯的幀。

作為接收器發送錯誤標志時,“主動錯誤”標志使其他節點也識別到總線錯誤從而使所有節點(包括作為發送器的節點)都能丟棄當前出錯的幀;“被動錯誤”標志不影響總線通信從而使其他節點都能成功接收當前幀,處于“被動錯誤”狀態的節點屬于“不可信”狀態,其檢測到錯誤僅是自己丟棄當前幀,這也是錯誤管理的靈活性所在,即錯誤響應并不是嚴格在任何情況下都使所有節點丟棄同一幀報文。

綜上所述,錯誤管理機制可以使所有的節點同時接收或丟棄總線的同一幀報文,又可以使作為接收器的被動錯誤狀態的節點僅自己丟棄當前報文而不影響其他節點。因此,錯誤管理是實現CAN通信數據一致性的機制之一。

總結

CAN節點錯誤管理功能是由CAN節點組成中的CAN控制器負責的,對錯誤管理的工作過程可以從“錯誤識別”和“錯誤響應”兩個方面進行理解。錯誤管理是實現CAN通信數據的一致性的機制之一。

ZPS-CANFD是致遠電子總線分析儀第二代CAN總線開發輔助工具,適用于CANFD、CAN、LIN總線的測量及測試儀器,支持總線數據的發送和接收,高層協議解析及診斷,能對CANFD、CAN總線物理層電氣信號實時采集和記錄,并附帶有高速模擬通道、通用數字IO及模擬IO,通過提供的硬件接口及軟件功能,用戶能夠便捷地構建總線信號測量與分析、節點功能仿真及測試、網絡可靠性診斷及評估的自動化系統。ZPS-CANFD可實現CAN/CANFD報文和波形的同步監測,可以直觀的定位排查節點錯誤問題,以及更高效的錯誤干擾等模擬測試。

編輯:jq

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

    關注

    146

    文章

    16130

    瀏覽量

    344855
  • 計數器
    +關注

    關注

    32

    文章

    2209

    瀏覽量

    93378
  • 發送器
    +關注

    關注

    1

    文章

    238

    瀏覽量

    26634
  • CAN控制器
    +關注

    關注

    3

    文章

    74

    瀏覽量

    14943

原文標題:【原理解析】一文讀懂CAN節點錯誤管理機制

文章出處:【微信號:ZLG_zhiyuan,微信公眾號:ZLG致遠電子】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    虹科培訓 | CiA協會CAN總線實訓開班,新一代CAN網絡CAN XL

    暌違5年之久,國際CiA協會培訓再次落地國內!你是否渴望與國際CAN領域的權威專家面對面交流,深入探討CAN技術的最新發展與應用?你是否想站在行業前沿,領略CAN技術的最新動態?機會就
    的頭像 發表于 05-16 08:04 ?130次閱讀
    虹科培訓 | CiA協會<b class='flag-5'>CAN</b>總線實訓開班,新一代<b class='flag-5'>CAN</b>網絡<b class='flag-5'>CAN</b> XL

    一文讀懂CAN控制器錯誤處理的原理

    CAN通訊的錯誤幀到底是如何被界定的?本文帶你輕松了解!錯誤標定檢測到錯誤條件的站通過發送錯誤標志指示
    的頭像 發表于 04-26 08:25 ?604次閱讀
    一文讀懂<b class='flag-5'>CAN</b>控制器<b class='flag-5'>錯誤</b>處理的原理

    9個Can節點中一個節點錯誤引發的巨大問題求解

    最近做的一個項目,我設備有9個can,一個can作主機去循環召喚下面8個can作從機的數據(所有設備能正常收發)。當人為把從機的一個can通訊線給斷掉,再把它重新接上之后,會出現主機
    發表于 04-10 07:40

    深入理解Java 8內存管理機制及故障排查實戰指南

    Java的自動內存管理機制是由 JVM 中的垃圾收集器來實現的,垃圾收集器會定期掃描堆內存中的對象,檢測并清除不再使用的對象,以釋放內存資源。
    的頭像 發表于 04-04 08:10 ?634次閱讀
    <b class='flag-5'>深入</b>理解Java 8內存<b class='flag-5'>管理機制</b>及故障排查實戰指南

    CAN數據傳輸錯誤的常見原因有哪些?

    電源波動或其他電氣問題可能會影響CAN信號的質量并導致“幀錯誤”。例如,波特率不匹配或者節點沒有初始化,也可能導致沒有ACK(應答)信號。
    發表于 04-02 09:30 ?361次閱讀

    深入探討電源變壓器在儲能設備中的應用

    深入探討電源變壓器在儲能設備中的應用? 電源變壓器在儲能設備中的應用已經成為當代能源儲備和利用的關鍵技術之一。隨著可再生能源的不斷發展和應用,儲能設備的需求也越來越大。電源變壓器作為儲能設備中的關鍵
    的頭像 發表于 02-02 09:44 ?602次閱讀

    詳解zookeeper的session管理機制

    使用過zookeeper的都知道,當我們使用zookeeper創建一個節點時,我們能選擇節點的類型是“臨時節點”還是“永久節點”。臨時節點
    的頭像 發表于 01-08 09:46 ?592次閱讀
    詳解zookeeper的session<b class='flag-5'>管理機制</b>

    常見PCIe電源管理簡介

    電源管理主要包含兩個部分:PCI-PM電源管理機制和ASPM電源管理機制。
    的頭像 發表于 12-16 16:29 ?1716次閱讀
    常見PCIe電源<b class='flag-5'>管理</b>簡介

    如何用示波器排查CAN的各種錯誤幀呢?

    ,在CAN通信中,錯誤幀可能會導致設備故障和通信中斷,因此排查CAN錯誤幀非常重要。本文將詳細介紹如何使用示波器排查CAN的各種
    的頭像 發表于 12-07 11:09 ?761次閱讀

    STM32 CAN接收/發送錯誤寄存器如何清零?

    中,每一個節點都有一個CAN控制器,CAN控制器通過內部寄存器和接口與CAN總線連接。其中,在CAN傳輸過程中,如果出現
    的頭像 發表于 09-14 14:22 ?3318次閱讀

    認識CAN總線錯誤 CAN總線錯誤分析與解決

    認識CAN 總線錯誤的第一步就是了解認識CAN 總線協議和它的具體功能,這樣才能更容易地理解CAN 總線是如何去發現并解決錯誤的。
    發表于 08-14 15:18 ?4154次閱讀
    認識<b class='flag-5'>CAN</b>總線<b class='flag-5'>錯誤</b> <b class='flag-5'>CAN</b>總線<b class='flag-5'>錯誤</b>分析與解決

    CAN總線錯誤分析與解決 CAN節點發送錯誤不成功是什么原因

    CAN總線狀態直接進入了BUS OFF狀態,這意味著錯誤計數已經超限,查看CPU收發寄存器的收發錯誤計數顯示發送錯誤計數TEC達到248, 接收錯誤
    發表于 08-01 14:37 ?3791次閱讀
    <b class='flag-5'>CAN</b>總線<b class='flag-5'>錯誤</b>分析與解決 <b class='flag-5'>CAN</b><b class='flag-5'>節點發送錯誤</b>不成功是什么原因

    了解CAN收發器及如何驗證多節點CAN系統的性能

    本文介紹了評估“控制器局域網”(CAN)收發器的正確系統級測試方法。通過展示在多CAN節點系統中執行不同CAN節點之間的數據傳輸時如何避免實
    的頭像 發表于 07-10 09:56 ?758次閱讀
    了解<b class='flag-5'>CAN</b>收發器及如何驗證多<b class='flag-5'>節點</b><b class='flag-5'>CAN</b>系統的性能

    一文讀懂CAN總線錯誤處理

    為了防止故障節點干擾甚至阻塞整個CAN網絡系統,CAN協議實現了復雜的故障限制機制。為了保證通信的正常,CAN 2.0 總線協議總線中各
    發表于 06-21 17:14 ?2885次閱讀
    一文讀懂<b class='flag-5'>CAN</b>總線<b class='flag-5'>錯誤</b>處理

    基于FPGA的CAN總線通信節點設計

    節點的硬件接口電路?;趯?b class='flag-5'>CAN 總線控制器的功能分析, 并應用Verilog語言進行軟件設計, 從而實現CAN節點之間的通信功能。 0 引言 CA
    的頭像 發表于 06-18 11:15 ?2239次閱讀
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>