0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

一文讀懂CAN控制器錯(cuò)誤處理的原理

ZLG致遠(yuǎn)電子 ? 2024-04-26 08:25 ? 次閱讀

CAN通訊的錯(cuò)誤幀到底是如何被界定的?本文帶你輕松了解!

6b533a28-0363-11ef-9118-92fbcf53809c.jpg ?錯(cuò)誤標(biāo)定

檢測(cè)到錯(cuò)誤條件的站通過(guò)發(fā)送錯(cuò)誤標(biāo)志指示錯(cuò)誤。對(duì)于“錯(cuò)誤主動(dòng)”的節(jié)點(diǎn),錯(cuò)誤信息為“主動(dòng)錯(cuò)誤標(biāo)志”,對(duì)于“錯(cuò)誤被動(dòng)”的節(jié)點(diǎn),錯(cuò)誤信息為“被動(dòng)錯(cuò)誤標(biāo)志”。站檢測(cè)到無(wú)論是位錯(cuò)誤、填充錯(cuò)誤、形式錯(cuò)誤,還是應(yīng)答錯(cuò)誤,這個(gè)站會(huì)在下一位時(shí)發(fā)出錯(cuò)誤標(biāo)志信息。

只要檢測(cè)到的錯(cuò)誤的條件是CRC錯(cuò)誤,錯(cuò)誤標(biāo)志的發(fā)送開(kāi)始于ACK界定符之后的位(其他的錯(cuò)誤條件除外)。如圖1所示:

6b657936-0363-11ef-9118-92fbcf53809c.jpg

圖1 CRC錯(cuò)誤幀

6b778162-0363-11ef-9118-92fbcf53809c.jpg ?故障界定

至于故障界定,單元的狀態(tài)可能為以下三種之一:“錯(cuò)誤主動(dòng)”、“錯(cuò)誤被動(dòng)”、“總線關(guān)閉”。

1. “錯(cuò)誤主動(dòng)”的單元可以正常地參與總線通訊并在錯(cuò)誤被檢測(cè)到時(shí)發(fā)出主動(dòng)錯(cuò)誤標(biāo)志。
2. “錯(cuò)誤被動(dòng)”的單元不允許發(fā)送主動(dòng)錯(cuò)誤標(biāo)志?!板e(cuò)誤被動(dòng)”的單元參與總線通訊,在錯(cuò)誤被檢測(cè)到時(shí)只發(fā)出被動(dòng)錯(cuò)誤標(biāo)志。而且,發(fā)送以后,“錯(cuò)誤被動(dòng)”單元將在初始化下一個(gè)發(fā)送之前處于等待狀態(tài)(見(jiàn)“掛起發(fā)送”)。
3. “總線關(guān)閉”的單元不允許在總線上有任何的影響(比如,關(guān)閉輸出驅(qū)動(dòng)器)。
三個(gè)狀態(tài)的轉(zhuǎn)換方式如圖2所示:

6b91c02c-0363-11ef-9118-92fbcf53809c.jpg

圖2 CAN狀態(tài)轉(zhuǎn)換圖

在每一總線單元里使用兩種計(jì)數(shù)以便故障界定:發(fā)送錯(cuò)誤計(jì)數(shù)、接收錯(cuò)誤計(jì)數(shù)。
這些計(jì)數(shù)按以下規(guī)則改變(注意,在給定的報(bào)文發(fā)送期間,可能要用到的規(guī)則不只一個(gè)):1. 當(dāng)接收器檢測(cè)到一個(gè)錯(cuò)誤,接收錯(cuò)誤計(jì)數(shù)就加1。在發(fā)送主動(dòng)錯(cuò)誤標(biāo)志或過(guò)載標(biāo)志期間所檢測(cè)到的錯(cuò)誤為位錯(cuò)誤時(shí),接收錯(cuò)誤計(jì)數(shù)器值不加1。2. 當(dāng)錯(cuò)誤標(biāo)志發(fā)送以后,接收器檢測(cè)到的第一個(gè)位為“顯性”時(shí),接收錯(cuò)誤計(jì)數(shù)值加8。3. 當(dāng)發(fā)送器發(fā)送一錯(cuò)誤標(biāo)志時(shí),發(fā)送錯(cuò)誤計(jì)數(shù)器值加8。

  • 例外情況1:發(fā)送器為“錯(cuò)誤被動(dòng)”,并檢測(cè)到一應(yīng)答錯(cuò)誤(注:此應(yīng)答錯(cuò)誤由檢測(cè)不到一“顯性”ACK 以及當(dāng)發(fā)送被動(dòng)錯(cuò)誤標(biāo)志時(shí)檢測(cè)不到一“顯性”位而引起)。
  • 例外情況2:發(fā)送器因?yàn)樘畛溴e(cuò)誤而發(fā)送錯(cuò)誤標(biāo)志(注:此填充錯(cuò)誤發(fā)生于仲裁期間。引起填充錯(cuò)誤是由于:填充位〈填充位〉位于RTR位之前,并已作為“隱性”發(fā)送,但是卻被監(jiān)視為“顯性”)。
    例外情況1和例外情況2時(shí),發(fā)送錯(cuò)誤計(jì)數(shù)器值不改變。

