CAN匯流排的錯誤處理CAN匯流排上的錯誤幀要如何排查

2021-03-05 11:50:00 字數 5021 閱讀 5850

1樓:半生電影

屬於是鏈路層功能,此功能由can控制器決定,圖為can控制介紹圖,其中詳細介紹與錯誤處理有關的部分:位流處理器、位邏輯控制、錯誤管理邏輯。

位流處理器(bsp)是乙個控制傳送緩衝器、接收fifo和can匯流排之間資料流的程式裝置,它還執行匯流排上的錯誤檢測、仲載、匯流排填充和錯誤處理。

位時序邏輯(btl)監視序列的can匯流排和位時序,它在資訊開頭「弱勢支配」的匯流排傳輸時,同步can匯流排位流(硬同步),接收報文時再次同步下一次傳送(軟同步)。

錯誤管理邏輯(eml)負責限制傳輸層模組的錯誤,它接收來自位流處理器的出錯報告,然後把有關錯誤統計告訴位流處理器和介面管理邏輯(iml)。

2樓:愛刷

在can匯流排中存在5種錯誤型別,它們互相並不排斥,下面簡單介紹一下它們的區別、產生的原因及處理方法。

位錯誤:向匯流排送出一位的某個節點同時也在監視匯流排,當監視到匯流排位的電平和送出的電平不同時,則在該位時刻檢測到乙個位錯誤。但是在仲裁區的填充位流期間或應答間隙送出隱性位而檢測到顯性位時,不認為是錯誤位。

送出認可錯誤標註的傳送器,在檢測到顯性位時也不認為是錯誤位。

填充錯誤:在使用位填充方法進行編碼的報文中,出現了第6個連續相同的位電平時,將檢 測出乙個填充錯誤。

crc錯誤:crc序列是由傳送器crc計算的結果組成的。接收器以和傳送器相同的方法計算crc。如果計算的結果和接收到的crc序列不同,則檢測出乙個crc錯誤。

形式錯誤: 當固定形式的位區中出現乙個或多個非法位時,則檢測到乙個形式錯誤。

應答錯誤:在應答間隙,傳送器未檢測到顯性位時,則由它檢測出乙個應答錯誤。

檢測到出錯條件的節點通過傳送錯誤標誌進行標定。當任何節點檢測出位錯誤、填充錯誤、形式錯誤或應答錯誤時,由該節點在下一位開始傳送出錯誤標誌。

當檢測到crc錯誤時。出錯標誌在應答界定符後面那一位開始傳送.除非其他出錯條件的錯誤標誌已經開始傳送。

在can匯流排中,任何乙個單元可能處於下列3種故障狀態之一:錯誤啟用狀態(erroractive)、錯誤認可狀態(error passitive)和匯流排關閉狀態(bus off)。

錯誤啟用單元可以照常參和匯流排通訊,並且當檢測到錯誤時,送出乙個活動錯誤標誌。錯誤 認可節點可參和匯流排通訊,但是不允許送出活動錯誤標誌。當其檢測到錯誤時,只能送出認可錯 誤標誌,並且傳送後仍為錯誤認可狀態,直到下一次傳送初始化。

匯流排關閉狀態不允許單元對總 線有任何影響。

為了界定故障,在每個匯流排單元中都設有2個計數:傳送出錯計數和接收出錯計數。這些 計數按照下列規則進行。

(1)接收器檢查出錯誤時,接收器錯誤計數器加1,除非所有檢測錯誤是傳送活動錯誤標誌或超載標誌期間的位錯誤。

(2)接收器在送出錯誤標誌後的第一位檢查出顯性位時,錯誤計數器加8。

(3)傳送器送出乙個錯誤標誌時,傳送器錯誤計數器加8。有兩種情況例外:其一是如果發 送器為錯誤認可,由於未檢測到顯性位應答或檢測到應答錯誤,並且在送出其認可錯誤標誌時,未檢測到顯性位;另外一種情況是如果仲裁器件產生填充錯誤,傳送器送出乙個隱性位錯誤標誌,而檢測到的是顯性位。

除以上兩種情況外,傳送器錯誤計數器計數不改變。

(4)傳送器送出乙個活動錯誤標誌或超載標誌時,檢測到位錯誤,則傳送器錯誤計數器加8。

(5)在送出活動錯誤標誌、認可錯誤標誌或超載錯誤標誌後,任何節點都最多允許連續7個顯性位。在檢測到第11個連續顯性位後,或緊隨認可錯誤標誌檢測到第8個連續的顯性位,以及附加的8個連續的顯性位的每個序列後,每個傳送器的傳送錯誤計數都加8,並且每個接收器的接收錯誤計數也加8。

(6)報文成功傳送後,傳送錯誤計數減1,除非計數值已經為0。

