CAN總線是一種高性能、高可靠性的串行通訊協(xié)議總線,主要用于實(shí)時(shí)應(yīng)用的場(chǎng)合,如汽車中的各種不同元件之間的通信。CAN總線采用雙絞線來傳輸信號(hào),具有高性能、高可靠性、實(shí)時(shí)性等優(yōu)點(diǎn)。同時(shí),CAN總線具有完整性的串行數(shù)據(jù)通訊、提供實(shí)時(shí)支持、傳輸速率高達(dá)1Mb/s、11位的尋址以及檢錯(cuò)能力等特點(diǎn)。在汽車行業(yè)中,CAN總線已經(jīng)成為國際上應(yīng)用最廣泛的現(xiàn)場(chǎng)總線之一,廣泛應(yīng)用于汽車和其他自動(dòng)化領(lǐng)域中。
CAN總線的工作原理基于廣播方式,通過標(biāo)識(shí)符來識(shí)別數(shù)據(jù)是否發(fā)送給自己的,并使用差分信號(hào)傳輸來保證可靠性和實(shí)時(shí)性。
CAN總線數(shù)據(jù)傳輸原理,從一個(gè)節(jié)點(diǎn)向其他節(jié)點(diǎn)發(fā)送數(shù)據(jù)。當(dāng)一個(gè)節(jié)點(diǎn)發(fā)送數(shù)據(jù)時(shí),該節(jié)點(diǎn)的CPU將將要發(fā)送的數(shù)據(jù)和標(biāo)識(shí)符發(fā)送給本節(jié)點(diǎn)的CAN芯片,并使其進(jìn)入準(zhǔn)備狀態(tài)。一旦該CAN芯片收到總線分配,就變?yōu)榘l(fā)送報(bào)文狀態(tài),該CAN芯片將要發(fā)送的數(shù)據(jù)組成規(guī)定的報(bào)文格式發(fā)出。此時(shí),網(wǎng)絡(luò)中的其他節(jié)點(diǎn)都處于接收狀態(tài),所有節(jié)點(diǎn)都要先對(duì)其進(jìn)行接收,通過檢測(cè)來判斷該報(bào)文是否是發(fā)給自己的。(CAN總線通信實(shí)現(xiàn)CAN報(bào)文帶ID標(biāo)識(shí)教程)
CAN總線使用差分信號(hào)傳輸,通過在CANH和CANL上傳輸差分信號(hào)來表示數(shù)字信號(hào)。差分信號(hào)傳輸方式具有抗干擾能力強(qiáng)和可靠性高的優(yōu)點(diǎn)(如何提高CAN總線抗干擾能力?)。在同一系統(tǒng)中標(biāo)識(shí)符是唯一的,不可能有兩個(gè)站發(fā)送具有相同標(biāo)識(shí)符的報(bào)文。當(dāng)幾個(gè)站同時(shí)競(jìng)爭總線讀取時(shí),這種配置十分重要。當(dāng)一個(gè)站要向其他站發(fā)送數(shù)據(jù)時(shí),該站的CPU將要發(fā)送的數(shù)據(jù)和自己的標(biāo)識(shí)符傳送給本站的CAN芯片,并處于準(zhǔn)備狀態(tài);當(dāng)它收到總線分配時(shí),轉(zhuǎn)為發(fā)送報(bào)文狀態(tài)。CAN芯片將數(shù)據(jù)根據(jù)協(xié)議組織成一定的報(bào)文格式發(fā)出,這時(shí)網(wǎng)上的其他站處于接收狀態(tài)。一張圖看懂CAN總線的原理:
根據(jù)圖1中簡單來說CAN總線就如兩根黃線,通信的原理就好比開一個(gè)電話會(huì)議,大家都同時(shí)撥進(jìn)來,然后有各種不同的狀態(tài),比如:一個(gè)人說話,其他人聽;或者多個(gè)人同時(shí)想發(fā)言,但也會(huì)讓其中一個(gè)人先說,其他人聽;還有一個(gè)人要求另一個(gè)人來說;還有些掉線了,卡頓了等等。
為了確保每次電話會(huì)議針對(duì)上述情況正確有效地進(jìn)行,我們需要一些每個(gè)人都應(yīng)該遵守的規(guī)則或協(xié)議。CAN總線通信與這種電話會(huì)議形式既有相似之處,也有不同之處。那究竟什么是CAN總線通信?
CAN總線是一種用于不同控制單元之間數(shù)據(jù)傳輸?shù)膶?dǎo)線。CAN總線協(xié)議是ISO國際標(biāo)準(zhǔn)化的串行通信協(xié)議,由兩個(gè)系列組成:ISO-11898和ISO-11519。其定義有:
·ISO-11898定義了通信速率為125 kbps ~1Mbps 的高速CAN通信標(biāo)準(zhǔn),屬于閉環(huán)總線,傳輸速率可達(dá)1Mbps,總線長度 ≤ 40米,如圖2。
·ISO11519定義了通信速率為10~125 kbps 的低速CAN通信標(biāo)準(zhǔn),屬于開環(huán)總線,傳輸速率為40kbps時(shí),總線長度可達(dá)1000米,如圖2。
圖2
CAN總線會(huì)有終端電阻,一般來說都是120歐姆,實(shí)際上在設(shè)計(jì)的時(shí)候,也是兩個(gè)60歐姆的電阻串起來的,而總線上一般有兩個(gè)120歐姆的節(jié)點(diǎn)。CAN總線終端電阻的作用有三個(gè):
1、提高干擾防護(hù)能力,快速消除高頻低能量信號(hào);
2、確??偩€快速進(jìn)入隱藏狀態(tài),這樣寄生電容器的能量可以更快地耗散;
3、通過將它們放置在總線兩端以減少反射能量來提高信號(hào)質(zhì)量。
圖3
在學(xué)習(xí)CAN總線時(shí),經(jīng)常會(huì)看到CAN總線的電平分為顯性電平與隱性電平,那么什么是顯性的和隱性的呢?顯式和隱式邏輯0與邏輯1之間的對(duì)應(yīng)關(guān)系是什么?CAN通信邏輯0和1,顯式和隱式。
電信號(hào)的傳輸是通過區(qū)分高電壓和低電壓來進(jìn)行的,就像CAN通信一樣。CAN總線的兩條信號(hào)線是CAN高(CAN_H)和CAN低(CAN_L)。關(guān)于CAN的邏輯0和邏輯1以及CAN總線的顯式和隱式方面,編制了以下圖表,以使每個(gè)人都能清楚地理解。
如下圖4 所示:
圖4
注 1:在實(shí)際開發(fā)中,兩條線路的電壓都以默認(rèn)值波動(dòng),這也是使用差動(dòng)傳輸減少誤差和噪聲干擾的優(yōu)點(diǎn);
注 2:CAN總線采用“線路和”規(guī)則進(jìn)行總線套利,即如果同時(shí)發(fā)送多個(gè)CAN信號(hào),有些發(fā)送1,有些發(fā)送0,只要有0,則當(dāng)前總線為0(1&0=0)。因此,總線上的顯式平面由邏輯“0”表示,而隱式平面則由邏輯“1”表示;
雖然差分信號(hào)有較好的抗干擾能力,但是長距離信號(hào)傳輸時(shí),我們通常會(huì)采用雙絞線進(jìn)行數(shù)據(jù)傳輸,以此來從物理上減弱噪聲對(duì)信號(hào)傳輸過程中的耦合。
圖5 消除電容耦合
圖6 消除電感耦合
圖7 消除對(duì)外界的干擾
上述的電位差(差分電平)與邏輯電平是通過CAN收發(fā)器實(shí)現(xiàn)的。在傳輸過程中,CAN控制器將CPU傳輸?shù)男盘?hào)轉(zhuǎn)換為邏輯電平。CAN收發(fā)器接收到邏輯電平后,將其轉(zhuǎn)換為差分電平并輸出到CAN總線。
圖9 CAN信號(hào)發(fā)送
在接收過程中,CAN收發(fā)器發(fā)送CAN_H和CAN_L線路上傳輸?shù)牟铍娖奖晦D(zhuǎn)換為邏輯電平并輸出到CAN控制器,然后CAN控制器將邏輯電平轉(zhuǎn)換為相應(yīng)的信號(hào)并發(fā)送到CPU。
圖10 CAN信號(hào)接收
簡單地說,這意味著變送器通過CAN收發(fā)器改變總線電平,并將其信息傳輸?shù)?/span>CAN總線。接收器通過監(jiān)測(cè)總線電平將總線上的信息讀取到自己的CAN收發(fā)器中。
如上所示,CAN總線有兩種架構(gòu),兩種形式的CAN信號(hào),以及發(fā)送和接收CAN信號(hào)的兩個(gè)過程。
CAN總線的拓?fù)浣Y(jié)構(gòu)包括CAN總線、CAN收發(fā)器和設(shè)備節(jié)點(diǎn)。其中,用來傳輸CAN總線信號(hào)的媒介叫做CAN總線,由CAN_H和CAN_L兩根線組成;連接CAN總線和設(shè)備節(jié)點(diǎn),用來轉(zhuǎn)換邏輯電平和物理信號(hào)的單元電路叫做CAN收發(fā)器;通過CAN收發(fā)器連接在總線上的設(shè)備叫做設(shè)備節(jié)點(diǎn)。此外,不同的CAN標(biāo)準(zhǔn)僅物理層不同,傳輸介質(zhì)和傳輸速率也有所不同。
今天的分享就到這里啦,EBYTE每一天都致力于更好的助力物聯(lián)化、智能化、自動(dòng)化的發(fā)展,提升資源利用率,更多產(chǎn)品更多資料,感興趣的小伙伴可以登錄我們的億佰特官網(wǎng)和企業(yè)公眾號(hào)(微信號(hào):cdebyte)進(jìn)行了解,也可以直接撥打400電話咨詢技術(shù)專員!