4. 發(fā)送主動(dòng)錯(cuò)誤標(biāo)志或過(guò)載標(biāo)志時(shí),如果發(fā)送器檢測(cè)到位錯(cuò)誤,則發(fā)送錯(cuò)誤計(jì)數(shù)器值加8。

5.當(dāng)發(fā)送主動(dòng)錯(cuò)誤標(biāo)志或過(guò)載標(biāo)志時(shí),如果接受器檢測(cè)到位錯(cuò)誤(位錯(cuò)誤),則接收錯(cuò)誤計(jì)數(shù)器值加8。6. 在發(fā)送主動(dòng)錯(cuò)誤標(biāo)志、被動(dòng)錯(cuò)誤標(biāo)志或過(guò)載標(biāo)志以后,任何節(jié)點(diǎn)最多容許7個(gè)連續(xù)的 “顯性”位。以下的情況,每一發(fā)送器將它們的發(fā)送錯(cuò)誤計(jì)數(shù)值加8,及每一接收器的接收錯(cuò)誤計(jì)數(shù)值加8:

  • 當(dāng)檢測(cè)到第14個(gè)連續(xù)的“顯性”位后;
  • 在檢測(cè)到第8個(gè)跟隨著被動(dòng)錯(cuò)誤標(biāo)志的連續(xù)的“顯性”位以后;
  • 在每一附加的8個(gè)連續(xù)“顯性”位順序之后。

7. 報(bào)文成功傳送后(得到ACK及直到幀末尾結(jié)束沒(méi)有錯(cuò)誤),發(fā)送錯(cuò)誤計(jì)數(shù)器值減1,除非已經(jīng)是0。

8. 如果接收錯(cuò)誤計(jì)數(shù)值介于1和127之間,在成功地接收到報(bào)文后(直到應(yīng)答間隙接收沒(méi)有錯(cuò)誤,成功地發(fā)送了ACK位),接收錯(cuò)誤計(jì)數(shù)器值減1。如果接收錯(cuò)誤計(jì)數(shù)器值是0,則它保持0,如果大于127,則它會(huì)設(shè)置一個(gè)介于119到127之間值。9. 當(dāng)發(fā)送錯(cuò)誤計(jì)數(shù)器值等于或超過(guò)128時(shí),或當(dāng)接收錯(cuò)誤計(jì)數(shù)器值等于或超過(guò)128時(shí),節(jié)點(diǎn)為“錯(cuò)誤被動(dòng)”。讓節(jié)點(diǎn)成為“錯(cuò)誤被動(dòng)”的錯(cuò)誤條件致使節(jié)點(diǎn)發(fā)出主動(dòng)錯(cuò)誤標(biāo)志。10. 當(dāng)發(fā)送錯(cuò)誤計(jì)數(shù)器值大于或等于256時(shí),節(jié)點(diǎn)為“總線關(guān)閉”。11. 當(dāng)發(fā)送錯(cuò)誤計(jì)數(shù)器值和接收錯(cuò)誤計(jì)數(shù)器值都小于或等于127時(shí),“錯(cuò)誤被動(dòng)”的節(jié)點(diǎn)重新變?yōu)椤板e(cuò)誤主動(dòng)”。12. 在總線監(jiān)視到128次出現(xiàn)11個(gè)連續(xù)“隱性”位之后,“總線關(guān)閉”的節(jié)點(diǎn)可以變成“錯(cuò)誤主動(dòng)”(不再是“總線關(guān)閉”),它的錯(cuò)誤計(jì)數(shù)值也被設(shè)置為0。

備注1:

一個(gè)大約大于96的錯(cuò)誤計(jì)數(shù)值顯示總線被嚴(yán)重干擾。最好能夠預(yù)先采取措施測(cè)試這個(gè)條件。

備注2:

