車(chē)載網(wǎng)絡(luò)CAN(四):CAN控制器的分類(lèi)和工作原理
摘要
該專(zhuān)題連載共分為“五”篇,這是第四篇。在上一篇文章中,我們?cè)敿?xì)解釋了 CAN(控制器局域網(wǎng))協(xié)議,但這次我們將重點(diǎn)關(guān)注物理層,并介紹 CAN 中的通信線(xiàn)路機(jī)制。
與之前的控制說(shuō)明不同,本文將主要側(cè)重于硬件相關(guān)的主題,但如果您正確理解了這里的內(nèi)容,那么在實(shí)際實(shí)施和測(cè)試 CAN 時(shí)肯定會(huì)有所幫助。
點(diǎn)擊閱讀:車(chē)載網(wǎng)絡(luò)CAN(一):CAN協(xié)議基礎(chǔ)知識(shí)
點(diǎn)擊閱讀:車(chē)載網(wǎng)絡(luò)CAN(二):CAN通信的數(shù)據(jù)傳輸機(jī)制
點(diǎn)擊閱讀:車(chē)載網(wǎng)絡(luò)CAN(三):“幀”的結(jié)構(gòu)、用法和錯(cuò)誤處理方法
連接到CAN總線(xiàn)
首先,我們來(lái)看看每個(gè)節(jié)點(diǎn)(CAN 控制器)是如何連接到 CAN 總線(xiàn)(通信線(xiàn)路)的。
下面是一個(gè)高速 CAN 連接到 CAN 總線(xiàn)的示例(圖 1)。

圖1、連接至CAN總線(xiàn)
·微控制器
處理發(fā)送和接收的數(shù)據(jù),以及節(jié)點(diǎn)處理。
·CAN協(xié)議控制器:
實(shí)現(xiàn)CAN協(xié)議功能(位填充、通信仲裁、錯(cuò)誤處理、CRC校驗(yàn)等)。包含一個(gè)濾波器。
·生成和調(diào)節(jié)CAN 收發(fā)器
總線(xiàn)傳輸電壓,確保工作電流,并保護(hù)線(xiàn)路。
它用于抑制終端電阻器的反射電壓并調(diào)節(jié)母線(xiàn)電平。
如圖1所示,CAN控制器通過(guò)CAN收發(fā)器連接到CAN總線(xiàn)。物理層標(biāo)準(zhǔn)(例如高速CAN和低速CAN)的差異由CAN收發(fā)器吸收。這意味著CAN控制器不受任何物理層的影響,CAN協(xié)議機(jī)制可以通用。
CAN控制器分類(lèi)
接下來(lái),我們將介紹 CAN 控制器的分類(lèi),如下圖所示(圖 2)。

圖2、CAN 控制器分類(lèi)
因安裝類(lèi)型而異
有兩種模式:“微控制器外部(獨(dú)立式) ”和“微控制器內(nèi)置”,但目前大多數(shù)都是內(nèi)置于(安裝在)微控制器中的。
協(xié)議版本之間的差異
CAN協(xié)議有兩種標(biāo)準(zhǔn): “標(biāo)準(zhǔn)格式(2.0A) ”和“擴(kuò)展格式(2.0B) ”。這兩者之間的主要區(qū)別在于消息ID的長(zhǎng)度。
信息管理至關(guān)重要
根據(jù)處理消息發(fā)送和接收的方法,CAN 可分為“基本 CAN ”和“完整 CAN ”。
因安裝類(lèi)型而異
半導(dǎo)體制造商銷(xiāo)售各種產(chǎn)品,包括用于不具備CAN控制器功能的微控制器的獨(dú)立CAN控制器,以及內(nèi)置CAN控制器功能的微控制器,使用戶(hù)能夠選擇最適合其需求的產(chǎn)品。由于目前市場(chǎng)上大多數(shù)汽車(chē)微控制器都內(nèi)置了CAN控制器功能,因此采用CAN對(duì)成本等方面的影響不大。
協(xié)議版本之間的差異
接下來(lái),我們來(lái)看一下 CAN 協(xié)議版本之間的差異(圖 3)。

