當(dāng)前位置:首頁(yè) > 學(xué)習(xí)資源 > 講師博文 > CAN FD通信協(xié)議
一、什么是CAN FD
CANFD(CAN Flexible Data-Rate)是CAN通信協(xié)議的一種變種,它支持高速數(shù)據(jù)傳輸,同時(shí)保持低成本、簡(jiǎn)單的特性。CANFD使用高速位速率傳輸數(shù)據(jù),允許更高的數(shù)據(jù)吞吐量,并且通常與現(xiàn)有的CAN硬件兼容。
在CANFD網(wǎng)絡(luò)中,節(jié)點(diǎn)可以以不同的位速率(Flexible Data-Rate, FDR)同時(shí)發(fā)送數(shù)據(jù)。FDR可以是5Kbps到1Mbps之間的任何值,并且可以在通信過(guò)程中動(dòng)態(tài)改變。
在《 通信總線協(xié)議之CAN總線協(xié)議詳解 》中介紹了CAN 2.0 A/B總線協(xié)議,但是隨著總線技術(shù)在汽車電子領(lǐng)域越來(lái)越廣泛的應(yīng)用,特別是自動(dòng)駕駛技術(shù)的迅速發(fā)展,汽車電子對(duì)總線寬度和數(shù)據(jù)傳輸速率的要求也越來(lái)越高,傳統(tǒng)CAN(1MBit/s,8Bytes Payload)已難以滿足日益增加的需求。
因此,一種能夠與CAN 2.0 A/B兼容,但通信速率更高,有效載荷更高的CAN總線 :CAN-FD總線協(xié)議應(yīng)運(yùn)而生,在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)度方面的不足。
二、 CAN FD的特點(diǎn)
CAN FD傳輸速率是可變的:從控制場(chǎng)中的BRS位到ACK場(chǎng)之前(含CRC分界符)為可變速率,最高速率可達(dá)到8Mbps
CAN FD數(shù)據(jù)長(zhǎng)度不同:CAN FD每個(gè)數(shù)據(jù)幀最多支持64個(gè)數(shù)據(jù)字節(jié),而傳統(tǒng)CAN最多支持8個(gè)數(shù)據(jù)字節(jié),這減少了協(xié)議開銷,并提高了協(xié)議效率。
CAN FD幀格式不同:CanFD新增了FDF、BRS、ESI位
FDF 位(Flexible Data Rate Format):原 CAN 數(shù)據(jù)幀中的保留位 r,用來(lái)區(qū)別是 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 。
三. CAN-FD總線協(xié)議
1、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部分組成。
2、 幀起始
CAN FD與CAN使用相同的SOF標(biāo)志位來(lái)標(biāo)志報(bào)文的起始幀起始由1個(gè)顯性位構(gòu)成,標(biāo)志著報(bào)文的開始,并在總線上起著同步的作用。
3、 仲裁段
與傳統(tǒng)CAN相比,CAN FD取消了遠(yuǎn)程幀,用RRS位替換了RTR位,為常顯性;
RTR(Remote Transmission Request Bit):遠(yuǎn)程發(fā)送請(qǐng)求位,RTR位在數(shù)據(jù)幀里必須是顯性,而在遠(yuǎn)程幀里為隱性
RRS(Remote Request Substitution):遠(yuǎn)程請(qǐng)求替換位,即傳統(tǒng)CAN中的RTR位,CAN FD中為常顯性
IDE位仍為標(biāo)準(zhǔn)幀和擴(kuò)展幀標(biāo)志位,若標(biāo)準(zhǔn)幀與擴(kuò)展幀具有相同的前 11 位 ID,那么標(biāo)準(zhǔn)幀將會(huì)由于 IDE 位為 0,優(yōu)先獲得總線;
4、 控制段
控制段中CANFD與CAN有著相同的IDE,res,DLC位;同時(shí)增加了三個(gè)控制bit位,F(xiàn)DF、BRS、ESI;
FDF(Flexible Data Rate Format):原CAN數(shù)據(jù)幀中的保留位r,F(xiàn)DF常為隱性,表示CAN FD 報(bào)文;
BRS(Bit Rate Switch):位速率轉(zhuǎn)換開關(guān),當(dāng)BRS為顯性位時(shí)數(shù)據(jù)段的位速率與仲裁段的位速率一致,當(dāng)BRS為隱性位時(shí)數(shù)據(jù)段的位速率高于仲裁段的位速率;
ESI(Error State Indicator):錯(cuò)誤狀態(tài)指示,主動(dòng)錯(cuò)誤時(shí)發(fā)送顯性位,被動(dòng)錯(cuò)誤時(shí)發(fā)送隱性位;
DLC同樣是4bit表示數(shù)據(jù)段的長(zhǎng)度,對(duì)應(yīng)的關(guān)系如下:
5、 數(shù)據(jù)段
數(shù)據(jù)段即為傳輸?shù)木唧w數(shù)據(jù)內(nèi)容
CAN FD不僅能支持傳統(tǒng)的0-8字節(jié)報(bào)文,同時(shí)可以支持12, 16, 20, 24, 32, 48, 64字節(jié)
6、 CRC段
為了避免位填充對(duì)CRC的影響,CAN FD在CRC場(chǎng)中增加了stuff count記錄填充位的個(gè)數(shù)對(duì)應(yīng)8的模,并用格雷碼表示,還增加了奇偶校驗(yàn)位;且在CRC中加入了填充位FSB(fixed stuff-bit)
Stuff Count由以下兩個(gè)元素組成:
格雷碼計(jì)算:CRC區(qū)域之前的填充位數(shù)除以8,得到的余數(shù)(Stuff bit count modulo 8)進(jìn)行格雷碼計(jì)算得到的值(Bit 0-2)
奇偶校驗(yàn)(parity):通過(guò)格雷碼計(jì)算后的值的奇偶校驗(yàn)(偶校驗(yàn))
CAN FD對(duì)CRC算法進(jìn)行了改進(jìn),CRC對(duì)填充位也加入了計(jì)算;在校驗(yàn)部分為避免有連續(xù)位超過(guò)6個(gè),就確定在第一位以及以后每4位添加一個(gè)填充位加以分割,這個(gè)填充位的值是上一位的反碼,作為格式檢查,如果填充位不是上一位的反碼,就作出錯(cuò)處理。
CAN的CRC的位數(shù)是15位,而在CAN FD中,CRC場(chǎng)擴(kuò)展到了21位,如下:
當(dāng)傳輸數(shù)據(jù)為0~8字節(jié)時(shí):CRC 15位
當(dāng)傳輸數(shù)據(jù)為9~16字節(jié)時(shí):CRC 17位
當(dāng)傳輸數(shù)據(jù)為17~64個(gè)字節(jié)時(shí):CRC 21位
7、 ACK段
與CAN相比,在CAN FD中最多可接受2個(gè)位時(shí)間有效的ACK,允許1個(gè)額外的位時(shí)間來(lái)補(bǔ)償收發(fā)器相移和傳播延遲
由從高速的數(shù)據(jù)場(chǎng)到慢速的仲裁場(chǎng)時(shí),時(shí)鐘切換會(huì)引起收發(fā)器相移和總線傳播延遲;為了補(bǔ)償其相移和延遲,相比傳統(tǒng)的CAN,在CAN FD中多加了這額外的1位時(shí)間
在ACK之后,發(fā)送ACK界定符,這是一個(gè)表示ACK結(jié)束的分隔符,用1位隱性位表示
8、 幀結(jié)束
與CAN一樣,CAN FD的幀結(jié)尾也為連續(xù)7位的隱性位
四. 如何從傳統(tǒng)的CAN升級(jí)到CAN FD
盡管 CANFD 繼承了絕大部分傳統(tǒng) CAN 的特性,但是從傳統(tǒng) CAN 到 CANFD 的升級(jí), 仍需要做很多的工作,主要包括:
在硬件和工具方面,要使用 CANFD,首先要選取支持 CANFD 的 CAN 控制器和收發(fā)器,還要選取新的網(wǎng)絡(luò)調(diào)試和監(jiān)測(cè)工具;
在網(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)文;
五、CANFD與CAN的主要區(qū)別
六、CANFD的應(yīng)用優(yōu)勢(shì)
更高的數(shù)據(jù)傳輸速率:滿足現(xiàn)代汽車電子系統(tǒng)對(duì)高速數(shù)據(jù)傳輸?shù)男枨蟆?/p>
更大的數(shù)據(jù)負(fù)載能力:支持單個(gè)數(shù)據(jù)幀內(nèi)傳輸更多數(shù)據(jù),減少數(shù)據(jù)分拆傳輸?shù)男枨蟆?/p>
保持實(shí)時(shí)性和可靠性:繼承了CAN協(xié)議的實(shí)時(shí)性和可靠性優(yōu)勢(shì)。
七、未來(lái)發(fā)展趨勢(shì)
隨著汽車電子系統(tǒng)的不斷發(fā)展,CANFD協(xié)議將在未來(lái)繼續(xù)發(fā)揮重要作用。同時(shí),隨著技術(shù)的不斷進(jìn)步,可能還會(huì)出現(xiàn)更加先進(jìn)的通信協(xié)議來(lái)滿足更高的數(shù)據(jù)傳輸需求。然而,CANFD協(xié)議作為當(dāng)前汽車電子系統(tǒng)中廣泛應(yīng)用的通信協(xié)議之一,其地位在短期內(nèi)難以被替代。