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

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

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

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



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

圖5. CAN標(biāo)準(zhǔn)比對
*雙絞線共模消除干擾,是因為電平同時變化,電壓差不變。

圖6. CAN的三種接口器件

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

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

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