1. CAN總線是啥
總線是啥?
總線分類的方式有很多,如被分為外部和內部總線、系統總線和非系統總線等等,不管是啥看英文叫作“BUS”,即“公交車”,也就是說總線就行公交一樣。你只要在公交的運行線路上,就可以上車,上車點就是公交站點,同樣的總線接好了,加入一個節點(設備),節點接可以把數據放到總線上,傳到其他節點。
CAN是控制器局域網絡(Controller Area Network, CAN)的簡稱,是由以研發和生產汽車電子產品著稱的德國BOSCH公司開發的,并最終成為國際標準(ISO 11898),是國際上應用最廣泛的現場總線之一。 在北美和西歐,CAN總線協議已經成為汽車計算機控制系統和嵌入式工業控制局域網的標準總線,并且擁有以CAN為底層協議專為大型貨車和重工機械車輛設計的J1939協議。
中文名:CAN總線
外文名 :Controller Area Network
開發公司 :德國BOSCH公司
特 點: 國際上應用最廣泛的現場總線之一
地 區 :北美和西歐
應用范圍:汽車計算機控制系統和嵌入式工業控制局域網
CAN總線是廣播類型的總線。這意味著所有節點都可以偵聽到所有傳輸的報文。無法將報文單獨發送給指定節點;所有節點都將始終捕獲所有報文。但是CAN硬件能夠提供本地過濾功能,讓每個節點對報文有選擇性地做出響應。
上世紀八十年代以來,汽車ECU越來越多,如ABS,電控門窗,電子燃油噴射裝置。如果仍然采用常規的點對點布線方式,即電線一段與開關相接,另一端與用電設備相通,將會導致車上電線數目的急劇增加,從而帶來線束的冗余及維修成本的提高。這就對汽車的線束分布及信息通訊提出了更高的要求。總線技術可以實現信息的實時共享,解決了傳統布線方式中線束多,布線難,成本高等問題,CAN(Controller Area Network)總線技術應運而生。
2. CAN總線簡介
CAN總線是由德國研發和生產汽車電子產品著稱的BOSCH公司開發的,并最終成為國際標準(ISO11519),是國際上應用最廣泛的現場總線之一。CAN總線是一種多主控(Multi-Master)的總線系統。傳統總線系統如USB或以太網等是在總線控制器的協調下,實現從A節點到B節點大量數據的傳輸。CAN網絡的消息是廣播式的,即在同一時刻網絡上所有節點偵測的數據是一致的,它是一種基于消息廣播模式的串行通信總線。
CAN總線的很多優點,使得它得到了廣泛的應用,如傳輸速度最高到1Mbps, 通信距離最遠到10km,無損位仲裁機制,多主結構。
2.1 CAN總線標準
CAN總線標準之規定了物理層和數據鏈路層,至于應用層需要用戶自定義。不同的CAN標準僅物理層不同。物理層和數據鏈路層:ISO11898;應用層:不同的應用領域使用不同的應用層標準。
2.2 CAN物理層
CAN拓撲網絡
連接在CAN總線上的設備叫做節點設備(CAN Node),CAN網絡的拓撲一般為線型。線束最常用的是雙絞線,線上傳輸為對稱的差分電平信號。下圖為CAN總線網絡示意圖,節點主要包括Host、控制器和收發器。Host常集成有CAN控制器,CAN控制器負責處理協議相關功能,以減輕Host的負擔。CAN收發器將控制器連接到傳輸媒介。通?刂破骱涂偩收發器通過光耦或磁耦隔離,這樣即使總線上過壓損壞收發器,控制器和Host設備也可以得到保護。
在發送數據時,CAN控制器把要發送的二進制編碼通過CAN_Tx線發送到CAN收發器,然后由收發器把這個普通的邏輯電平信號轉化成差分信號,通過差分線CAN_High和CAN_Low輸出到CAN總線網絡。接收數據過程,相反。采用差分信號,可以取得更好的電磁兼容效果。因此,CAN總線物理傳輸媒介只需要兩根線。
高速CAN總線最高信號傳輸速率為1Mbps,支持最長距離40m。ISO11898-2要求在高速CAN總線兩段安裝端接電阻RL(端接電阻一般為120Ω,因為電纜的特性阻抗為120 Ω,為了模擬無限遠的傳輸線。)以消除反射。低速CAN最高速度只有125Kbps,所以ISO11898-3沒有端接要求。
因為傳輸距離越大,信號時延也越大,為了保證消息的正確采樣,總線上的信號速率相應也要下降。下圖是推薦的信號速率與距離的關系。
2.3 CAN收發器
CAN總線分高速CAN和低速CAN,收發器也分為高速CAN收發器(1Mbps)和低速CAN收發器(125Kbps)。低速CAN也叫Fault
Tolerance CAN,指的是即使總線上一根線失效,總線依然可以通信。如同串口中的MAX3232用作電平轉換,CAN收發器的作用則是把邏輯信號轉換為差分信號。
2.4 差分信號
CAN總線采用差分信號傳輸,通常情況下只需要兩根信號線就可以進行正常的通信。在差分信號中,邏輯0和邏輯1是用兩根差分信號線的電壓差來表示。當處于邏輯1,CAN_High和CAN_Low的電壓差小于0.5V時,稱為隱性電平(Recessive);當處于邏輯0,CAN_High和CAN_Low的電壓差大于0.9V,稱為顯性電平(Dominant)。
高速CAN
低速容錯CAN (Fault Tolerance CAN)
差分信號其實使用CAN_HIGH減去CAN_LOW的到的,在邏輯信號中,5V代表1, 0V代表0,而在差分信號中:
- 0V---------邏輯1------隱形電平
- 2.0V-------邏輯0-----顯性電平
顯性電平比隱形電平優先級要高。
CAN總線遵從“線與”機制:“顯性”位可以覆 蓋“隱性”位;只有所有節點都發 送“隱性”位, 總線才處于“隱性” 狀態。這種“線與”機制使CAN總線呈現顯性優先的特性。
2.5 CAN總線連接器
一般嵌入式中,處理器MCU的CAN接口出來的是CAN TXD和CAN RXD,一手一發,但是實際接到CAN網絡中還需要收發器,收發器輸出的就是差分信號了CANH和CANL,如下圖所示。