亚洲综合图片区自拍_思思91精品国产综合在线观看_一区二区三区欧美_欧美黑人又粗又大_亚洲人成精品久久久久桥本

CAN的實(shí)現(xiàn)原理是什么?說一下CAN總線的特點(diǎn)有哪些?

2023-08-14 15:10:01 來源:那個(gè)混子

先簡(jiǎn)單的說一下概念定義

CAN總線:CAN 是Controller Area Network的縮寫(以下稱為 CAN),是 ISO1 國(guó)際標(biāo)準(zhǔn)化的串行通信協(xié)議。 在當(dāng)前的汽車產(chǎn)業(yè)中,出于對(duì)安全性、舒適性、方便性、低公害、低成本的要求,各種各樣的電子控制系統(tǒng)被開發(fā)了出來。為適應(yīng) “減少線束的數(shù)量”、“通過多個(gè) LAN,進(jìn)行大量數(shù)據(jù)的高速通信”的需要,1986 年德國(guó)電氣商博世公司開發(fā)出面向汽車的 CAN 通信協(xié)議。此后,CAN 通過 ISO11898 及 ISO11519進(jìn)行了標(biāo)準(zhǔn)化,現(xiàn)在在歐洲已是汽車網(wǎng)絡(luò)的標(biāo)準(zhǔn)協(xié)議。


(相關(guān)資料圖)

應(yīng)用:

現(xiàn)在,CAN 的高性能和可靠性已被認(rèn)同,并被廣泛地應(yīng)用于工業(yè)自動(dòng)化、船舶、醫(yī)療設(shè)備、工業(yè)設(shè)備等方面。

CAN的實(shí)現(xiàn)原理

CAN 控制器根據(jù)兩根線上的電位差來判斷總線電平??偩€電平分為顯性電平和隱性電平,二者必居其一。發(fā)送方通過使總線電平發(fā)生變化,將消息發(fā)送給接收方。 這個(gè)可能要引入一個(gè)概念 差分信號(hào),至于顯性隱形這里大家可能暫時(shí)不要關(guān)心,但是如果你玩過單片機(jī)你應(yīng)該要猜到高低電平的概念,這個(gè)類似但不是,可以對(duì)比理解。

差分信號(hào):

差分傳輸是一種信號(hào)傳輸?shù)募夹g(shù),區(qū)別于傳統(tǒng)的一根信號(hào)線一根地線的做法,差分傳輸在這兩根線上都傳輸信號(hào),這兩個(gè)信號(hào)的振幅相等,相位相差180度,極性相反。在這兩根線上傳輸?shù)男盘?hào)就是差分信號(hào)。(類比雙絞線理解吧)

通俗易懂的說就說:這種信號(hào)不是來自一條線,而是兩條線的差值才是我們需要的信號(hào)!

那么他的優(yōu)點(diǎn)就很好理解了,在一個(gè)環(huán)境中,如果受外界干擾,兩條線上的電平是同時(shí)發(fā)生變化的嘛,然后這種干擾絲毫是不影響兩個(gè)線的差值的,類似與等號(hào)的同加同減性。類似于3-1=2,我們干擾了比如說就相當(dāng)于削弱了0.5的信號(hào),那結(jié)果(3-0.5)-(1-0.5)=2,結(jié)果也是一樣的。

接下來說一下CAN總線的特點(diǎn):

