CAN總線設計詳解
汽車CAN總線的技術背景來源于工業(yè)現場總線和計算機局域網這樣非常成熟的技術,因此具有很高的可靠性,抗干擾性。
本文引用地址:http://2s4d.com/article/201612/330845.htmCAN總線的特點
CAN作為一種多主總線,支持分布式實時控制的通訊網絡。其通訊介質可以是雙絞線、同軸電纜或光纖。在汽車發(fā)動機控制部件、傳感器、抗滑系統(tǒng)等應用中,總線的位速率最大可達1Mbit/s。CAN總線屬于總線式串行通訊網絡,由于其采用了許多新技術及獨特的設計,與一般的通訊總線相比,CAN總線的數據通訊具有突出的可靠性、實時性和靈活性。其特點可以概括如下:
1) CAN為多主方式工作,網絡上任一節(jié)點均可在任意時刻主動地向網絡上其他節(jié)點發(fā)送信息,而不分主從,通信方式靈活,且無需站地址等節(jié)點信息。利用這一點可方便地構成多機備份系統(tǒng)。
2) CAN網絡上的節(jié)點信息分成不同的優(yōu)先級,可滿足不同的實時要求,高優(yōu)先級的數據最多可在134us內得到傳輸。
3) CAN采用非破壞性總線性仲裁技術,當多個節(jié)點同時向總線發(fā)送信息時,優(yōu)先級較低的節(jié)點會主動地退出發(fā)送,而最高優(yōu)先級的節(jié)點可不受影響地繼續(xù)傳輸數據,從而大大節(jié)省了總線沖突仲裁時間。尤其是在網絡負載很重的情況下也不會出現網絡癱瘓情況(以太網則可能)。
4) CAN只需通過幀濾波即可實現點對點、一點對多點及全局廣播等幾種方式傳送接受數據,無需專門的“調度”。
5) CAN采用NRZ編碼,直接通信距離最遠可達10km(速率5kbps);通信速率最高可達1Mbps(此時通信距離最長為40m)。
6) CAN上的節(jié)點數主要取決于總線驅動電路,目前可達110個;標示符可達2032種(CAN2.0A),而擴展標準(CAN2.0B)的標示符幾乎不受限制。
7) 采用短幀結構,傳輸時間短,受干擾概率低,具有極好的檢錯效果。
8) CAN的每幀信息都有CRC效驗及其他檢錯措施,保證數據出錯率極低。
9) CAN的通信介質可為雙鉸線、同軸電纜或光纖,選擇靈活。
10) CAN節(jié)點在錯誤嚴重的情況下具有自動關閉輸出功能,以使總線上其他節(jié)點的操作不受影響。
CAN總線技術的優(yōu)點
國內汽車品牌中已經有幾款車型應用了總線技術,這些技術完全來自國外。目前應用總線的國產車中大多采用兩套獨立的CAN總線:一套是動力CAN數據傳輸系統(tǒng),另一套是舒適CAN數據傳輸系統(tǒng)。
使用CAN總線后,對其優(yōu)點進行了總結,得出以下結論:
1) 如果數據擴展以增加新的信息,只需升級軟件即可。
2) 控制單元對所傳輸的信息進行實時檢測,檢測到故障后存儲故障碼。
3) 使用小型控制單元及小型控制單元插孔可節(jié)省空間。
4) 使傳感器信號線減至最少,控制單元可做到高速數據傳輸。
5) CAN總線符合國際標準,因此可應用不同型號控制單元間的數據傳輸。
汽車CAN總線的節(jié)點設計
1 CAN節(jié)點ECU的設計(硬件)
汽車節(jié)點ECU的開發(fā)可以選擇帶有在片CAN的微控制器,也可以選擇其它微控制器和相應的片外CAN控制器、收發(fā)器。本文以后者為例說明ECU的開發(fā)。
帶有CAN接口的ECU設計是總線開發(fā)的核心與關鍵,其中ECU的CAN總線模塊有幾個功能單元構成――CAN控制器和CAN收發(fā)器。CAN控制器執(zhí)行完整的CAN協(xié)議,完成通訊功能,包括信息緩沖和接收濾波。CAN控制器與物理總線之間需要一個接口――CAN收發(fā)器,它實現CAN控制器與總線之間邏輯電平信號的轉換。CAN控制器和收發(fā)器完成CAN物理層和邏輯電路層的所有功能。應用層的功能則由軟件來實現。
各節(jié)點的ECU主要由MCU、DSP、CAN控制器SJA1000、CAN收發(fā)器PCA2C250和其它外圍器件構成。圖5給出一個由51單片機開發(fā)CAN節(jié)點的原理圖(圖中省略了SJA1000與PCA2C250之間的光耦等細節(jié)),完全可以說明帶CAN接口ECU設計的原理。
2 CAN網絡通訊的實現(軟件)
CAN設計的三層結構模型為:物理層、數據鏈路層和應用層。物理層和數據鏈路層的功能由CAN接口器件完成,包括硬件電路和通訊協(xié)議兩部分。CAN通訊協(xié)議規(guī)定了四種不同用處的網絡通訊幀,即數據幀、遠程幀、錯誤指示幀和超載幀。CAN通訊協(xié)議的實現,包括各種通訊幀的組織和發(fā)送,均是由集成在SJA1000通訊控制器中的電路實現的,因此系統(tǒng)的開發(fā)主要在應用層的設計上。應用層軟件的核心部分是CPU與SJA1000通訊控制器之間的數據接收和發(fā)送程序,即CPU把待發(fā)的數據發(fā)給SJA1000通訊控制器,再由SJA1000通訊控制器發(fā)到總線上;當SJA1000通訊控制器從總線接受到數據后,CPU再把數據取走。對于單片機而言,操作SJA1000就象訪問外部RAM一樣簡單。首先,應對SJA1000中的有關控制寄存器寫入控制字,進行初始化。之后,CPU即可通過SJA1000接收/發(fā)送緩沖區(qū)向物理總線接收和發(fā)送數據。
評論