CAN總線相關(guān)概述
1 寫在前面
說(shuō)到CAN,相信大家都有所了解,但單純的了解,其意義不大,要知道它能做什么,知道它的用途才重要。
可能初學(xué)的朋友不太了解CAN的應(yīng)用領(lǐng)域,對(duì)于汽車電子、軌道交通、工業(yè)自動(dòng)化等諸多的運(yùn)動(dòng)控制系統(tǒng)中,運(yùn)用CAN總線通信的地方很多很多。所以,我建議:嵌入式開發(fā)的朋友,有必要學(xué)習(xí)CAN,以及CAN常用的通信協(xié)議。
2 CAN總線
什么是總線?
相信大家都知道,谷歌百度一下,非常詳細(xì)的解釋:總線(Bus)是計(jì)算機(jī)各種功能部件之間傳送信息的公共通信主干線。就好比一條輸電線,它有多條分支,但主干線是重要的一條線路。
什么是CAN?
CAN:ControllerAreaNetwork即控制器局域網(wǎng)絡(luò)。
理解了總線及CAN的含義,對(duì)CAN總線的理解就不難了,只是我們這種控制通信的方式這樣命名而已。同理,我們也能理解什么是485總線,什么是I2C總線······
3 CAN網(wǎng)絡(luò)結(jié)構(gòu)
想要實(shí)現(xiàn)CAN總線的通信,必須要有CAN相關(guān)的硬件支持,也可以說(shuō)是OSI(開放系統(tǒng)互聯(lián))中的物理層。
(圖片來(lái)自STM32 CAN網(wǎng)絡(luò)結(jié)構(gòu)圖)
可以結(jié)合485總線理解,CAN控制器就是UART控制器,CAN收發(fā)器就是485轉(zhuǎn)換器。
CAN控制器是CAN通信中的核心部位,收和發(fā)的數(shù)據(jù)都經(jīng)由它來(lái)處理;
CAN收發(fā)器可以理解成一個(gè)轉(zhuǎn)換器,就是將TTL電平信號(hào)轉(zhuǎn)換為CAN總線中的差分信號(hào)。
4 CAN通信原理
CAN通信原理其實(shí)是一個(gè)很大的話題,這里從基礎(chǔ)來(lái)講述實(shí)現(xiàn)CAN通信的原理。
can在英文單詞中有"罐頭"的意思,可能很多人小時(shí)候都玩過(guò)有種叫“傳聲筒”的東西,就是對(duì)著繩子一端的罐頭說(shuō)話,聲音就可以傳輸?shù)牧硪活^。
罐頭一端的人說(shuō)【你好】,另外一端的人就能理解到對(duì)方說(shuō)的話(你好)的意思。
我們可以把【你好】理解成通信中的數(shù)據(jù),至于它是通過(guò)什么方式傳輸過(guò)去我們是不必關(guān)心的,只需要知道【你好】的意思即可。
也就是說(shuō),數(shù)據(jù)經(jīng)過(guò)電平轉(zhuǎn)換的過(guò)程我們不用關(guān)心,還有就是添加的一些協(xié)議(如CANopen,可以理解成額外添加的數(shù)據(jù))我們也不用關(guān)心,關(guān)心的是我們想要得到的數(shù)據(jù)。
5 CAN應(yīng)用協(xié)議
CAN也可以理解成UART,我們可以不使用CAN收發(fā)器,像單片機(jī)UART中直接將兩塊單片機(jī)的TX和RX引腳連接,通過(guò)TTL電平信號(hào)傳輸數(shù)據(jù)。
一般來(lái)說(shuō),我們使用UART通信,都會(huì)添加相關(guān)的協(xié)議,如ModBus。添加協(xié)議的作用是就是方便解析數(shù)據(jù),防止信號(hào)受干擾而檢測(cè)錯(cuò)誤數(shù)據(jù)幀等。
相關(guān)的協(xié)議目前有多種:
CANopen協(xié)議 (制定組織:CiA)
DeviceNet協(xié)議 (制定組織ODVA)
CAL協(xié)議 (制定組織:CiA)
CANKingdom (制定組織:Kvaser)
J1939協(xié)議 (制定組織:SAE)
SDS協(xié)議(制定組織:Honeywell)
CAN總線應(yīng)用協(xié)議相對(duì)CAN驅(qū)動(dòng)來(lái)說(shuō)要復(fù)雜的多,目前CANopen協(xié)議算是市面上用的比較多的一種,后期會(huì)更新CANopen協(xié)議中一項(xiàng)開源協(xié)議canfestival。
6 最后
CAN總線以及CAN相關(guān)協(xié)議的內(nèi)容相對(duì)來(lái)說(shuō)較多,本文算是帶領(lǐng)大家對(duì)CAN有一個(gè)基礎(chǔ)的認(rèn)識(shí)。
微信搜索“EmbeddDeveloper” 或者掃描下面二維碼、關(guān)注,在我的底部菜單查看更多精彩內(nèi)容!
長(zhǎng)按識(shí)別二維碼 關(guān)注
原文標(biāo)題:一種值得嵌入式開發(fā)人員學(xué)習(xí)的總線 --- CAN-Bus
文章出處:【微信公眾號(hào):strongerHuang】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
-
嵌入式
+關(guān)注
關(guān)注
5143文章
19574瀏覽量
315710 -
CAN總線
+關(guān)注
關(guān)注
145文章
1977瀏覽量
132417 -
485總線
+關(guān)注
關(guān)注
1文章
29瀏覽量
16958
發(fā)布評(píng)論請(qǐng)先 登錄
嵌入式開發(fā)入門指南:從零開始學(xué)習(xí)嵌入式
NanoEdge AI Studio 面向STM32開發(fā)人員機(jī)器學(xué)習(xí)(ML)技術(shù)

嵌入式去哪個(gè)城市好?
GoPoint嵌入式開發(fā)平臺(tái) 釋放i.MX潛力 簡(jiǎn)化Linux開發(fā)

如何成為嵌入式開發(fā)工程師?
哪些專業(yè)適合學(xué)習(xí)嵌入式開發(fā)?
CAN-Bus總線電纜行業(yè)技術(shù)發(fā)展趨勢(shì)及市場(chǎng)空間預(yù)測(cè)報(bào)告
如何使用 RISC-V 進(jìn)行嵌入式開發(fā)
MSPDebugStack開發(fā)人員指南

零基礎(chǔ)嵌入式開發(fā)學(xué)習(xí)路線
嵌入式開發(fā)常見問(wèn)題排查

嵌入式常用總線有哪些
嵌入式開發(fā)常用軟件有哪些?
嵌入式開發(fā)前景怎么樣?

評(píng)論