1) 多主控制。在總線空閑時(shí),所有單元都可以發(fā)送消息(多主控制),而兩個(gè)以上的單元同時(shí)開始發(fā)送消息時(shí),根據(jù)標(biāo)識(shí)符(Identifier 以下稱為 ID)決定優(yōu)先級(jí)。ID 并不是表示發(fā)送的目的地址,而是表示訪問總線的消息的優(yōu)先級(jí)。兩個(gè)以上的單元同時(shí)開始發(fā)送消息時(shí),對(duì)各消息ID 的每個(gè)位進(jìn)行逐個(gè)仲裁比較。仲裁獲勝(被判定為優(yōu)先級(jí)最高)的單元可繼續(xù)發(fā)送消息,仲裁失利的單元?jiǎng)t立刻停止發(fā)送而進(jìn)行接收工作。 2) 系統(tǒng)的柔軟性。與總線相連的單元沒有類似于“地址”的信息。因此在總線上增加單元時(shí),連接在總線上的其它單元的軟硬件及應(yīng)用層都不需要改變。 3) 通信速度較快,通信距離遠(yuǎn)。最高1Mbps(距離小于40M),最遠(yuǎn)可達(dá)10KM(速率低于5Kbps)。 4) 具有錯(cuò)誤檢測(cè)、錯(cuò)誤通知和錯(cuò)誤恢復(fù)功能。所有單元都可以檢測(cè)錯(cuò)誤(錯(cuò)誤檢測(cè)功能),檢測(cè)出錯(cuò)誤的單元會(huì)立即同時(shí)通知其他所有單元(錯(cuò)誤通知功能),正在發(fā)送消息的單元一旦檢測(cè)出錯(cuò)誤,會(huì)強(qiáng)制結(jié)束當(dāng)前的發(fā)送。強(qiáng)制結(jié)束發(fā)送的單元會(huì)不斷反復(fù)地重新發(fā)送此消息直到成功發(fā)送為止(錯(cuò)誤恢復(fù)功能)。 5) 故障封閉功能。CAN 可以判斷出錯(cuò)誤的類型是總線上暫時(shí)的數(shù)據(jù)錯(cuò)誤(如外部噪聲等)還是持續(xù)的數(shù)據(jù)錯(cuò)誤(如單元內(nèi)部故障、驅(qū)動(dòng)器故障、斷線等)。由此功能,當(dāng)總線上發(fā)生持續(xù)數(shù)據(jù)錯(cuò)誤時(shí),可將引起此故障的單元從總線上隔離出去。 6) 連接節(jié)點(diǎn)多。CAN 總線是可同時(shí)連接多個(gè)單元的總線。可連接的單元總數(shù)理論上是沒有限制的。但實(shí)際上可連接的單元數(shù)受總線上的時(shí)間延遲及電氣負(fù)載的限制。降低通信速度,可連接的單元數(shù)增加;提高通信速度,則可連接的單元數(shù)減少。

CAN物理層

I2C、SPI等具有時(shí)鐘信號(hào)的同步通訊方式不同,CAN通訊并不是以時(shí)鐘信號(hào)來進(jìn)行同步的,它是一種異步通訊,只具有CAN_High和CAN_Low兩條信號(hào)線,共同構(gòu)成一組差分信號(hào)線,以差分信號(hào)的形式進(jìn)行通訊。

1. 閉環(huán)總線網(wǎng)絡(luò)

CAN物理層的形式主要有兩種,圖 中的CAN通訊網(wǎng)絡(luò)是一種遵循ISO11898標(biāo)準(zhǔn)的高速、短距離"閉環(huán)網(wǎng)絡(luò)",它的總線最大長(zhǎng)度為40m,通信速度最高為1Mbps,總線的兩端各要求有一個(gè)"120歐"的電阻。

CAN閉環(huán)總線通訊網(wǎng)絡(luò)

2. 開環(huán)總線網(wǎng)絡(luò)

圖中的是遵循ISO11519-2標(biāo)準(zhǔn)的低速、遠(yuǎn)距離"開環(huán)網(wǎng)絡(luò)",它的最大傳輸距離為1km,最高通訊速率為125kbps,兩根總線是獨(dú)立的、不形成閉環(huán),要求每根總線上各串聯(lián)有一個(gè)"2.2千歐"的電阻。

CAN開環(huán)總線通訊網(wǎng)絡(luò)

兩種標(biāo)準(zhǔn)的電平特性

