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