圖3、不同協(xié)議版本之間的差異
所有協(xié)議版本均可發(fā)送和接收標(biāo)準(zhǔn)格式 (2.0A)。擴(kuò)展格式 (2.0B) 無(wú)法使用協(xié)議版本 2.0A 發(fā)送或接收,接收時(shí)會(huì)發(fā)送錯(cuò)誤幀。因此,如果將協(xié)議版本 2.0A 的節(jié)點(diǎn)混用在承載擴(kuò)展格式的 CAN 總線(xiàn)上,即使是正常的通信也會(huì)因來(lái)自協(xié)議版本 2.0A 節(jié)點(diǎn)的錯(cuò)誤幀而中斷。
協(xié)議版本 2.0B 被動(dòng)模式與協(xié)議版本 2.0A 相同,都無(wú)法發(fā)送或接收擴(kuò)展格式數(shù)據(jù),但它在接收時(shí)會(huì)忽略擴(kuò)展格式數(shù)據(jù),并且不會(huì)發(fā)送錯(cuò)誤幀。協(xié)議版本 2.0B 主動(dòng)模式允許發(fā)送和接收擴(kuò)展格式數(shù)據(jù)。
因此,在配置使用擴(kuò)展格式的 CAN 網(wǎng)絡(luò)時(shí),每個(gè)節(jié)點(diǎn)的 CAN 控制器必須僅配置為啟用協(xié)議版本 2.0B。如果同時(shí)處理擴(kuò)展格式和標(biāo)準(zhǔn)格式,則不處理擴(kuò)展格式的節(jié)點(diǎn)使用被動(dòng)協(xié)議版本 2.0B,而處理擴(kuò)展格式的節(jié)點(diǎn)使用主動(dòng)協(xié)議版本 2.0B,就不會(huì)出現(xiàn)通信問(wèn)題。
信息管理至關(guān)重要
接下來(lái),讓我們用圖表來(lái)比較消息管理方面的差異。
基本 CAN 的發(fā)送和接收緩沖區(qū)比全 CAN 少,用于中低速通信(圖 4)。
另一方面,F(xiàn)ull-CAN 比 Basic-CAN 具有更多的發(fā)送和接收緩沖區(qū),用于高速通信(圖 5)。

圖4、基本型CAN

5、Full-CAN
高速CAN和低速CAN
高速 CAN
高速CAN總線(xiàn)通信速度最高可達(dá)1 Mbit/s,因此主要用于需要高速數(shù)據(jù)交換的動(dòng)力總成系統(tǒng)。通信采用雙線(xiàn)制,電壓差決定顯性/隱性通道,使其不易受外部噪聲干擾(雙線(xiàn)差分電壓法)。CAN_H和CAN_L之間的電壓差設(shè)定為1.8 V,CAN收發(fā)器由兩個(gè)120 Ω終端電阻提供30 mA的電流驅(qū)動(dòng)(圖6)。

圖6、低速CAN
CAN位定時(shí)-段類(lèi)型
接下來(lái),我們將解釋向 CAN 總線(xiàn)發(fā)送信號(hào)時(shí)必須考慮的要點(diǎn)。
首先,構(gòu)成發(fā)送到 CAN 總線(xiàn)的信息的 1 位信號(hào)中的每個(gè)段都有其類(lèi)型。段類(lèi)型的結(jié)構(gòu)如圖7所示。