(7)報文成功傳送後,如果接收錯誤計數處於1~197之間,則其值減1;如果接收錯誤計數為0,則仍保持為0;如果大於127,則將其值記為119~127之間的某個數值。

(8)當傳送錯誤計數等於或大於128,或接收錯誤汁數等於或大於128時,節點進入錯誤認,可狀態,節點送出乙個活動錯誤標誌。

(9)當傳送錯誤計數器大於或等於256時,節點進入匯流排關閉狀態。

(1o)當傳送錯誤計數和接收錯誤計數均小於或等於127時,錯誤認可節點再次變為錯誤啟用節點。

(11)在檢測到匯流排上11個連續的隱性位傳送128次後,匯流排關閉節點將變為2個錯誤計數器均為0的錯誤啟用節點。

(12)當錯誤計數器數值大於96時,說明匯流排被嚴重干擾。

如果系統啟動期間僅有1個節點掛在匯流排上,此節點發出報文後,將得不到應答,檢查出錯誤並重複該報文,此時該節點可以變為錯誤認可節點,但不會因此關閉匯流排。

can匯流排上的錯誤幀要如何排查?

3樓:咩咩羊

對於can匯流排上的錯誤幀,普通的can裝置(例如usbcan)是無法獲取

到的,必須使用專用的can匯流排分析儀才能獲取到,然後做分析。我手頭上有一台叫canscope的can匯流排分析儀可以直接獲取到can匯流排上的錯誤幀資料和波形,如下圖:

4樓:天會變得更藍

錯誤主動就是自己檢測到錯誤了,發到匯流排上告知匯流排錯誤,一般是匯流排硬體原因產生的。而過載幀一般是由於沒及時的收取資料產生的,是軟體問題。

追問我的意思是如果我收到了一串訊號,發現是乙個6位的顯性電平,怎麼判斷它是主動錯誤幀還是過載幀?

回答這個是由can控制器自行判定的,你要獲知結果的話,可以檢視can控制器的錯誤暫存器的資訊。

追問也就是說對匯流排的傳輸部分來說,兩者是一樣的?

回答不一樣的,乙個是硬體本身的原因,如匯流排阻抗不匹配,環節干擾因素造成的;另外乙個是軟體自己的缺陷造成的,沒及時的取出已經在緩衝區內的資料,而新的資料又來了,這樣就會造成過載。

can匯流排出現錯誤幀時,為什麼要區分「錯誤主動」節點和「錯誤認可」節點?有什麼意思?

5樓:最紳士的痞子灬

1、主動錯誤狀態——(通常說的正常狀態也應該包含在內)處於該狀態的節點可以不受任何限制地傳送報文和主動錯誤幀(由顯性位構成)。

2、被動錯誤狀態——處於被動錯誤狀態的節點可以傳送報文和被動錯誤幀(由隱性位構成)。

3、匯流排關閉狀態——處於匯流排關閉狀態的節點暫時不能參與匯流排通訊。

4、這一狀態下,既無法傳送報文,也無法接收報文。只有傳送器能夠進入匯流排關閉狀態。——就需要進行錯誤處理了。

can通訊錯誤

6樓:非州尛白臉

在can初始化中,開啟了錯誤報警中斷使能和匯流排錯誤中斷使能,當錯誤計數器(傳送錯誤計數器和接收錯誤計數器中的任何乙個)計數值超過96時,說明匯流排被嚴重干擾,產生錯誤報警中斷;當傳送錯誤計數器值超過255時,節點進入匯流排關閉狀態,can控制器將設定復位模式位為1(當前)並產生乙個錯誤報警和匯流排錯誤中斷。錯誤報警中斷處理是清零所有錯誤計數器的值,維持can的運轉,但這樣做存在侷限性:清零錯誤計數器只是將錯誤計數器簡單的清零,不能從根本上消除錯誤**;由於錯誤報警中斷產生的條件為錯誤計數器的值超過96,而匯流排關閉中斷產生的條件為傳送錯誤計數器的值超過255,因此,傳送錯誤計數器引起的錯誤報警中斷可以遮蔽掉匯流排錯誤中斷。

系統可能由於總響應錯誤報警中斷導致系統不能產生匯流排關閉,使can匯流排一直處於不穩定狀態。

為了避免這種情況,只開啟匯流排錯誤中斷使能,這樣,在匯流排發生嚴重錯誤的情況下,可馬上產生匯流排錯誤中斷,使錯誤得到及時處理。匯流排錯誤中斷的處理是復位該節點,重新初始化can控制器,這樣可以消除錯誤,給節點乙個很好的初態。由於can匯流排兩條傳輸線之間的誤接觸,也易造成can匯流排關閉,使節點無法工作,在主程式中查詢狀態暫存器中當前can匯流排狀態,及時復位該節點,使節點正常工作。

