一文搞懂CAN和CAN FD總線協(xié)議
這篇文章是將一文搞懂CAN總線協(xié)議幀格式和一文搞懂CAN FD總線協(xié)議幀格式兩篇文章的整合,方便各位朋友學(xué)習(xí)和查閱。
CAN總線上傳輸?shù)男畔⒎Q為報(bào)文,當(dāng)總線空閑時(shí)任何連接的單元都可以開始發(fā)送新的報(bào)文。
CAN通信是通過以下5種類型的幀進(jìn)行的:
數(shù)據(jù)幀
遙控幀
錯(cuò)誤幀
過載幀
幀間隔
另外,數(shù)據(jù)幀和遙控幀有標(biāo)準(zhǔn)格式和擴(kuò)展格式兩種格式。標(biāo)準(zhǔn)格式有 11 個(gè)位的標(biāo)識(shí)符(Identifier: 以下簡(jiǎn)稱 ID), 擴(kuò)展格式有 29 個(gè)位的 ID。
各種幀的用途如下表所示:
數(shù)據(jù)幀由7個(gè)段構(gòu)成,圖解說明如下所示:
幀起始:表示數(shù)據(jù)幀開始的段;
仲裁段:表示該幀優(yōu)先級(jí)的段,根據(jù)仲裁段ID碼長(zhǎng)度的不同,分為標(biāo)準(zhǔn)幀(CAN 2.0A)和擴(kuò)展幀(CAN 2.0B);
控制段:表示數(shù)據(jù)的字節(jié)數(shù)及保留位的段;
數(shù)據(jù)段:數(shù)據(jù)的內(nèi)容,可發(fā)送0~8個(gè)字節(jié)的數(shù)據(jù);
CRC段:檢查幀的傳輸錯(cuò)誤的段;
ACK段:表示確認(rèn)正常接收的段;
幀結(jié)束:表示數(shù)據(jù)幀結(jié)束的段。
1
CAN數(shù)據(jù)幀
1.1、幀起始
幀起始由1個(gè)顯性位組成??偩€空閑時(shí),發(fā)送節(jié)點(diǎn)發(fā)送幀起始,其他接收節(jié)點(diǎn)同步于該幀起始位。
總線上的電平有顯性電平和隱性電平兩種。
總線上執(zhí)行邏輯上的線“與”時(shí),顯性電平的邏輯值為“0”,隱性電平為“1”。
“顯性”具有“優(yōu)先”的意味,只要有一個(gè)單元輸出顯性電平,總線上即為顯性電平。并且,“隱性”具有“包容”的意味,只有所有的單元都輸出隱性電平,總線上才為隱性電平。(顯性電平比隱性電平更強(qiáng)。)
1.2、仲裁段
仲裁段用于寫明需要發(fā)送到目的CAN節(jié)點(diǎn)的地址、確定發(fā)送的幀類型(當(dāng)前發(fā)送的是數(shù)據(jù)幀還是遙控幀),并確定發(fā)送的幀格式是標(biāo)準(zhǔn)幀還是擴(kuò)展幀。
仲裁段在標(biāo)準(zhǔn)格式幀和擴(kuò)展格式幀中有所不同。標(biāo)準(zhǔn)格式幀的仲裁段由11位標(biāo)識(shí)符和遠(yuǎn)程發(fā)送請(qǐng)求位RTR組成,擴(kuò)展格式幀的仲裁場(chǎng)由29位標(biāo)識(shí)符和遠(yuǎn)程發(fā)送請(qǐng)求位RTR組成。
1.2.1、標(biāo)準(zhǔn)數(shù)據(jù)幀
標(biāo)準(zhǔn)數(shù)據(jù)幀基于早期的CAN規(guī)格(1.0和2.0A版),使用了11位的識(shí)別域。
CAN標(biāo)準(zhǔn)幀幀信息是11字節(jié),包括幀描述符和幀數(shù)據(jù)兩部分。如下表所列:
前3字節(jié)為幀描述部分。字節(jié)1為幀信息,第7位(FF)表示幀格式,在標(biāo)準(zhǔn)幀中FF=0,第6位(RTR)表示幀的類型,RTR=0表示為數(shù)據(jù)幀,RTR=1表示為遠(yuǎn)程幀。DLC表示在數(shù)據(jù)幀時(shí)實(shí)際的數(shù)據(jù)長(zhǎng)度。
標(biāo)準(zhǔn)數(shù)據(jù)幀的 ID 有 11 個(gè)位。從 ID10 到 ID0 依次發(fā)送。禁止高 7 位都為隱性(禁止設(shè)定:ID=1111111XXXX)。
字節(jié)2~3為報(bào)文識(shí)別碼,其高11位有效。
字節(jié)4~11為數(shù)據(jù)幀的實(shí)際數(shù)據(jù),遠(yuǎn)程幀時(shí)無效。
1.2.2、擴(kuò)展數(shù)據(jù)幀
CAN擴(kuò)展幀幀信息是13字節(jié),包括幀描述符和幀數(shù)據(jù)兩部分,如下表所示:
前5字節(jié)為幀描述部分。字節(jié)1為幀信息,第7位(FF)表示幀格式,在擴(kuò)展幀中FF=1,第6位(RTR)表示幀的類型,RTR=0表示為數(shù)據(jù)幀,RTR=1表示為遠(yuǎn)程幀。DLC表示在數(shù)據(jù)幀時(shí)實(shí)際的數(shù)據(jù)長(zhǎng)度。
擴(kuò)展格式的 ID 有 29 個(gè)位?;?ID 從 ID28 到 ID18,擴(kuò)展 ID 由 ID17 到 ID0 表示。基本 ID 和 標(biāo)準(zhǔn)格式的 ID 相同。禁止高 7 位都為隱性(禁止設(shè)定:基本 ID=1111111XXXX)。
字節(jié)2~5為報(bào)文識(shí)別碼,其高28位有效。
字節(jié)6~13為數(shù)據(jù)幀的實(shí)際數(shù)據(jù),遠(yuǎn)程幀時(shí)無效。
1.3、控制段
控制段由6個(gè)位組成,包括數(shù)據(jù)長(zhǎng)度代碼和兩個(gè)將來作為擴(kuò)展用的保留位,標(biāo)準(zhǔn)格式和擴(kuò)展格式的構(gòu)成有所不同。
數(shù)據(jù)長(zhǎng)度代碼指示了數(shù)據(jù)段中的字節(jié)數(shù)量。數(shù)據(jù)長(zhǎng)度代碼為4個(gè)位,在控制段里被發(fā)送,數(shù)據(jù)幀長(zhǎng)度允許的字節(jié)數(shù)為0、1、2、3、4、5、6、7、8,其他數(shù)值為非法的。
保留位(r0、r1)必須全部以顯性電平發(fā)送。但接收方可以接收顯性、隱性及其任意組合的電平。
數(shù)據(jù)長(zhǎng)度碼(DLC)與數(shù)據(jù)的字節(jié)數(shù)的對(duì)應(yīng)關(guān)系如下表所示:
數(shù)據(jù)的字節(jié)數(shù)必須為 0~8 字節(jié),但接收方對(duì) DLC = 9~15 的情況并不視為錯(cuò)誤。
1.4、數(shù)據(jù)段
數(shù)據(jù)段由數(shù)據(jù)幀中的發(fā)送數(shù)據(jù)組成,它可以為0~8字節(jié),每字節(jié)包含了8位,首先發(fā)送最高有效位MSB,依次發(fā)送至最低有效位LSB。
1.5、CRC段
CRC段是檢查幀傳輸錯(cuò)誤的幀,包括:15 個(gè)位的 CRC序列(CRC SEQUENCE)和1 個(gè)位的CRC界定符(CRC DELIMITER)構(gòu)成。
CRC序列是根據(jù)多項(xiàng)式生成的 CRC 值,CRC 的計(jì)算范圍包括:幀起始、仲裁段、控制段、數(shù)據(jù) 段。接收方以同樣的算法計(jì)算 CRC 值并進(jìn)行比較,不一致時(shí)會(huì)通報(bào)錯(cuò)誤。
1.6、ACK段
ACK段用來確認(rèn)是否正常接收。由 ACK 槽(ACK SLOT)和 ACK 界定符(ACK DELIMITER)2 個(gè)位構(gòu)成。
發(fā)送單元在 ACK 段發(fā)送 2 個(gè)位的隱性位。當(dāng)接收器正確地接收到有效的報(bào)文時(shí),接收器就會(huì)在應(yīng)答間隙(ACK SLOT)期間(發(fā)送ACK 信號(hào))向發(fā)送器發(fā)送一個(gè)“顯性”的位以示應(yīng)答,通知發(fā)送單元正常接收結(jié)束,這稱作“發(fā)送 ACK”或者“返回 ACK”。
發(fā)送 ACK/返回 ACK是在既不處于總線關(guān)閉態(tài)也不處于休眠態(tài)的所有接收單元中,接收到正常消息的單元 (發(fā)送單元不發(fā)送 ACK)。所謂正常消息是指不含填充錯(cuò)誤、格式錯(cuò)誤、CRC 錯(cuò)誤的消息。
1.7、幀結(jié)束
幀結(jié)束是由每一個(gè)數(shù)據(jù)幀和遠(yuǎn)程幀的標(biāo)志序列界定的,這個(gè)標(biāo)志序列由7個(gè)“隱性”位組成。
2
CAN標(biāo)準(zhǔn)數(shù)據(jù)幀和擴(kuò)展數(shù)據(jù)幀
CAN協(xié)議可以接收和發(fā)送11位標(biāo)準(zhǔn)數(shù)據(jù)幀和29位擴(kuò)展數(shù)據(jù)幀,CAN標(biāo)準(zhǔn)數(shù)據(jù)幀和擴(kuò)展數(shù)據(jù)幀只是幀ID長(zhǎng)度不同,以便可以擴(kuò)展更多CAN節(jié)點(diǎn)。
2.1、標(biāo)準(zhǔn)數(shù)據(jù)幀
標(biāo)準(zhǔn)數(shù)據(jù)幀基于早期的CAN規(guī)格(1.0和2.0A版),使用了11位的識(shí)別域。
CAN標(biāo)準(zhǔn)幀幀信息是11字節(jié),包括幀描述符和幀數(shù)據(jù)兩部分。如下表所列:
前3字節(jié)為幀描述部分。字節(jié)1為幀信息,第7位(FF)表示幀格式,在標(biāo)準(zhǔn)幀中FF=0,第6位(RTR)表示幀的類型,RTR=0表示為數(shù)據(jù)幀,RTR=1表示為遠(yuǎn)程幀。DLC表示在數(shù)據(jù)幀時(shí)實(shí)際的數(shù)據(jù)長(zhǎng)度。
標(biāo)準(zhǔn)數(shù)據(jù)幀的 ID 有 11 個(gè)位。從 ID10 到 ID0 依次發(fā)送,可以出現(xiàn)2^11種報(bào)文,幀ID的范圍是:000-7FF,禁止高 7 位都為隱性(禁止設(shè)定:ID=1111111XXXX)。
字節(jié)2~3為報(bào)文識(shí)別碼,其高11位有效。
字節(jié)4~11為數(shù)據(jù)幀的實(shí)際數(shù)據(jù),遠(yuǎn)程幀時(shí)無效。
2.2、擴(kuò)展數(shù)據(jù)幀
CAN擴(kuò)展幀幀信息是13字節(jié),包括幀描述符和幀數(shù)據(jù)兩部分,如下表所示:
前5字節(jié)為幀描述部分。字節(jié)1為幀信息,第7位(FF)表示幀格式,在擴(kuò)展幀中FF=1,第6位(RTR)表示幀的類型,RTR=0表示為數(shù)據(jù)幀,RTR=1表示為遠(yuǎn)程幀。DLC表示在數(shù)據(jù)幀時(shí)實(shí)際的數(shù)據(jù)長(zhǎng)度。
擴(kuò)展格式的 ID 有 29 個(gè)位,基本 ID 從 ID28 到 ID18,擴(kuò)展 ID 由 ID17 到 ID0 表示,基本 ID 和 標(biāo)準(zhǔn)格式的 ID 相同,可以出現(xiàn)2^29種報(bào)文,且在數(shù)據(jù)鏈路上是有間隙的(對(duì)操作者透明),幀ID的范圍是0000 0000-1FFF FFFF,禁止高 7 位都為隱性(禁止設(shè)定:基本 ID=1111111XXXX)。
字節(jié)2~5為報(bào)文識(shí)別碼,其高28位有效。
字節(jié)6~13為數(shù)據(jù)幀的實(shí)際數(shù)據(jù),遠(yuǎn)程幀時(shí)無效。
2.3、標(biāo)準(zhǔn)數(shù)據(jù)幀和擴(kuò)展數(shù)據(jù)幀的特性
CAN標(biāo)準(zhǔn)數(shù)據(jù)幀和擴(kuò)展數(shù)據(jù)幀只是幀ID長(zhǎng)度不同,功能上都是相同的,它們有一個(gè)共同的特性:幀ID數(shù)值越小,優(yōu)先級(jí)越高。
3
CAN遙控幀
3.1、遙控幀格式
遙控幀是接收單元向發(fā)送單元請(qǐng)求發(fā)送數(shù)據(jù)所用的幀,遙控幀由 6 個(gè)段組成,遙控幀沒有數(shù)據(jù)段。
遙控幀的構(gòu)成如下所示:
幀起始(SOF):表示幀開始的段;
仲裁段:表示該幀優(yōu)先級(jí)的段??烧?qǐng)求具有相同 ID 的數(shù)據(jù)幀;
控制段:表示數(shù)據(jù)的字節(jié)數(shù)及保留位的段;
CRC 段:檢查幀的傳輸錯(cuò)誤的段;
ACK 段:表示確認(rèn)正常接收的段;
幀結(jié)束:表示遙控幀結(jié)束的段。
遙控幀格式如下圖所示:
3.2、數(shù)據(jù)幀和遙控幀的區(qū)別
數(shù)據(jù)幀和遙控幀主要有兩點(diǎn)區(qū)別:
遙控幀沒有數(shù)據(jù)幀的數(shù)據(jù)段;
遙控幀RTR位是隱性,RTR位的極性表示了所發(fā)送的幀是數(shù)據(jù)幀(RTR位“顯性”)還是遠(yuǎn)程幀(RTR位“隱性”)。
所以,沒有數(shù)據(jù)段的數(shù)據(jù)幀和遙控幀可通過 RTR 位區(qū)別開來。
4
CAN錯(cuò)誤幀
4.1、錯(cuò)誤幀格式
錯(cuò)誤幀由錯(cuò)誤標(biāo)志(Error Flag)和錯(cuò)誤界定符(Error Delimiter)組成。
接收節(jié)點(diǎn)發(fā)現(xiàn)總線上的報(bào)文有錯(cuò)誤時(shí),將自動(dòng)發(fā)出活動(dòng)錯(cuò)誤標(biāo)志,它是6個(gè)連續(xù)的顯性位。其他節(jié)點(diǎn)檢測(cè)到活動(dòng)錯(cuò)誤標(biāo)志后發(fā)送錯(cuò)誤認(rèn)可標(biāo)志,它由6個(gè)連續(xù)的隱性位組成。由于各個(gè)接收節(jié)點(diǎn)發(fā)現(xiàn)錯(cuò)誤的時(shí)間可能不同,所以總線上實(shí)際的錯(cuò)誤標(biāo)志可能由6~12個(gè)顯性位組成。
錯(cuò)誤界定符由 8 個(gè)位的隱性位構(gòu)成。當(dāng)錯(cuò)誤標(biāo)志發(fā)生后,每一個(gè)CAN 節(jié)點(diǎn)監(jiān)視總線,直至檢測(cè)到一個(gè)顯性電平的跳變。此時(shí)表示所有的節(jié)點(diǎn)已經(jīng)完成了錯(cuò)誤標(biāo)志的發(fā)送,并開始發(fā)送8個(gè)隱性電平的界定符。
如下所示:
4.2、主動(dòng)錯(cuò)誤標(biāo)志和被動(dòng)錯(cuò)誤標(biāo)志
錯(cuò)誤標(biāo)志包括主動(dòng)錯(cuò)誤標(biāo)志和被動(dòng)錯(cuò)誤標(biāo)志兩種。
主動(dòng)錯(cuò)誤標(biāo)志:處于主動(dòng)錯(cuò)誤狀態(tài)的單元檢測(cè)出錯(cuò)誤時(shí)輸出的錯(cuò)誤標(biāo)志,6 個(gè)位的顯性位;
被動(dòng)錯(cuò)誤標(biāo)志:處于被動(dòng)錯(cuò)誤狀態(tài)的單元檢測(cè)出錯(cuò)誤時(shí)輸出的錯(cuò)誤標(biāo)志,6 個(gè)位的隱性位。
4.3、錯(cuò)誤幀種類
錯(cuò)誤幀共有 5 種,多種錯(cuò)誤可能同時(shí)發(fā)生,種類如下所示:
位錯(cuò)誤
填充錯(cuò)誤
CRC 錯(cuò)誤
格式錯(cuò)誤
ACK 錯(cuò)誤
錯(cuò)誤的種類、錯(cuò)誤的內(nèi)容、錯(cuò)誤檢測(cè)幀和檢測(cè)單元如下表所示:
重點(diǎn)聊一聊位錯(cuò)誤和格式錯(cuò)誤。
位錯(cuò)誤特性如下所示:
位錯(cuò)誤由向總線上輸出數(shù)據(jù)幀、遙控幀、錯(cuò)誤幀、過載幀的單元和輸出 ACK 的單元、輸出錯(cuò)誤的單元來檢測(cè);
在仲裁段輸出隱性電平,但檢測(cè)出顯性電平時(shí),將被視為仲裁失利,而不是位錯(cuò)誤;
在仲裁段作為填充位輸出隱性電平時(shí),但檢測(cè)出顯性電平時(shí),將不視為位錯(cuò)誤,而是填充錯(cuò)誤;
發(fā)送單元在 ACK 段輸出隱性電平,但檢測(cè)到顯性電平時(shí),將被判斷為其它單元的 ACK 應(yīng)答,而非位錯(cuò)誤;
輸出被動(dòng)錯(cuò)誤標(biāo)志(6 個(gè)位隱性位)但檢測(cè)出顯性電平時(shí),將遵從錯(cuò)誤標(biāo)志的結(jié)束條件,等待檢測(cè)出連續(xù)相同 6 個(gè)位的值(顯性或隱性),并不視為位錯(cuò)誤。
格式錯(cuò)誤特性如下所示:
即使接收單元檢測(cè)出 EOF(7 個(gè)位的隱性位)的最后一位(第 8 個(gè)位)為顯性電平,也不視為格式錯(cuò)誤;
即使接收單元檢測(cè)出數(shù)據(jù)長(zhǎng)度碼(DLC)中 9~15 的值時(shí),也不視為格式錯(cuò)誤。
發(fā)送單元發(fā)送完錯(cuò)誤幀后,將再次發(fā)送數(shù)據(jù)幀或遙控幀,錯(cuò)誤標(biāo)志輸出時(shí)序如下表所示:
5
CAN過載幀
過載幀是用于接收單元通知其尚未完成接收準(zhǔn)備的幀,過載幀由過載標(biāo)志和過載界定符構(gòu)成。
過載標(biāo)志由6個(gè)位的顯性位組成,過載標(biāo)志的構(gòu)成與主動(dòng)錯(cuò)誤標(biāo)志的構(gòu)成相同。
過載標(biāo)志其形式破壞了間歇場(chǎng)的固定格式,結(jié)果使其他所有節(jié)點(diǎn)也檢測(cè)到了一個(gè)出錯(cuò)狀態(tài),就都各自送出一個(gè)超載標(biāo)志。
過載界定符由8個(gè)位的隱性位組成,過載界定符的構(gòu)成與錯(cuò)誤界定符的構(gòu)成相同。過載標(biāo)志發(fā)送完畢后,每個(gè)節(jié)點(diǎn)都對(duì)總線進(jìn)行監(jiān)察,直到檢測(cè)到一個(gè)隱性位為止。此時(shí),每個(gè)節(jié)點(diǎn)均已發(fā)送完各自的過載標(biāo)志,接著所有節(jié)點(diǎn)還要同時(shí)開始發(fā)送7個(gè)隱性位,配齊長(zhǎng)達(dá)8位的過載界定符。
過載幀的構(gòu)成如下圖所示:
6
CAN幀間隔
幀間隔是用于分隔數(shù)據(jù)幀和遙控幀的幀。數(shù)據(jù)幀和遙控幀可通過插入幀間隔將本幀與前面的任何幀(數(shù)據(jù)幀、遙控幀、錯(cuò)誤幀、過載幀)分開,過載幀和錯(cuò)誤幀前不能插入幀間隔。
幀間隔的構(gòu)成如下圖所示:
幀間隔由間隔段、總線空閑段和延遲傳送段組成,具體說明如下所示:
間隔段:間歇由3個(gè)隱性位構(gòu)成。在間歇期間,不允許任何節(jié)點(diǎn)發(fā)送數(shù)據(jù)幀或遠(yuǎn)程幀。唯一可以執(zhí)行的操作是通報(bào)超載狀態(tài);
總線空閑段:總線空閑時(shí)間長(zhǎng)短不限??偩€一經(jīng)確認(rèn)處于空閑狀態(tài),則任何節(jié)點(diǎn)都可以訪問總線來傳送信息。因另一幀正在傳送而延期發(fā)送的幀是從間歇之后的第一位開始送出的。通過對(duì)總線進(jìn)行檢測(cè),出現(xiàn)在總線空閑期間的顯性位將被認(rèn)為是幀起始;
延遲傳送段:處于錯(cuò)誤認(rèn)可狀態(tài)的節(jié)點(diǎn)完成其發(fā)送動(dòng)作后,在被允許發(fā)送下一幀以前,它要在間歇之后送出8個(gè)隱性位。如果間歇期間執(zhí)行了(由另一個(gè)節(jié)點(diǎn)引起的)發(fā)送動(dòng)作,此節(jié)點(diǎn)將會(huì)變成正被發(fā)送的幀的接收器。
7
為什么會(huì)出現(xiàn)CAN FD?
隨著總線技術(shù)在汽車電子領(lǐng)域越來越廣泛和深入的應(yīng)用,特別是自動(dòng)駕駛技術(shù)的迅速發(fā)展,汽車電子對(duì)總線寬度和數(shù)據(jù)傳輸速率的要求也越來也高,傳統(tǒng)CAN(1MBit/s,8Bytes?Payload)已難以滿足日益增加的需求。
因此在2012年,Bosch發(fā)布了新的CAN FD標(biāo)準(zhǔn) (CAN with Flexible Data Rate) ,CAN FD繼承了CAN的絕大多數(shù)特性,如同樣的物理層,雙線串行通信協(xié)議,基于非破壞性仲裁技術(shù),分布式實(shí)時(shí)控制,可靠的錯(cuò)誤處理和檢測(cè)機(jī)制等,同時(shí)CAN FD彌補(bǔ)了CAN在總線帶寬和數(shù)據(jù)長(zhǎng)度方面的不足。
2015年6月30日,國(guó)際標(biāo)準(zhǔn)化組織(ISO)已經(jīng)正式認(rèn)可CAN?FD,并無反對(duì)****通過ISO 11898-1作為國(guó)際標(biāo)準(zhǔn)草案。
8
什么是CAN FD?
CAN FD協(xié)議是由Bosch以及行業(yè)專家預(yù)研開發(fā)的,并于2012年發(fā)布。通過標(biāo)準(zhǔn)化對(duì)其進(jìn)行了改進(jìn),現(xiàn)已納入ISO 11898-1:2015。一開始的Bosch CAN FD版本(非ISO CAN FD)與ISO CAN FD是不兼容。
CAN FD具有以下4個(gè)主要優(yōu)點(diǎn):
1、增加了數(shù)據(jù)的長(zhǎng)度
CAN FD每個(gè)數(shù)據(jù)幀最多支持64個(gè)數(shù)據(jù)字節(jié),而傳統(tǒng)CAN最多支持8個(gè)數(shù)據(jù)字節(jié)。這減少了協(xié)議開銷,并提高了協(xié)議效率。
2、增加傳輸?shù)乃俣?/p>
CAN FD支持雙比特率:與傳統(tǒng)CAN一樣,標(biāo)稱(仲裁)比特率限制為1 Mbit/s,而數(shù)據(jù)比特率則取決于網(wǎng)絡(luò)拓?fù)?收發(fā)器。實(shí)際上,可以實(shí)現(xiàn)高達(dá)5 Mbit/s的數(shù)據(jù)比特率。
3、更好的可靠性
CAN FD使用改進(jìn)的循環(huán)冗余校驗(yàn)(CRC)和“受保護(hù)的填充位計(jì)數(shù)器”,從而降低了未被檢測(cè)到的錯(cuò)誤的風(fēng)險(xiǎn)。這在汽車和工業(yè)自動(dòng)化等安全攸關(guān)的應(yīng)用中至關(guān)重要。
4、平滑過渡
在一些特定的情況下CAN FD能用在僅使用傳統(tǒng)CAN的ECU上,這樣就可以逐步引入CAN FD節(jié)點(diǎn),從而為OEM簡(jiǎn)化程序和降低成本。
實(shí)際上,與傳統(tǒng)CAN相比,CAN FD可以將網(wǎng)絡(luò)帶寬提高3到8倍,從而為數(shù)據(jù)的增長(zhǎng)提供了一種簡(jiǎn)單的解決方案。
9
CAN FD和CAN總線協(xié)議幀異同
CAN FD和CAN總線協(xié)議幀格式如下所示:
CAN FD和CAN總線協(xié)議幀不同點(diǎn)如下所示:
1、傳輸速率不同
CAN FD的速率可變,從控制場(chǎng)中的BRS位到ACK場(chǎng)之前(含CRC分界符)為可變速率,最高速率可達(dá)到8Mbps,其他部分與CAN相同。
2、數(shù)據(jù)長(zhǎng)度不同
CAN FD支持的最大數(shù)據(jù)長(zhǎng)度為64byte,CAN支持的最大數(shù)據(jù)長(zhǎng)度為8byte。
3、幀格式不同
CAN FD新增了FDF、BRS、ESI位:
FDF 位(Flexible Data Rate Format):原 CAN 數(shù)據(jù)幀中的保留位 r。表示 CAN 報(bào)文還是 CAN-FD 報(bào)文,F(xiàn)DF 位常為隱性(1),表示 CAN FD 報(bào)文;
BRS 位( Bit Rate Switch):表示位速率轉(zhuǎn)換,當(dāng) BRS 為顯性位(0)時(shí)數(shù)據(jù)段的位速率與仲裁段的位速率一致(恒定速率),當(dāng) BRS 為隱性位(1)時(shí)速率可變(即 BSR 到 CRC 使用轉(zhuǎn)換速率傳輸);
ESI 位(Error State Indicator):發(fā)送節(jié)點(diǎn)錯(cuò)誤狀態(tài)指示,主動(dòng)錯(cuò)誤時(shí)發(fā)送顯性位(0),被動(dòng)錯(cuò)誤時(shí)發(fā)送隱性位(1)。
4、ID長(zhǎng)度不同
CAN FD標(biāo)準(zhǔn)幀ID長(zhǎng)度可擴(kuò)展至12bit,CAN的標(biāo)準(zhǔn)幀ID為11bit。
10
解析CAN FD幀結(jié)構(gòu)
CAN FD節(jié)點(diǎn)可以正常收、發(fā)CAN報(bào)文,但CAN節(jié)點(diǎn)不能正確收、發(fā)CAN FD報(bào)文,因?yàn)槠鋷袷讲灰恢隆?/p>
與CAN一樣,CAN FD一共具有:幀起始,仲裁段,控制段,數(shù)據(jù)段,CRC段,ACK段和幀結(jié)束,7部分組成。
10.1、幀起始
CAN與CANFD使用相同的SOF標(biāo)志位來標(biāo)志報(bào)文的起始。幀起始由1個(gè)顯性位構(gòu)成,標(biāo)志著報(bào)文的開始,并在總線上起著同步作用。
10.2、仲裁段
與CAN不同,CAN FD取消了對(duì)遠(yuǎn)程幀的支持,用RRS位替換了RTR位,為常顯性。IDE用于區(qū)分標(biāo)準(zhǔn)幀和擴(kuò)展幀。
10.3、控制段
CAN FD與CAN有著相同的IDE、res和DLC位,同時(shí)增加了FDF、BRS、ESI三個(gè)bit位。
FDF 位(Flexible Data Rate Format):原 CAN 數(shù)據(jù)幀中的保留位 r。表示 CAN 報(bào)文還是 CAN-FD 報(bào)文,F(xiàn)DF 位常為隱性(1),表示 CAN FD 報(bào)文;
BRS 位( Bit Rate Switch):表示位速率轉(zhuǎn)換,當(dāng) BRS 為顯性位(0)時(shí)數(shù)據(jù)段的位速率與仲裁段的位速率一致(恒定速率),當(dāng) BRS 為隱性位(1)時(shí)速率可變(即 BSR 到 CRC 使用轉(zhuǎn)換速率傳輸);
ESI 位(Error State Indicator):發(fā)送節(jié)點(diǎn)錯(cuò)誤狀態(tài)指示,主動(dòng)錯(cuò)誤時(shí)發(fā)送顯性位(0),被動(dòng)錯(cuò)誤時(shí)發(fā)送隱性位(1)。
10.4、數(shù)據(jù)段
CAN FD兼容CAN的數(shù)據(jù)格式,同時(shí)最大還能支持:12、16、 20、 24、 32、 48和64byte。
像在傳統(tǒng)CAN中一樣,CAN FD DLC是4位,表示幀中數(shù)據(jù)字節(jié)的數(shù)量。為了維持4位DLC,CAN FD使用從9到15的其余7個(gè)值來表示所使用的數(shù)據(jù)字節(jié)數(shù)(12、16、20、24、32、48、64)。
10.5、CRC段
傳統(tǒng)CAN中的循環(huán)冗余校驗(yàn)(CRC)為15位,而在CAN FD中為17位(最多16個(gè)數(shù)據(jù)字節(jié))或21位(20-64個(gè)數(shù)據(jù)字節(jié))。在傳統(tǒng)CAN中,CRC中可以包含0到3個(gè)填充位,而在CAN FD中,總是有四個(gè)固定填充位以提高通信可靠性。
10.6、ACK段
ACK緊跟著CRC結(jié)束標(biāo)識(shí)位。不同的是,CAN FD支持2bits的ACK的識(shí)別。
10.7、幀結(jié)束
與CAN一樣,CAN FD的幀結(jié)尾也為連續(xù)7位的隱性位。
11
CAN FD的改進(jìn)
CAN FD采用了兩種方式來提高通信的效率:一種方式為縮短位時(shí)間提高位速率;另一種方式為加長(zhǎng)數(shù)據(jù)場(chǎng)長(zhǎng)度減少報(bào)文數(shù)量降低總線負(fù)載率。
CAN FD在 CRC 校驗(yàn)段采用了三種多項(xiàng)式來保證高速通訊下的數(shù)據(jù)可靠性。
1、縮短位時(shí)間提高位速率
CAN FD支持雙比特率,與傳統(tǒng)CAN一樣,標(biāo)稱(仲裁)比特率限制為1 Mbit/s,而數(shù)據(jù)比特率則取決于網(wǎng)絡(luò)拓?fù)?收發(fā)器。實(shí)際上,可以實(shí)現(xiàn)高達(dá)5 Mbit/s的數(shù)據(jù)比特率。
從控制段中的 BRS 位到 ACK 段之前(含 CRC 分界符)為可變速率,其余部分為原 CAN 總線用的速率。兩種速率各有一套位時(shí)間定義寄存器,它們除了采用不同的位時(shí)間單位 TQ 外,位時(shí)間各段的分配比例也可不同。
2、加長(zhǎng)數(shù)據(jù)段長(zhǎng)度減少報(bào)文數(shù)量降低總線負(fù)載率
CAN FD每個(gè)數(shù)據(jù)幀最多支持64個(gè)數(shù)據(jù)字節(jié),而傳統(tǒng)CAN最多支持8個(gè)數(shù)據(jù)字節(jié),這減少了協(xié)議開銷,并提高了協(xié)議效率。
DLC 最大支持 64 個(gè)字節(jié),在 DLC 小于等于 8 時(shí)與原 CAN 總線是一樣的,大于 8 時(shí)則有一個(gè)非線性的增長(zhǎng),最大的數(shù)據(jù)場(chǎng)長(zhǎng)度可達(dá) 64 字節(jié)。如下所示為 DLC 數(shù)值與字節(jié)數(shù)的非線性對(duì)應(yīng)關(guān)系。
3、CRC校驗(yàn)段
CAN FD使用改進(jìn)的循環(huán)冗余校驗(yàn)(CRC)和“受保護(hù)的填充位計(jì)數(shù)器”,由于 DLCs 的長(zhǎng)度不同,在 DLC 大于 8 個(gè)字節(jié)時(shí),CAN FD選擇了兩種新的 BCH 型 CRC 多項(xiàng)式,從而降低了未被檢測(cè)到的錯(cuò)誤的風(fēng)險(xiǎn)。
12
如何從傳統(tǒng)的CAN升級(jí)到CAN FD
盡管 CANFD 繼承了絕大部分傳統(tǒng) CAN 的特性,但是從傳統(tǒng) CAN 到 CANFD 的升級(jí), 我們?nèi)孕枰龊芏嗟墓ぷ鳌?/p>
1、在硬件和工具方面,要使用 CANFD,首先要選取支持 CANFD 的 CAN 控制器和收發(fā)器,還要選取新的網(wǎng)絡(luò)調(diào)試和監(jiān)測(cè)工具。
2、在網(wǎng)絡(luò)兼容性方面,對(duì)于傳統(tǒng) CAN 網(wǎng)段的部分節(jié)點(diǎn)需要升級(jí)到 CANFD 的情況要特別注意,由于幀格式不一致的原因,CANFD 節(jié)點(diǎn)可以正常收發(fā)傳統(tǒng) CAN 節(jié)點(diǎn)報(bào)文,但是傳統(tǒng) CAN 節(jié)點(diǎn)不能正常收發(fā) CANFD 節(jié)點(diǎn)的報(bào)文。
CAN FD 協(xié)議是 CAN-BUS 協(xié)議的最新升級(jí),將 CAN 的每幀 8 字節(jié)數(shù)據(jù)提高到 64 字節(jié),波特率從最高的 1Mbps 提高到 8-15Mbps,使得通訊效率提高 8 倍以上,大大提升了車輛的通訊效率。
此項(xiàng)技術(shù)一直被歐美企業(yè)壟斷,直至 2016 年,中國(guó) CAN-BUS 領(lǐng)導(dǎo)者—廣州致遠(yuǎn)電子股份有限公司,基于擁有完全知識(shí)產(chǎn)權(quán)的 CAN FD IP 核代碼,研制出中國(guó)第一款 CAN FD 接口卡,使中國(guó)的總線技術(shù)水平與世界最高水平同步。
*博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請(qǐng)聯(lián)系工作人員刪除。