圖7、線(xiàn)段類(lèi)型
根據(jù) ISO 11898 和 ISO 11519-2 標(biāo)準(zhǔn),CAN 位時(shí)間被分為四個(gè)互不重疊的段:
“SYNC_SEG(同步段)”
執(zhí)行位同步時(shí),該段用作起始位置(CAN 控制器通過(guò)延長(zhǎng)或縮短位時(shí)間來(lái)同步)。
“PROP_SEG(傳播時(shí)間段)”
該段補(bǔ)償由各種因素(輸出緩沖區(qū)、CAN 總線(xiàn)、輸入緩沖區(qū))引起的延遲時(shí)間(傳播延遲)。
“PHASE_SEG1(相位緩沖段 1)”
“PHASE_SEG2(相位緩沖段 2)”
振蕩器振蕩誤差由下一次重新同步時(shí)序進(jìn)行補(bǔ)償。如果使用誤差較大的振蕩器,則必須設(shè)置較大的相位緩沖段(在這種情況下,通信速度會(huì)降低)。
CAN 位時(shí)序 - 傳輸延遲時(shí)間
CAN 總線(xiàn)通過(guò)通信線(xiàn)路發(fā)送電信號(hào)進(jìn)行通信。在這種情況下,由于各種因素,會(huì)產(chǎn)生處理延遲。例如,這些延遲包括“CAN 控制器中的處理時(shí)間”、“CAN 收發(fā)器中的信號(hào)轉(zhuǎn)換時(shí)間”以及“CAN 總線(xiàn)上的延遲時(shí)間”。由于 CAN 總線(xiàn)是雙向通信系統(tǒng),因此必須考慮這些傳輸延遲。
使用“PROP_SEG(傳播時(shí)間段)”對(duì)該傳輸延遲進(jìn)行補(bǔ)償,計(jì)算方法如圖8所示。

圖8、傳輸延遲時(shí)間
·CAN 控制器中的延遲時(shí)間:tCAN
·收發(fā)器接收延遲時(shí)間:tRX
·收發(fā)器傳輸延遲時(shí)間:tTX
·Bus延誤時(shí)間:tBus
·Bus長(zhǎng)度:lBus
·信號(hào)傳輸速率:vBus
CAN位時(shí)序-用于通信仲裁和識(shí)別的時(shí)序控制
接下來(lái),我們將解釋傳輸延遲時(shí)間如何影響通信。通過(guò)考慮確認(rèn)(ACK)部分,這一點(diǎn)可以很容易地理解。
發(fā)送方發(fā)送一個(gè)確認(rèn)時(shí)隙(實(shí)際上處于隱性狀態(tài)),接收方識(shí)別到該確認(rèn)時(shí)隙,并發(fā)送一個(gè)確認(rèn)時(shí)隙(假設(shè)接收正常且處于顯性狀態(tài))。如果發(fā)送方能夠在確認(rèn)時(shí)隙的采樣點(diǎn)識(shí)別到接收方發(fā)送的確認(rèn)時(shí)隙,則可以進(jìn)行正常的通信(圖9)。

圖9、通信仲裁和識(shí)別的時(shí)序控制
節(jié)點(diǎn) (1)到節(jié)點(diǎn) (2)的信號(hào)延遲是由以下因素造成的:
1. 輸出驅(qū)動(dòng)器延遲時(shí)間 (tCAN + tTX);
2. 總線(xiàn)延遲時(shí)間 tBus;
3. 輸入驅(qū)動(dòng)器(比較器等)延遲時(shí)間 (tCAN + tRX)。
如果節(jié)點(diǎn)(2)與節(jié)點(diǎn)(1)同步,并且兩個(gè)節(jié)點(diǎn)都在仲裁中,則節(jié)點(diǎn)(1)必須先從節(jié)點(diǎn)(2)接收信息,然后才能對(duì)總線(xiàn)進(jìn)行采樣。
為確保正常運(yùn)行,必須滿(mǎn)足以下條件:
![]()
為簡(jiǎn)單起見(jiàn),必須滿(mǎn)足 (tACAN + tATX) = (tBCAN + tBTX) 且 (tACAN + tARX) = (tBCAN + tBRX)。
CAN位定時(shí)-同步
我們已經(jīng)解釋了數(shù)據(jù)段的類(lèi)型和傳輸延遲時(shí)間,但它們的主要用途是時(shí)序控制(同步)。當(dāng)發(fā)送節(jié)點(diǎn)發(fā)送數(shù)據(jù)時(shí),如果該數(shù)據(jù)的起始位置落在接收節(jié)點(diǎn)的“SYNC_SEG(同步段)”內(nèi),則發(fā)送節(jié)點(diǎn)和接收節(jié)點(diǎn)可以被認(rèn)為是同步的。然而,在某些情況下,由于某些原因,發(fā)送節(jié)點(diǎn)和接收節(jié)點(diǎn)可能會(huì)失去同步。
當(dāng)發(fā)送節(jié)點(diǎn)發(fā)送數(shù)據(jù)時(shí),如果接收節(jié)點(diǎn)的“SYNC_SEG(同步段)”比該數(shù)據(jù)的起始時(shí)間快,則接收節(jié)點(diǎn)的“TSEG_1”將增加 CAN 控制器中設(shè)置的“SJW”,以便從下次開(kāi)始啟用同步。
如果發(fā)送節(jié)點(diǎn)發(fā)送數(shù)據(jù),并且該數(shù)據(jù)的開(kāi)始時(shí)間晚于接收節(jié)點(diǎn)的“SYNC_SEG”,則接收節(jié)點(diǎn)將從發(fā)送節(jié)點(diǎn)數(shù)據(jù)的開(kāi)頭開(kāi)始發(fā)送下一個(gè)比特(導(dǎo)致前一個(gè)比特的長(zhǎng)度變短),從而實(shí)現(xiàn)同步。
該時(shí)序控制按圖所示執(zhí)行。

