初學CAN總線

初學CAN總線,之前用的是RS485485中沒有總線仲裁的概念,如果總線上有十個節點,要事先算好每組數據的發送用時,調好時間延遲,逐個排隊發送。而CAN總線可以把多個節點的數據都送到本站的CAN芯片,並處於準備狀態,等待總線空閒時,向總線發送數據,由總線仲裁哪一個節點優先發送。

如果多節點同時向總線發送數據,那麼總線怎麼做到保留其中的一個節點,退回其它節點的呢?要明白總線是如何仲裁的,首先要了解什麼是顯性,什麼是隱性。

CAN是用CANHCANL組成的差分信號傳送電平。CANH > CANL 邏輯0 稱爲顯性,CANH = CANL 邏輯1 稱爲隱形。顯性與隱形同時寫入總線,總線顯示顯性,這就是CAN網絡衝突檢測的基礎!

每個節點的發送器將會對發送位的電平和被監控的總線電平做比較,如果電平相同,那麼該節點可以繼續發送,如果發送的爲隱性電平,但是監控到顯性電平,那麼該節點失去仲裁,必須退出發送狀態,只到下一次總線空閒的時候在參與總線的仲裁競爭,每次比較,保留顯性,退回隱性,直到剩下一個節點。換句話說,多個節點競爭總線,誰在最後多一個關鍵性的顯性,誰就將勝出,贏得總線的控制權。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章