電子通信協(xié)議之CAN總線協(xié)議篇
來(lái)源: 網(wǎng)路素材
CAN總線在硬件系統(tǒng)中占有一席之地,是國(guó)際上應(yīng)用最廣泛的現(xiàn)場(chǎng)總線之一,與我們收藏過(guò)的SPI、UART不同,屬于“高端高效”系列。
嵌入式的工程師一般都知道CAN總線廣泛應(yīng)用到汽車(chē)中,其實(shí)船艦電子設(shè)備通信也廣泛使用CAN,像機(jī)器人、工業(yè)、自動(dòng)控制系統(tǒng)中,也都有廣泛的應(yīng)用。隨著國(guó)家對(duì)海防的越來(lái)越重視,對(duì)CAN的需求也會(huì)越來(lái)越大。
CAN(Controller Area Network)即控制器局域網(wǎng),是一種能夠?qū)崿F(xiàn)分布式實(shí)時(shí)控制的串行通信網(wǎng)絡(luò)。
想到CAN就要想到德國(guó)的?Bosch公司,因?yàn)镃AN就是這個(gè)公司和Intel于80年代末開(kāi)發(fā)的。??
CAN有很多優(yōu)秀的特點(diǎn),使得它能夠被廣泛的應(yīng)用。比如:傳輸速度最高到1Mbps,通信距離最遠(yuǎn)到10km,無(wú)損位仲裁機(jī)制,多主結(jié)構(gòu)。??
近些年來(lái),CAN控制器價(jià)格越來(lái)越低,很多MCU也集成了CAN控制器?,F(xiàn)在每一輛汽車(chē)上都裝有CAN總線。
一個(gè)典型的CAN應(yīng)用場(chǎng)景:

圖1. 一個(gè)典型的CAN應(yīng)用場(chǎng)景
CAN總線標(biāo)準(zhǔn)?只規(guī)定了物理層和數(shù)據(jù)鏈路層,需要用戶(hù)自定義應(yīng)用層。不同的CAN標(biāo)準(zhǔn)僅物理層不同。

圖2. CAN總線標(biāo)準(zhǔn)

圖3. CAN收發(fā)器的邏輯電平和物理信號(hào)轉(zhuǎn)換??



圖4-2. ISO11519-2低速CAN電平

圖5. CAN標(biāo)準(zhǔn)比對(duì)
*雙絞線共模消除干擾,是因?yàn)殡娖酵瑫r(shí)變化,電壓差不變。

圖6. CAN的三種接口器件

圖7. 通過(guò)切換開(kāi)關(guān)狀態(tài)輸出高低電平??
多個(gè)節(jié)點(diǎn)連接,只要有一個(gè)為低電平,總線就為低電平,只有所有節(jié)點(diǎn)輸出高電平時(shí),才為高電平。所謂"線與"??赏ㄟ^(guò)切換開(kāi)關(guān)狀態(tài)輸出高低電平,如圖7所示。??
CAN總線有5個(gè)連續(xù)相同位后,就插入一個(gè)相反位,產(chǎn)生跳變沿,用于同步。從而消除累積誤差。??
和485、232一樣, CAN的傳輸速度與距離成反比,如圖8所示。

圖8. CAN的傳輸速度與距離成反比??
CAN總線的 終端電阻的接法如下圖9所示:

圖9. 低速/高速?CAN-bus終端電阻接法
增加終端電阻的目的是為了增強(qiáng)CAN通訊的可靠性,消除CAN總線終端信號(hào)反射干擾。
(注: 一般如果CAN總線使用的是在雙絞線上運(yùn)行,這時(shí)我們會(huì)增加120Ω的電阻。?為什么是120Ω,因?yàn)殡娎|的特性阻抗為120Ω,為了模擬無(wú)限遠(yuǎn)的傳輸線。)
CAN總線傳輸?shù)氖荂AN幀,CAN的通信幀分成五種,分別為?數(shù)據(jù)幀、?遠(yuǎn)程幀、?錯(cuò)誤幀、?過(guò)載幀和?幀間隔。
數(shù)據(jù)幀用來(lái)節(jié)點(diǎn)之間收發(fā)數(shù)據(jù),是使用最多的幀類(lèi)型;?、
遠(yuǎn)程幀用來(lái)接收節(jié)點(diǎn)向發(fā)送節(jié)點(diǎn)接收數(shù)據(jù);?
錯(cuò)誤幀是某節(jié)點(diǎn)發(fā)現(xiàn)幀錯(cuò)誤時(shí)用來(lái)向其他節(jié)點(diǎn)通知的幀;?
過(guò)載幀是接收節(jié)點(diǎn)用來(lái)向發(fā)送節(jié)點(diǎn)告知自身接收能力的幀;?
幀間隔是用于將數(shù)據(jù)幀、遠(yuǎn)程幀與前面幀隔離的幀。
CAN的報(bào)文格式
在總線中傳送的報(bào)文,每幀由7部分組成。CAN協(xié)議支持兩種報(bào)文格式,其唯一的不同是?標(biāo)識(shí)符(ID)長(zhǎng)度不同,?標(biāo)準(zhǔn)格式為11位,擴(kuò)展格式為29位。
???????????????? ?END ????????????????
關(guān)注我的微信公眾號(hào),回復(fù)“加群”按規(guī)則加入技術(shù)交流群。
點(diǎn)擊下面圖片,有星球具體介紹,新用戶(hù)有新人優(yōu)惠券,老用戶(hù)半價(jià)優(yōu)惠,期待大家一起學(xué)習(xí)一起進(jìn)步。
點(diǎn)擊“閱讀原文”查看更多分享,歡迎點(diǎn)分享、收藏、點(diǎn)贊、在看。