圖10、同步
圖 10 中總線(xiàn)上三個(gè)節(jié)點(diǎn)的行為如下:
·節(jié)點(diǎn)(1)完全同步,其邊位于“tSYNC”槽內(nèi)。
·節(jié)點(diǎn) (2) 的觸發(fā)時(shí)間過(guò)早。當(dāng)隱性基因轉(zhuǎn)顯性基因的事件發(fā)生時(shí),“tTSEG_1”的第二個(gè)周期處于激活狀態(tài)。為了糾正這種錯(cuò)誤的同步,需要將“tTSEG_1”延長(zhǎng)兩個(gè)周期。圖 10顯示,下一個(gè)事件按預(yù)期落在了“tSYNC”周期內(nèi)。
·節(jié)點(diǎn) (3)為時(shí)已晚。當(dāng)隱性基因向顯性基因轉(zhuǎn)變時(shí),“tTSEG_2”的最后一個(gè)循環(huán)仍然處于激活狀態(tài)。由于“tTSEG_2”的縮短,該片段被設(shè)置為“tSYNC”。
規(guī)則
·僅使用隱性到顯性邊緣進(jìn)行重新同步。
·采樣點(diǎn)之前的邊緣導(dǎo)致“tTSEG_1”的擴(kuò)展。
·采樣點(diǎn)之后的邊緣導(dǎo)致“tTSEG_2”縮短。
·延長(zhǎng)或縮短位時(shí)間的最大周期必須等于或小于 CAN 控制器設(shè)定的重新同步跳變寬度 (SJW)。
通信速度和距離
通信速度和通信距離如圖 11所示。

圖11、通信速度和通信距離
雖然通信距離會(huì)因延遲時(shí)間略有不同,但通常來(lái)說(shuō),通信速度越慢,通信距離越長(zhǎng)。隨著通信速度的降低,單個(gè)比特的長(zhǎng)度也會(huì)增加,因此在考慮確認(rèn)時(shí)隙部分時(shí),需要預(yù)留更多時(shí)間用于確認(rèn)時(shí)隙和確認(rèn)信息的發(fā)送和接收,從而可以延長(zhǎng)通信距離。采用CAN總線(xiàn)時(shí),應(yīng)根據(jù)應(yīng)用場(chǎng)景和通信距離選擇合適的通信速度。
與之前的文章不同,這次我們不僅講解了控制機(jī)制,還講解了實(shí)際的通信線(xiàn)路機(jī)制(物理層)。至此,我們對(duì)CAN總線(xiàn)的概述以及CAN協(xié)議的內(nèi)容就介紹完畢了。然而,僅憑這些概述,很難掌握具體的應(yīng)用方法,例如在實(shí)際應(yīng)用中“如何使用它?”。
下一篇文章,我們將講解一些在實(shí)踐中真正有用的“實(shí)用內(nèi)容”。更多內(nèi)容,關(guān)注牛喀網(wǎng),學(xué)習(xí)更多汽車(chē)科技。有興趣的朋友,可以添加牛小喀微信:NewCarRen,加入專(zhuān)家社群參與討論。

(添加微信號(hào)NewCarRen咨詢(xún))