起動(dòng)/睡眠:如果起動(dòng)期間內(nèi)只有1個(gè)節(jié)點(diǎn)在線,以及如果這個(gè)節(jié)點(diǎn)發(fā)送一些報(bào)文,則將不會(huì)有應(yīng)答,并檢測(cè)到錯(cuò)誤和重復(fù)報(bào)文。由此,節(jié)點(diǎn)會(huì)變?yōu)椤板e(cuò)誤被動(dòng)”,而不是“總線關(guān)閉”。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 控制器
    +關(guān)注

    關(guān)注

    112

    文章

    15877

    瀏覽量

    175335
  • CAN
    CAN
    +關(guān)注

    關(guān)注

    57

    文章

    2663

    瀏覽量

    462428
  • 檢測(cè)
    +關(guān)注

    關(guān)注

    5

    文章

    4348

    瀏覽量

    91097
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    CAN控制器總線錯(cuò)誤分析之CAN節(jié)點(diǎn)BusOff恢復(fù)過(guò)程分析與測(cè)試

    “ 總線關(guān)閉(bus off)是CAN節(jié)點(diǎn)比較重要的錯(cuò)誤處理機(jī)制。那么,在總線關(guān)閉狀態(tài)下,CAN節(jié)點(diǎn)的恢復(fù)流程是怎樣的?又該如何理解節(jié)點(diǎn)恢復(fù)流程的“快恢復(fù)”和“慢恢復(fù)”機(jī)制?本文將為大家詳細(xì)分析總線
    發(fā)表于 08-04 11:16 ?1.5w次閱讀
    <b class='flag-5'>CAN</b><b class='flag-5'>控制器</b>總線<b class='flag-5'>錯(cuò)誤</b>分析之<b class='flag-5'>CAN</b>節(jié)點(diǎn)BusOff恢復(fù)過(guò)程分析與測(cè)試

    讀懂Can總線錯(cuò)誤處理

    為了防止故障節(jié)點(diǎn)干擾甚至阻塞整個(gè)CAN網(wǎng)絡(luò)系統(tǒng),CAN協(xié)議實(shí)現(xiàn)了復(fù)雜的故障限制機(jī)制。為了保證通信的正常,CAN 2.0 總線協(xié)議總線中各節(jié)點(diǎn)需要采取以下措施進(jìn)行錯(cuò)誤檢測(cè)。
    發(fā)表于 11-08 17:12 ?9193次閱讀

    嵌入式編程錯(cuò)誤處理機(jī)制設(shè)計(jì)

    本文主要總結(jié)嵌入式系統(tǒng)C語(yǔ)言編程中,主要的錯(cuò)誤處理方式。文中涉及的代碼運(yùn)行環(huán)境如下。
    發(fā)表于 04-28 09:59 ?685次閱讀
    嵌入式編程<b class='flag-5'>錯(cuò)誤處理</b>機(jī)制設(shè)計(jì)

    讀懂CAN總線錯(cuò)誤處理

    為了防止故障節(jié)點(diǎn)干擾甚至阻塞整個(gè)CAN網(wǎng)絡(luò)系統(tǒng),CAN協(xié)議實(shí)現(xiàn)了復(fù)雜的故障限制機(jī)制。為了保證通信的正常,CAN 2.0 總線協(xié)議總線中各節(jié)點(diǎn)需要采取以下措施進(jìn)行錯(cuò)誤檢測(cè):
    發(fā)表于 06-21 17:14 ?5194次閱讀
    <b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>讀懂</b><b class='flag-5'>CAN</b>總線<b class='flag-5'>錯(cuò)誤處理</b>

    Rust語(yǔ)言中錯(cuò)誤處理的機(jī)制

    在Rust語(yǔ)言中,錯(cuò)誤處理項(xiàng)非常重要的任務(wù)。由于Rust語(yǔ)言采用靜態(tài)類(lèi)型檢查,在編譯時(shí)就能發(fā)現(xiàn)很多潛在的錯(cuò)誤,這使得程序員能夠更加自信和高效地開(kāi)發(fā)程序。然而,即使我們?cè)诰幾g時(shí)盡可能地考慮了所有
    的頭像 發(fā)表于 09-19 14:54 ?1202次閱讀

    讀懂CAN通訊錯(cuò)誤

    CAN總線通信技術(shù)廣泛應(yīng)用于多個(gè)行業(yè),是每個(gè)總線設(shè)計(jì)工程師必學(xué)的個(gè)通訊網(wǎng)絡(luò)。然而,對(duì)于CAN通信中的錯(cuò)誤幀,許多人僅停留在表面了解,缺乏深入理解,這導(dǎo)致許多工程師在面對(duì)總線通信故障時(shí)
    的頭像 發(fā)表于 06-12 08:24 ?2096次閱讀
    <b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>讀懂</b><b class='flag-5'>CAN</b>通訊<b class='flag-5'>錯(cuò)誤</b>幀

    labviEW錯(cuò)誤處理的問(wèn)題

    為什么這個(gè)程序在啟用自動(dòng)錯(cuò)誤處理和C:\data.txt不存在的情況下,沒(méi)有顯示錯(cuò)誤對(duì)話框?。?/div>
    發(fā)表于 04-01 10:03

    款獨(dú)立CAN總線控制器的說(shuō)明

    時(shí)序邏輯和錯(cuò)誤管理邏輯等七部分組成,其中:· 接口管理邏輯負(fù)責(zé)解釋來(lái)自CPU 的命令,控制CAN 寄存的尋址,向主控制器提供中斷信息和狀態(tài)
    發(fā)表于 12-21 15:57

    CAN總線錯(cuò)誤處理

    被設(shè)置,我的簡(jiǎn)單C。ODE當(dāng)前捕獲這些錯(cuò)誤并停止發(fā)送。我知道旦TX錯(cuò)誤計(jì)數(shù)回到128以下,這些比特就會(huì)清除。我已經(jīng)閱讀了CAN文檔,盡管
    發(fā)表于 03-11 10:00

    CAN總線錯(cuò)誤分析方法 精選資料推薦

    我們先簡(jiǎn)單總結(jié)CAN錯(cuò)誤處理與故障界定:1.CAN控制器記錄發(fā)生在發(fā)送/接收過(guò)程中,總線數(shù)據(jù)出現(xiàn)錯(cuò)
    發(fā)表于 08-20 06:18

    AF錯(cuò)誤處理

    想問(wèn)下關(guān)于AF的錯(cuò)誤處理,例如我進(jìn)行串口通訊,打開(kāi)串口錯(cuò)誤,但是我不想停止AF,想繼續(xù)嘗試連接要怎么做?
    發(fā)表于 02-03 15:44

    LabVIEW中的錯(cuò)誤處理

    如何合理使用 LabVIEW 中的自定義錯(cuò)誤處理功能;對(duì)于可預(yù)見(jiàn)的錯(cuò)誤,是否可以選擇直 接忽略,或者前幾次嘗試忽略直到該特定錯(cuò)誤出現(xiàn)很多次后才通知用戶需要糾正該錯(cuò)誤 了;是否可以對(duì)
    發(fā)表于 05-24 11:07 ?6次下載

    虹科干貨 | 帶你全面認(rèn)識(shí)“CAN總線錯(cuò)誤”()——CAN總線錯(cuò)誤錯(cuò)誤

    節(jié)點(diǎn)錯(cuò)誤狀態(tài),并通過(guò)實(shí)際的應(yīng)用測(cè)試生成并記錄CAN錯(cuò)誤。什么是CAN總線錯(cuò)誤?控制器局域網(wǎng)絡(luò)(C
    的頭像 發(fā)表于 05-27 10:39 ?4349次閱讀
    虹科干貨 | 帶你全面認(rèn)識(shí)“<b class='flag-5'>CAN</b>總線<b class='flag-5'>錯(cuò)誤</b>”(<b class='flag-5'>一</b>)——<b class='flag-5'>CAN</b>總線<b class='flag-5'>錯(cuò)誤</b>與<b class='flag-5'>錯(cuò)誤</b>幀

    虹科干貨 | 帶你全面了解“CAN總線錯(cuò)誤”(四)——在實(shí)踐中生成和記錄CAN錯(cuò)誤

    節(jié)點(diǎn)錯(cuò)誤狀態(tài),并通過(guò)實(shí)際的應(yīng)用測(cè)試生成并記錄CAN錯(cuò)誤。在之前發(fā)布的文章中,我們介紹了CAN錯(cuò)誤錯(cuò)誤處
    的頭像 發(fā)表于 06-09 10:21 ?1449次閱讀
    虹科干貨 | 帶你全面了解“<b class='flag-5'>CAN</b>總線<b class='flag-5'>錯(cuò)誤</b>”(四)——在實(shí)踐中生成和記錄<b class='flag-5'>CAN</b><b class='flag-5'>錯(cuò)誤</b>

    CAN總線錯(cuò)誤處理介紹

    每個(gè)節(jié)點(diǎn)維護(hù)兩個(gè)錯(cuò)誤計(jì)數(shù):傳送錯(cuò)誤計(jì)數(shù)和接收錯(cuò)誤計(jì)數(shù)。有幾個(gè)規(guī)則規(guī)定這些計(jì)數(shù)
    的頭像 發(fā)表于 09-20 17:09 ?1815次閱讀
    <b class='flag-5'>CAN</b>總線<b class='flag-5'>錯(cuò)誤處理</b>介紹