3. CAN協(xié)議中的差分信號(hào)

CAN協(xié)議中對(duì)它使用的CAN_High及CAN_Low表示的差分信號(hào)做了規(guī)定。 以高速CAN協(xié)議為例,當(dāng)表示邏輯1時(shí)(隱性電平),CAN_High和CAN_Low線上的電壓均為2.5v,即它們的電壓差VH-VL=0V;而表示邏輯0時(shí)(顯性電平),CAN_High的電平為3.5V,CAN_Low線的電平為1.5V,即它們的電壓差為VH-VL=2V。 例如,當(dāng)CAN收發(fā)器從CAN_Tx線接收到來自CAN控制器的低電平信號(hào)時(shí)(邏輯0),它會(huì)使CAN_High輸出3.5V,同時(shí)CAN_Low輸出1.5V,從而輸出顯性電平表示邏輯0。

CAN的差分信號(hào)(高速)

在CAN總線中,必須使它處于隱性電平(邏輯1)或顯性電平(邏輯0)中的其中一個(gè)狀態(tài)。假如有兩個(gè)CAN通訊節(jié)點(diǎn),在同一時(shí)間,一個(gè)輸出隱性電平,另一個(gè)輸出顯性電平,類似I2C總線的"線與"特性將使它處于顯性電平狀態(tài),顯性電平的名字就是這樣來的,即可以認(rèn)為顯性具有優(yōu)先的意味。

由于CAN總線協(xié)議的物理層只有1對(duì)差分線,在一個(gè)時(shí)刻只能表示一個(gè)信號(hào),所以對(duì)通訊節(jié)點(diǎn)來說,CAN通訊是半雙工的,收發(fā)數(shù)據(jù)需要分時(shí)進(jìn)行。在CAN的通訊網(wǎng)絡(luò)中,因?yàn)楣灿每偩€,在整個(gè)網(wǎng)絡(luò)中同一時(shí)刻只能有一個(gè)通訊節(jié)點(diǎn)發(fā)送信號(hào),其余的節(jié)點(diǎn)在該時(shí)刻都只能接收。

協(xié)議層方面的東西

1. CAN的波特率及位同步

由于CAN屬于異步通訊,沒有時(shí)鐘信號(hào)線,連接在同一個(gè)總線網(wǎng)絡(luò)中的各個(gè)節(jié)點(diǎn)會(huì)像串口異步通訊那樣,節(jié)點(diǎn)間使用約定好的波特率進(jìn)行通訊,特別地,CAN還會(huì)使用"位同步"的方式來抗干擾、吸收誤差,實(shí)現(xiàn)對(duì)總線電平信號(hào)進(jìn)行正確的采樣,確保通訊正常。

位時(shí)序分解

為了實(shí)現(xiàn)位同步,CAN協(xié)議把每一個(gè)數(shù)據(jù)位的時(shí)序分解成如圖 405所示的SS段、PTS段、PBS1段、PBS2段,這四段的長(zhǎng)度加起來即為一個(gè)CAN數(shù)據(jù)位的長(zhǎng)度。分解后最小的時(shí)間單位是Tq,而一個(gè)完整的位由8~25個(gè)Tq組成。為方便表示,圖中的高低電平直接代表信號(hào)邏輯0或邏輯1(不是差分信號(hào))。

CAN位時(shí)序分解圖

該圖中表示的CAN通訊信號(hào)每一個(gè)數(shù)據(jù)位的長(zhǎng)度為19Tq,其中SS段占1Tq,PTS段占6Tq,PBS1段占5Tq,PBS2段占7Tq。信號(hào)的采樣點(diǎn)位于PBS1段與PBS2段之間,通過控制各段的長(zhǎng)度,可以對(duì)采樣點(diǎn)的位置進(jìn)行偏移,以便準(zhǔn)確地采樣。

各段的作用如介紹下:

