天天看點

can總線仲裁問題

首先,你要明确一個概念,CAN總線上的節點都是自顧自的發送封包,搶奪總線資源的;然後,一個CAN節點在發送封包的同時也在接收總線上的資訊,每個封包都是從ID先開始發送,并且通過ID判斷優先級(顯性覆寫隐性),當它發現接收到的資料(ID)與它發送的不一緻時就退出發送,等待一會;再然後,為什麼資料(ID)不一緻就退出呢,因為隻有優先級比它高的封包才能覆寫它的ID場,最後,回答你第一個問題,幾個封包在搶,優先級最高的就搶到了總線,其實它并不知道有人跟它搶(因為它優先級高),她認為總線對它來說是空閑的。      
在CAN總線上,若同一個時刻,既有節點向總線上發送隐形電平(1),也有節點發送顯性電平(0),那麼此時總線上表現出來的為顯性(0)。  當總線空閑時,有多個節點同時需要發送封包,那麼每個節點的發送器将會對發送位的電平和被監控的總線電平做比較,如果電平相同,那麼該節點可以繼續發送,如果發送的為一“隐性”電平(1),但是監控到一“顯性”電平(0),那麼該節點失去仲裁,必須退出發送狀态,隻到下一次總線空閑的時候在參與總線的仲裁競争。
 由以上也可以看出,當有多個節點同時争奪總線的控制權,ID最小的那個節點将會勝出,是以在CAN總線上,節點的ID越小,優先級越高。      
CAN

繼續閱讀