首先來看看CAN是怎么產生的:簡單理解,CAN就是一種“擁有特別連接方式”的數據傳輸的總線,其有特定的一些規則。
(注:資料及圖片來源于知乎博主TOMOCAT。)
CAN總線的結構
查閱參考文獻,OSI標準主要將CAN總線分為物理層、數據鏈路層、應用層(有客戶自己設定),(下圖中的表示層、傳輸層等等在我看來就是在數據處理中設計到的范疇,主要部分還是上述三層),而應用層由客戶自己設定,那么有標準的就只能是物理層和數據鏈層,以下主要講解這兩個部分。
CAN的物理層
CAN總線分為高速CAN和低速CAN,顧名思義,
- 高速CAN傳輸速度快但距離短
- 低速CAN傳輸速度慢但距離遠。
- 高速CAN閉環
- 低俗CAN開環
在此我們主要學習高速CAN。
高速CAN的拓撲結構(硬件電路)
首先,CAN總線是將信號轉換為差分信號進行傳輸。
高速CAN的硬件電路圖如上所示,可以看到:
????? 設備即傳輸數據的電子控制單元,其將數據通過TX和RX線傳輸給CAN收發器
? CAN收發器通過電平轉換、輸出驅動、輸入采樣等操作將收到的數據傳到CAN_H和CAN_L
? CAN_H和CAN_L將傳輸數據轉為差分信號進行傳輸
其次,CAN總線其實就是CAN_H和CAN_L組成兩根閉環線,且CAN_H和CAN_L兩端添加120Ω的終端電阻,終端電阻的作用:
(1)防止回波反射(不太懂)
(2)當無設備工作時,使高速CAN默認為收緊狀態,兩線電壓差為0。與后續CAN總線電平的設置相關(也不太懂嗶哩嗶哩上說的收緊拉開)
CAN電平標準
看高速CAN,CAN_H和CAN_L所謂“收緊”時,即電壓差為0V(或-0.5V到0.05V),表示1;CAN_H和CAN_L所謂“拉開”時,即電壓差為2V(或1.5V~3V,有一個誤差范圍,看設定),表示0。(低速CAN則類似這樣看)。
- 這里要注意,邏輯1被定義為隱形,邏輯0被定義為顯性,這與我們的使用習慣不太相同。
- 當顯性和隱性電平同時出現,表示為顯性電平,即0和1同時出現,表示0(0強于1)。
CAN收發器(不太懂,留個圖,后面來補上)
注:本文將開始進行CAN總線通信協議得學習,以下均是通過學習參考文獻、嗶哩嗶哩網站上江協科技官方號以及網絡資源所得的個人經驗,如有侵權,請聯系我,歡迎指正。