干貨分享丨淺談CAN總線的仲裁機制

原創(chuàng) 2020-03-04 16:22:00 CAN總線 CAN仲裁

隨著工業(yè)技術(shù)不斷發(fā)展,CAN總線已廣泛應(yīng)用于車輛、航空、醫(yī)療等高安全要求領(lǐng)域。高頻發(fā)送CAN報文也成為安全測試的必要組成部分。

在信號正常的網(wǎng)絡(luò)上高負載率發(fā)送測試時,總線上偶然會出現(xiàn)許多意想不到的問題,例如出現(xiàn)大量錯誤報文、被測設(shè)備報文周期出現(xiàn)異常、甚至總線鎖死等,這個時候我們則需要考慮一下CAN網(wǎng)絡(luò)上的仲裁是否發(fā)生了異常。

01、什么是總線仲裁

系統(tǒng)中多個設(shè)備或模塊可能同時申請對總線的使用權(quán),為避免產(chǎn)生總線沖突,需由總線仲裁機構(gòu)合理地控制和管理系統(tǒng)中需要占用總線的申請者,在多個申請者同時提出總線請求時,以一定的優(yōu)先算法仲裁哪個應(yīng)獲得對總線的使用權(quán)。只有獲得了總線控制權(quán)的設(shè)備,才能開始傳送數(shù)據(jù)。

 

 

02、CAN總線仲裁機制

報文的優(yōu)先級,是通過對 ID 的仲裁來確定的。CAN總線上有兩種電平狀態(tài),如果總線上同時出現(xiàn)顯性電平和隱性電平,總線的狀態(tài)會被置為顯性電平,CAN正是利用這個特性進行仲裁。

對于CAN來說,0為顯性,1為隱性。所以當(dāng)對不同的ID號來進行仲裁時,ID號越小,優(yōu)先級越高。對于標(biāo)準(zhǔn)數(shù)據(jù)幀和擴展數(shù)據(jù)幀的仲裁,如下圖黃色所示,標(biāo)準(zhǔn)幀中的RTR為0,SRR中為1,所以標(biāo)準(zhǔn)幀的優(yōu)先級更高。

 

 

當(dāng)總線空閑時,有多個節(jié)點同時需要發(fā)送報文,那么每個節(jié)點的發(fā)送器將會對發(fā)送位的電平和被監(jiān)控的總線電平做比較。

如果電平相同,那么該節(jié)點可以繼續(xù)發(fā)送;如果發(fā)送的為一“隱性”電平(1),但是監(jiān)控到一“顯性”電平(0),那么該節(jié)點失去仲裁,必須退出發(fā)送狀態(tài),只到下一次總線空閑的時候在參與總線的仲裁競爭。

 

 

 

03、關(guān)于CAN總線仲裁的疑問

1)什么時候出現(xiàn)CAN仲裁?

當(dāng)總線上的節(jié)點監(jiān)聽到總線空閑時,此時2個及以上的節(jié)點同時向總線上發(fā)送數(shù)據(jù),此時會觸發(fā)CAN總線仲裁機制,來避免數(shù)據(jù)發(fā)送錯誤。

2)那么總線仲裁丟失的節(jié)點,失去總線控制權(quán)后,立即轉(zhuǎn)為接收么?

根據(jù)標(biāo)示符判斷幀的優(yōu)先級,優(yōu)先級高的繼續(xù)發(fā)送,低的退回,等待高優(yōu)先級幀發(fā)送完成,總線空閑后再進行發(fā)送。

需要注意的是在整個過程中兩個節(jié)點都在監(jiān)聽總線,也就是說接收是不受發(fā)送狀態(tài)限制的,也就沒有轉(zhuǎn)為接收這一說,所以也就不會出現(xiàn)數(shù)據(jù)不完整的幀,所以仲裁期間發(fā)送的位也是可以接收的。

(3)如何減少仲裁事件的發(fā)生?

CAN總線中的節(jié)點在仲裁失敗、發(fā)送失敗或者請求發(fā)送時總線被其他節(jié)點占用,一般會在下一次空閑到來時請求發(fā)送。總線負載率越高,遇到上面的情況概率也就越大,因此仲裁事件的發(fā)生常出現(xiàn)在高負載率的總線環(huán)境下。如果可以控制總線負載率在合理范圍內(nèi),可以大大減少仲裁事件的發(fā)生。

CAN總線采用載波監(jiān)測,CSMACA的通信模式。這種總線仲裁方式允許總線上的任何一個設(shè)各都有機會取得總線的控制權(quán)并向外發(fā)送數(shù)據(jù)。如果在同一時刻有2個或2個以上的設(shè)各要求發(fā)送數(shù)據(jù),就會產(chǎn)生總線沖突,CAN總線能夠?qū)崟r地檢測這些沖突并對其進行仲裁,從而使具有高優(yōu)先級的數(shù)據(jù)不受任何損壞地傳輸。

相關(guān)產(chǎn)品 >

  • OKT507-C 開發(fā)板

    CPU: T507 工業(yè)級處理器,超低功耗,10年+生命周期|推薦全志工業(yè)級T507開發(fā)板系列,飛凌OKT507-C開發(fā)板采用全志T507 四核工業(yè)級處理器 T507設(shè)計開發(fā),Cortex-A53架構(gòu),工業(yè)級寬溫,性能強,低功耗,是一款高性價比的工業(yè)級產(chǎn)品,提供豐富的開發(fā)設(shè)計資料,提供產(chǎn)品規(guī)格書,軟硬件手冊等,全志的T507適用于車載電子、電力、醫(yī)療、工業(yè)控制、物聯(lián)網(wǎng)、智能終端等領(lǐng)域。

    了解詳情
    OKT507-C 開發(fā)板
  • OKMX6ULL-C開發(fā)板

    40*29mm,雙網(wǎng)雙CAN,8路串口| i.MX6ULL開發(fā)板是基于NXP i.MX6ULL設(shè)計開發(fā)的的一款Linux開發(fā)板 ,主頻800MHz,體積小,其核心板僅40*29mm,采用板對板連接器,適應(yīng)場景豐富。 了解詳情
    OKMX6ULL-C開發(fā)板

推薦閱讀 換一批 換一批