? SS段(SYNC SEG) SS譯為同步段,若通訊節(jié)點(diǎn)檢測(cè)到總線上信號(hào)的跳變沿被包含在SS段的范圍之內(nèi),則表示節(jié)點(diǎn)與總線的時(shí)序是同步的,當(dāng)節(jié)點(diǎn)與總線同步時(shí),采樣點(diǎn)采集到的總線電平即可被確定為該位的電平。SS段的大小固定為1Tq。

? PTS段(PROP SEG) PTS譯為傳播時(shí)間段,這個(gè)時(shí)間段是用于補(bǔ)償網(wǎng)絡(luò)的物理延時(shí)時(shí)間。是總線上輸入比較器延時(shí)和輸出驅(qū)動(dòng)器延時(shí)總和的兩倍。PTS段的大小可以為1~8Tq。

? PBS1段(PHASE SEG1), PBS1譯為相位緩沖段,主要用來補(bǔ)償邊沿階段的誤差,它的時(shí)間長(zhǎng)度在重新同步的時(shí)候可以加長(zhǎng)。PBS1段的初始大小可以為1~8Tq。

? PBS2段(PHASE SEG2) PBS2這是另一個(gè)相位緩沖段,也是用來補(bǔ)償邊沿階段誤差的,它的時(shí)間長(zhǎng)度在重新同步時(shí)可以縮短。PBS2段的初始大小可以為2~8Tq。

通訊的波特率

總線上的各個(gè)通訊節(jié)點(diǎn)只要約定好1個(gè)Tq的時(shí)間長(zhǎng)度以及每一個(gè)數(shù)據(jù)位占據(jù)多少個(gè)Tq,就可以確定CAN通訊的波特率。 例如,假設(shè)上圖中的1Tq=1us,而每個(gè)數(shù)據(jù)位由19個(gè)Tq組成,則傳輸一位數(shù)據(jù)需要時(shí)間T1bit =19us,從而每秒可以傳輸?shù)臄?shù)據(jù)位個(gè)數(shù)為:

1x10 6/19 = 52631.6 (bps)

這個(gè)每秒可傳輸?shù)臄?shù)據(jù)位的個(gè)數(shù)即為通訊中的波特率。

同步過程分析

波特率只是約定了每個(gè)數(shù)據(jù)位的長(zhǎng)度,數(shù)據(jù)同步還涉及到相位的細(xì)節(jié),這個(gè)時(shí)候就需要用到數(shù)據(jù)位內(nèi)的SS、PTS、PBS1及PBS2段了。 根據(jù)對(duì)段的應(yīng)用方式差異,CAN的數(shù)據(jù)同步分為硬同步和重新同步。其中硬同步只是當(dāng)存在"幀起始信號(hào)"時(shí)起作用,無法確保后續(xù)一連串的位時(shí)序都是同步的,而重新同步方式可解決該問題,這兩種方式具體介紹如下:

(1) 硬同步

若某個(gè)CAN節(jié)點(diǎn)通過總線發(fā)送數(shù)據(jù)時(shí),它會(huì)發(fā)送一個(gè)表示通訊起始的信號(hào)(即下一小節(jié)介紹的幀起始信號(hào)),該信號(hào)是一個(gè)由高變低的下降沿。而掛載到CAN總線上的通訊節(jié)點(diǎn)在不發(fā)送數(shù)據(jù)時(shí),會(huì)時(shí)刻檢測(cè)總線上的信號(hào)。 見下圖,可以看到當(dāng)總線出現(xiàn)幀起始信號(hào)時(shí),某節(jié)點(diǎn)檢測(cè)到總線的幀起始信號(hào)不在節(jié)點(diǎn)內(nèi)部時(shí)序的SS段范圍,所以判斷它自己的內(nèi)部時(shí)序與總線不同步,因而這個(gè)狀態(tài)的采樣點(diǎn)采集得的數(shù)據(jù)是不正確的。所以節(jié)點(diǎn)以硬同步的方式調(diào)整,把自己的位時(shí)序中的SS段平移至總線出現(xiàn)下降沿的部分,獲得同步,同步后采樣點(diǎn)就可以采集得正確數(shù)據(jù)了。