同時,為了更方便直觀地檢視can匯流排的工作狀態,設計了乙個指示燈,當匯流排正常地收發資訊時,指示燈閃爍,一旦can匯流排關閉,節點不參與匯流排活動,指示燈不再閃爍(此時指示燈長亮或長滅),當匯流排錯誤不能通過復位該節點解決時,可以通過檢視指示燈的狀態(長亮或長滅),及時地對不工作的節點進行修理維護。

can匯流排 格式錯誤與位錯誤的區別

7樓:雪v歌

在can匯流排中存在5種錯誤型別,它們互相並不排斥,下面簡單介紹一下它們的區別、產生的原因及處理方法。

位錯誤:向匯流排送出一位的某個節點同時也在監視匯流排,當監視到匯流排位的電平和送出的電平不同時,則在該位時刻檢測到乙個位錯誤。但是在仲裁區的填充位流期間或應答間隙送出隱性位而檢測到顯性位時,不認為是錯誤位。

送出認可錯誤標註的傳送器,在檢測到顯性位時也不認為是錯誤位。

填充錯誤:在使用位填充方法進行編碼的報文中,出現了第6個連續相同的位電平時,將檢 測出乙個填充錯誤。

crc錯誤:crc序列是由傳送器crc計算的結果組成的。接收器以和傳送器相同的方法計算crc。如果計算的結果和接收到的crc序列不同,則檢測出乙個crc錯誤。

形式錯誤: 當固定形式的位區中出現乙個或多個非法位時,則檢測到乙個形式錯誤。

應答錯誤:在應答間隙,傳送器未檢測到顯性位時,則由它檢測出乙個應答錯誤。

檢測到出錯條件的節點通過傳送錯誤標誌進行標定。當任何節點檢測出位錯誤、填充錯誤、形式錯誤或應答錯誤時,由該節點在下一位開始傳送出錯誤標誌。

當檢測到crc錯誤時。出錯標誌在應答界定符後面那一位開始傳送.除非其他出錯條件的錯誤標誌已經開始傳送。

在can匯流排中,任何乙個單元可能處於下列3種故障狀態之一:錯誤啟用狀態(erroractive)、錯誤認可狀態(error passitive)和匯流排關閉狀態(bus off)。

錯誤啟用單元可以照常參和匯流排通訊,並且當檢測到錯誤時,送出乙個活動錯誤標誌。錯誤 認可節點可參和匯流排通訊,但是不允許送出活動錯誤標誌。當其檢測到錯誤時,只能送出認可錯 誤標誌,並且傳送後仍為錯誤認可狀態,直到下一次傳送初始化。

匯流排關閉狀態不允許單元對總 線有任何影響。

can匯流排出現錯誤幀時,為什麼要區分「錯誤主動」節點和「錯誤認可」節點?有什麼意思?

8樓:匿名使用者

問題2:乙個檢測到出錯狀態的「錯誤啟用」節點通過發出乙個活動錯誤標誌來對出錯結果進行通報。這種出錯標誌的形式違反了位填充規則,也破壞了固定的位場形式。

結果,所有其他節點也檢測到乙個出錯狀態,都各自送出乙個人出錯標誌,所以在匯流排上實際檢測到的顯性位序列是由多個節點各自發出的不同出錯標誌疊加而成的。該序列的總長度最少為六位,最多為12位。

CAN通訊錯誤,CAN匯流排的錯誤處理

在can初始化中,開啟了錯誤報警中斷使能和匯流排錯誤中斷使能,當錯誤計數器 傳送錯誤計數器和接收錯誤計數器中的任何乙個 計數值超過96時,說明匯流排被嚴重干擾,產生錯誤報警中斷 當傳送錯誤計數器值超過255時,節點進入匯流排關閉狀態,can控制器將設定復位模式位為1 當前 並產生乙個錯誤報警和匯流排...

CAN匯流排的仲裁機制,CAN匯流排的有關仲裁機制,具體問題在問題補充中,求大俠

如果can匯流排上的多個節點同時向匯流排上傳送資料時,多個資料就會在匯流排上出現 撞車 的現象,這就像生活中很多人在一起討論問題,如果幾個人同時講話,就會亂套,此時需要進行仲裁,決定哪個人先講,哪個人後講。can匯流排的有關仲裁機制,具體問題在問題補充中,求大俠 30 1,討論誰更間接的,實際的仲裁...

關於CAN匯流排的一些問題,關於can匯流排的一些問題

1.標準格式資料幀包括 1位幀起始位,11位id位 1irq位,8個控制位,8位元組的資料位,2位元組的crc校驗位,7個終止位 記得不一定全面 同時有碼流控制功能,即位填充功能。當出現4個相同電平的位時,會在中間插入1個不同的位。碼流填充區域包括從起始位一直到資料位結束。具體細節可以參見 現場匯流...