CAN總線(xiàn)錯誤檢測機制
CAN總線(xiàn)的錯誤都有哪些形式,相互之間有什么樣的關(guān)系,以及總線(xiàn)的檢測與校驗的原理是什么?
本文引用地址:http://dyxdggzs.com/article/201806/382527.htmCAN總線(xiàn)的錯誤幀可分為位錯誤、位填充錯誤、CRC錯誤、格式錯誤、應答錯誤五大類(lèi),每類(lèi)錯誤的具體解釋如圖8所示,此圖簡(jiǎn)潔明了的展現了各種錯誤。
圖8 CAN總線(xiàn)錯誤類(lèi)型
CAN報文傳輸過(guò)程中出現通訊錯誤,會(huì )發(fā)送錯誤幀,以上所述的錯誤幀類(lèi)型中根據其錯誤標識符不同,可分為“主動(dòng)錯誤”和“被動(dòng)錯誤”。
主動(dòng)錯誤:檢測錯誤主動(dòng)報錯,發(fā)出錯誤標識符(連續6個(gè)顯性位)和錯誤界定符(連續8個(gè)隱形位);目的在于“主動(dòng)”通知錯誤,即使別的節點(diǎn)沒(méi)有發(fā)現此錯誤;
被動(dòng)錯誤:檢測錯誤,被動(dòng)等待其他節點(diǎn)報錯后發(fā)送錯誤標識符(連續6個(gè)隱形位)和錯誤標識符(連續8個(gè)隱形位);目的在于識別錯誤,回應主動(dòng)錯誤;
總線(xiàn)關(guān)閉:節點(diǎn)不參與總線(xiàn)通訊;
為了避免某個(gè)設備因為自身原因(例如硬件損壞)導致無(wú)法正常收發(fā)數據而不斷地破壞數據幀,從而影響其他正常節點(diǎn)通訊,CAN-bus規范中規定每個(gè)CAN控制器都有一個(gè)發(fā)送錯誤計數器和一個(gè)接收錯誤計數器。根據計數值不同CAN節點(diǎn)會(huì )處于不同的設備狀態(tài),狀態(tài)之間的轉換關(guān)系如圖9所示:
圖9 錯誤轉換圖
接收、發(fā)送錯誤計數器對應的變動(dòng)條件及數值變動(dòng)情況:
接收單元檢測出錯誤時(shí),檢測到錯誤標識符或過(guò)載標志的“位錯誤”除外,此時(shí)REC+1、TEC不變;
接收單元在發(fā)送完錯誤標志后檢測到第一位為顯性電平,此時(shí)REC+8、TEC不變;
發(fā)送單元輸出錯誤標志,此時(shí)REC不變、TEC+8;
發(fā)送單元發(fā)送主動(dòng)錯誤標志或過(guò)載標志,檢測出位錯誤,REC不變、TEC+8;
接收單元發(fā)送主動(dòng)錯誤標志或過(guò)載標志,檢測出位錯誤,REC+8、TEC不變;
各單元從主動(dòng)錯誤標志、過(guò)載標志的開(kāi)始檢測出連續14個(gè)顯性位,之后每檢測出連續8個(gè)顯性位,發(fā)送時(shí)REC+8、接收時(shí)TEC+8;
檢測出被動(dòng)錯誤標志后追加連續8個(gè)位的顯性位,發(fā)送時(shí)REC+8、接收時(shí)TEC+8;
發(fā)送單元正常接收數據結束時(shí)(返回ACK且到幀結束位檢測到錯誤),REC不變、TEC-1;
接收單元正常接收數據結束時(shí)(到CRC未檢測出錯誤且正常返回ACK),REC<127時(shí),REC-1,REC>127時(shí),REC=127;TEC不變;
處于總線(xiàn)關(guān)閉的單元,檢測到128次連續11個(gè)位的隱形位,錯誤計數器歸零,REC、TEC=0;
CAN總線(xiàn)錯誤處理功能屬于是鏈路層功能,此功能由CAN控制器決定,如圖10所示CAN控制介紹圖,其中詳細介紹與錯誤處理有關(guān)的部分:位流處理器、位邏輯控制、錯誤管理邏輯。
位流處理器(BSP)是一個(gè)控制發(fā)送緩沖器、接收FIFO和CAN總線(xiàn)之間數據流的程序裝置,它還執行總線(xiàn)上的錯誤檢測、仲載、總線(xiàn)填充和錯誤處理。
位時(shí)序邏輯(BTL)監視串行的CAN總線(xiàn)和位時(shí)序,它在信息開(kāi)頭“弱勢支配”的總線(xiàn)傳輸時(shí),同步 CAN總線(xiàn)位流(硬同步),接收報文時(shí)再次同步下一次傳送(軟同步)。
錯誤管理邏輯(EML)負責限制傳輸層模塊的錯誤,它接收來(lái)自位流處理器的出錯報告,然后把有關(guān)錯誤統計告訴位流處理器和接口管理邏輯(IML)。
圖10 CAN控制器
CAN控制器的信號從CAN收發(fā)器的TXD發(fā)送到總線(xiàn),同時(shí)被RXD收回進(jìn)行檢測,以此達到實(shí)時(shí)的接收錯誤檢測、發(fā)送錯誤檢測與ID仲裁功能。CAN總線(xiàn)是如何保證數據傳輸可靠性的,以下介紹CAN總線(xiàn)獨有的檢測機制:位流檢測和CRC校驗;
位流檢測:即位檢測,如圖11所示節點(diǎn)在發(fā)送過(guò)程中,同時(shí)會(huì )監測自身發(fā)送的位數值,假如檢測到位與自身送出的位數值不同,則會(huì )提示位錯誤;
圖11 位檢測
CRC校驗:即循環(huán)冗余校驗碼是數據通訊領(lǐng)域中最常用的一種差錯校驗碼,其信息字段和校驗字段的長(cháng)度可任意選定;CRC校驗過(guò)程是通過(guò)循環(huán)計算冗余校驗碼的方式實(shí)現的,CAN控制器內部CRC的實(shí)現是基于多項式發(fā)生器和一個(gè)15位寄存器;其意義在于保證傳輸數據的正確性,未經(jīng)CRC校驗檢測出的錯誤低于10負九次方。
CANscope總線(xiàn)分析儀是一款綜合性的CAN總線(xiàn)開(kāi)發(fā)與測試的專(zhuān)業(yè)工具,集海量存儲示波器、網(wǎng)絡(luò )分析儀、誤碼率分析儀、協(xié)議分析儀及可靠性測試工具于一身,并把各種儀器有機的整合和關(guān)聯(lián),如圖12所示CANscope的軟件界面圖;重新定義CAN總線(xiàn)的開(kāi)發(fā)測試方法,可對CAN網(wǎng)絡(luò )通訊正確性、可靠性、合理性進(jìn)行多角度全方位的評估;幫助用戶(hù)快速定位故障節點(diǎn),解決CAN總線(xiàn)應用的各種問(wèn)題,是CAN總線(xiàn)開(kāi)發(fā)測試的終極工具。
圖12 CANscope軟件界面
評論