硬同步過程圖

(2) 重新同步

前面的硬同步只是當(dāng)存在幀起始信號(hào)時(shí)才起作用,如果在一幀很長(zhǎng)的數(shù)據(jù)內(nèi),節(jié)點(diǎn)信號(hào)與總線信號(hào)相位有偏移時(shí),這種同步方式就無能為力了。因而需要引入重新同步方式,它利用普通數(shù)據(jù)位的高至低電平的跳變沿來同步(幀起始信號(hào)是特殊的跳變沿)。重新同步與硬同步方式相似的地方是它們都使用SS段來進(jìn)行檢測(cè),同步的目的都是使節(jié)點(diǎn)內(nèi)的SS段把跳變沿包含起來。

重新同步的方式分為超前和滯后兩種情況,以總線跳變沿與SS段的相對(duì)位置進(jìn)行區(qū)分。第一種相位超前的情況如圖,節(jié)點(diǎn)從總線的邊沿跳變中,檢測(cè)到它內(nèi)部的時(shí)序比總線的時(shí)序相對(duì)超前2Tq,這時(shí)控制器在下一個(gè)位時(shí)序中的PBS1段增加2Tq的時(shí)間長(zhǎng)度,使得節(jié)點(diǎn)與總線時(shí)序重新同步。

相位超前時(shí)的重新同步

第二種相位滯后的情況如圖 408,節(jié)點(diǎn)從總線的邊沿跳變中,檢測(cè)到它的時(shí)序比總線的時(shí)序相對(duì)滯后2Tq,這時(shí)控制器在前一個(gè)位時(shí)序中的PBS2段減少2Tq的時(shí)間長(zhǎng)度,獲得同步。

相位滯后時(shí)的重新同步

在重新同步的時(shí)候,PBS1和PBS2中增加或減少的這段時(shí)間長(zhǎng)度被定義為"重新同步補(bǔ)償寬度SJW (reSynchronization Jump Width)"。一般來說CAN控制器會(huì)限定SJW的最大值,如限定了最大SJW=3Tq時(shí),單次同步調(diào)整的時(shí)候不能增加或減少超過3Tq的時(shí)間長(zhǎng)度,若有需要,控制器會(huì)通過多次小幅度調(diào)整來實(shí)現(xiàn)同步。當(dāng)控制器設(shè)置的SJW極限值較大時(shí),可以吸收的誤差加大,但通訊的速度會(huì)下降。

、、、、、、、、、

未完待續(xù)!

小結(jié):

由于時(shí)間關(guān)系,混子明天還上班的,就大概列舉到這里,部分東西也是引用網(wǎng)上的,自己也看過一些,大家也可以去搜了看看,野火的關(guān)于這方面的講解還是可以,還有推介文檔《CAN入門》、《CAN基礎(chǔ)》,這些可以去細(xì)看。 如果你只是作為一個(gè)了解的話,你掌握這個(gè)文章的協(xié)議層以上的東西就可以,大概能夠說出來點(diǎn)東西,大概知道是怎么個(gè)回事就可以,當(dāng)然如果你要深入了解什么的可以鉆研,如果你只是想用起來它,實(shí)際上沒得這種復(fù)雜,因?yàn)樗褪且环N總線而已,很多說的那些功能都已經(jīng)實(shí)現(xiàn)的了,我們更多的是在應(yīng)用層進(jìn)行開發(fā)使用。 嗯,就記錄到這里,后面我有時(shí)間再接著寫一下CAN報(bào)文、數(shù)據(jù)幀的格式等相關(guān)的東西,就結(jié)束了!

標(biāo)簽:

上一篇:六相永磁同步電機(jī)降階模型ECE抽取方法
下一篇:最后一頁