CAN總線定義:
CAN(Control Area Network)屬于現(xiàn)場總線的范疇,是一種高性能、高可靠性、易于開發(fā)和低成本的串行總線。
CAN是由德國Bosch公司在1986年為汽車監(jiān)測和控制而設(shè)計(jì)的。由于其高性能、高可靠性、實(shí)時(shí)性等優(yōu)點(diǎn),隨后也廣泛用于工業(yè)自動(dòng)化、多種控制設(shè)備、交通工具、醫(yī)療儀器以及建筑、環(huán)境控制等多種領(lǐng)域,其在每個(gè)領(lǐng)域的廣泛使用促進(jìn)了標(biāo)準(zhǔn)化的進(jìn)程。
1991年9月PHILIPS SEMICONDUCTORS制訂并發(fā)布了CAN技術(shù)規(guī)范V2.0,該技術(shù)規(guī)范包括A和B兩部分。2.0A曾在CAN技術(shù)規(guī)范1.2中定義的CAN報(bào)文格式,提供11位地址;而2.0B給出了標(biāo)準(zhǔn)和擴(kuò)展的兩種報(bào)文格式,提供29位地址。此后ISO在1993年11月也正式發(fā)布了CAN的國際標(biāo)準(zhǔn)ISO11898。其中ISO11898-1定義了CAN數(shù)據(jù)鏈路層;ISO11898-2定義了非容錯(cuò)CAN物理層;ISO11898-3定義了11898-3的容錯(cuò)物理層。CAN總線協(xié)議只定義了物理層和數(shù)據(jù)鏈路層,要將CAN總線應(yīng)用于實(shí)際的工程項(xiàng)目和產(chǎn)品開發(fā)中必須制定上層應(yīng)用協(xié)議。目前汽車上應(yīng)用的協(xié)議有:ISO15675(傳輸層協(xié)議)、ISO14229(應(yīng)用層協(xié)議)等。
CAN總線的特點(diǎn)
1、 多主控制方式。在總線空閑時(shí),所有單元都可往總線上發(fā)送消息(多主控制)。最先訪問總線的單元可獲得發(fā)送權(quán)(采用CSMA/CA方式)。當(dāng)多個(gè)單元同時(shí)發(fā)送時(shí),CANID小的節(jié)點(diǎn)獲得發(fā)送權(quán)。
2、 非破壞性總線仲裁技術(shù)。當(dāng)總線發(fā)生沖突時(shí),高優(yōu)先級報(bào)文可以不受影響的進(jìn)行傳輸,保證高優(yōu)先級的實(shí)時(shí)性要求;而低優(yōu)先級的報(bào)文退出傳輸。
3、 高可靠性。每幀都有位填充,CRC校驗(yàn)等多種錯(cuò)誤檢測,保證了極低的錯(cuò)誤率;發(fā)送期間丟失仲裁或者由于錯(cuò)誤而破壞了的數(shù)據(jù)幀可自動(dòng)重發(fā)(這一點(diǎn)由CAN控制器自己重發(fā),無需人為重新裝載發(fā)送數(shù)據(jù))。
4、 自動(dòng)關(guān)閉總線。CAN控制器可以檢測和判斷總線上的錯(cuò)誤類型,是短暫的數(shù)據(jù)錯(cuò)誤(如外部噪聲),還是持續(xù)數(shù)據(jù)錯(cuò)誤(如單元內(nèi)部故障、驅(qū)動(dòng)器故障、短路故障等)。當(dāng)錯(cuò)誤為持續(xù)性故障時(shí),CAN控制器可自動(dòng)關(guān)閉,脫離總線,以免影響總線上的其他節(jié)點(diǎn)正常通信。
CAN總線拓?fù)鋱D
CAN控制器根據(jù)兩根線上的電位差來判斷總線電平??偩€電平分為顯性和隱性電平,二者必居其一。發(fā)送方通過使總線電平變化,將消息發(fā)送給接收方。下圖1是一個(gè)CAN總線連接示意圖。
下圖1由兩個(gè)CAN網(wǎng)絡(luò)組成,其中一個(gè)網(wǎng)絡(luò)通信速率為500K,另外一個(gè)為125K。每個(gè)CAN網(wǎng)絡(luò)由CANH和CANL兩根線組成,各個(gè)節(jié)點(diǎn)(ABS、SAS、ETM、ECM)分別連接在CANH和CAHL上。在每個(gè)CAN網(wǎng)絡(luò)的頭尾分別連接了兩個(gè)終端電阻,終端電阻的大小為120歐姆。
下圖1左邊陰影部分是某個(gè)節(jié)點(diǎn)的內(nèi)部電路模塊,包含CPU、CAN控制器(CAN Controller,一般單片機(jī)都集成了CAN控制器模塊)以及CAN收發(fā)器(CAN transceiver)。其中CPU負(fù)責(zé)將需要發(fā)送的數(shù)據(jù)傳遞給CAN控制器,以及接收從CAN控制器中解析的數(shù)據(jù);CAN控制器將Rx腳的二進(jìn)制的0/1轉(zhuǎn)換為具體的報(bào)文,然后將報(bào)文傳遞給CPU,以及將CPU需要發(fā)送的報(bào)文轉(zhuǎn)換為二進(jìn)制0/1,然后通過Tx腳傳遞給CAN收發(fā)器。CAN控制器的主要功能是電平轉(zhuǎn)換,將CANH和CANL上的電平轉(zhuǎn)換為Rx腳上的0/1,將Tx腳上的0/1在CANH和CANL進(jìn)行轉(zhuǎn)換。
圖1
信號電平
高速CAN,定義 當(dāng)CANH 和 CANL 電壓相同(CANH = CANL = 2.5V)時(shí)為邏輯“1”,CANH和CANL 電壓相差 2V(CANH = 3.5V, CANL = 1.5V) 時(shí)為邏輯“0”。高速CAN收發(fā)器在共模電壓范圍內(nèi)(-12V ~ 12V),將CANH和CANL電壓相差大于 0.9V 解釋為顯性狀態(tài)(Dominant),而將CANH和CANL電壓相差小于 0.5V 解釋為為隱性狀態(tài)(Recessive)。
CAN總線采用不歸零碼位填充技術(shù),也就是說CAN總線上的信號有兩種不同的信號狀態(tài),分別是顯性的(Dominant)邏輯0和隱形的(recessive)邏輯1,信號每一次傳輸完后不需要返回到邏輯0(顯性)的電平。
CAN信號傳輸
圖2 a
發(fā)送過程: CAN控制器將CPU傳來的報(bào)文轉(zhuǎn)換為邏輯電平(即邏輯0-顯性電平或者邏輯1-隱性電平)通過Tx腳傳遞給CAN收發(fā)器。CAN收發(fā)器接收邏輯電平之后,再將其轉(zhuǎn)換為差分電平輸出到CAN總線上。
圖2 b
接收過程: CAN收發(fā)器將CAN_H 和 CAN_L 線上傳來的差分電平轉(zhuǎn)換為邏輯電平輸出到CAN控制器的Rx腳,CAN控制器再把該邏輯電平轉(zhuǎn)化為相應(yīng)報(bào)文發(fā)送到CPU上。
圖2 c
責(zé)任編輯人:CC
評論
查看更多