摘要:CANFD節(jié)點(diǎn)如何與經(jīng)典CAN總線正常通信呢?本文為您介紹CANFD與經(jīng)典CAN快速融合的思路與方法。
一、CANFD的來源
隨著汽車電子行業(yè)的快速發(fā)展,越來越多的安全輔助ECU、影音娛樂ECU加入到車身總線中,這就對CAN總線數(shù)據(jù)傳送速率提出了更高的要求。基于市場需求,更高傳輸速率,更多數(shù)據(jù)載荷的CANFD應(yīng)運(yùn)而生。
相比于經(jīng)典CAN,CANFD有兩個(gè)顯著特點(diǎn):
一是可變速率,CAN FD的傳輸速率分為兩個(gè)頻段,從BRS位開始到CRC校驗(yàn)之前這一段是可變速率段,這一段的波特率可以進(jìn)行加速,理論最高可達(dá)到5Mbit/s,而其他位置則和CAN2.0一樣,最高速率可達(dá)到1Mbit/s;
二是數(shù)據(jù)場長度增加,CAN FD對數(shù)據(jù)場的長度做了擴(kuò)充,從CAN的8字節(jié)增加到CAN FD的64字節(jié)。
圖1CANFD的提速與擴(kuò)容
二、兼容性問題
從經(jīng)典CAN升級到CANFD需要更換哪些硬件呢?硬件更換包括兩部分:其一,CAN收發(fā)器,通信速率需要從滿足1Mbit/s提升到滿足5Mbit/s;其二,CAN控制器,鏈路層協(xié)議需完全按照CANFD設(shè)計(jì),對于CAN控制包含在微控制器內(nèi)的節(jié)點(diǎn),則需要更換MCU。
圖2CAN與CANFD的鏈路層對比
雖然CANFD設(shè)計(jì)時(shí)考慮到向下兼容,但鏈路層的根本改變使我們不得不面臨以下問題:經(jīng)典CAN節(jié)點(diǎn)發(fā)送的CAN幀能被CANFD節(jié)點(diǎn)識(shí)別,但CANFD節(jié)點(diǎn)發(fā)送的CANFD幀不能被經(jīng)典CAN節(jié)點(diǎn)識(shí)別,甚至被經(jīng)典CAN判定為錯(cuò)誤幀導(dǎo)致總線嚴(yán)重錯(cuò)誤。
三、解決思路
解決CANFD與經(jīng)典CAN兼容性的方法有兩種,一是將所有經(jīng)典CAN節(jié)點(diǎn)全部升級為CANFD,二是在經(jīng)典CAN網(wǎng)絡(luò)與CANFD網(wǎng)絡(luò)間加入合適的橋接器。顯然,設(shè)備的更新?lián)Q代不能一蹴而就,方法一必然帶來成本激增,因此方法二將是短期內(nèi)最優(yōu)解決方案。
CANFD網(wǎng)橋的設(shè)計(jì)思路是當(dāng)接收到CAN FD報(bào)文時(shí)采用直轉(zhuǎn)、合并、拆分三種方式實(shí)現(xiàn)傳統(tǒng)CAN的8字節(jié)長度和CAN FD的64字節(jié)長度的互相轉(zhuǎn)換,無損還原原有數(shù)據(jù)。
圖3CANFD橋接方法
四、CANFD網(wǎng)橋
CANFDBridge 作為 CAN(FD)智能網(wǎng)橋,支持ISO標(biāo)準(zhǔn)CANFD與Bosch CANFD標(biāo)準(zhǔn),支持 CAN 轉(zhuǎn) CAN、CAN 轉(zhuǎn)CANFD、CANFD轉(zhuǎn) CAN、CANFD轉(zhuǎn)CANFD 等報(bào)文默認(rèn)轉(zhuǎn)換處理。除此之外,還提供幀映射、合并和拆分等特殊轉(zhuǎn)換處理。用戶可自由設(shè)定 CAN(FD)報(bào)文的轉(zhuǎn)發(fā)映射、組包拆包等規(guī)則,滿足自身應(yīng)用需求。
圖4 工業(yè)級CANFD網(wǎng)橋CANFDBridge
1、每通道獨(dú)立的控制器類型設(shè)置、CANFD標(biāo)準(zhǔn)設(shè)置
每個(gè)通道都支持設(shè)置控制器類型,如圖5所示。當(dāng)選擇類型為 CAN 時(shí),只能收發(fā) CAN報(bào)文。用戶可將接到 CAN 總線的端口控制器類型設(shè)置為 CAN,可防止 CANFD 報(bào)文轉(zhuǎn)發(fā)到CAN 總線。當(dāng)選擇類型為 CANFD 時(shí), CAN 報(bào)文和 CANFD 報(bào)文都可以收發(fā)。
圖5控制器類型
每個(gè)通道支持設(shè)置 CANFD 協(xié)議標(biāo)準(zhǔn),如圖6所示。支持 ISO 標(biāo)準(zhǔn)和 Non-ISO 標(biāo)準(zhǔn)。
圖6CANFD協(xié)議
2、幀類型高級設(shè)置
可設(shè)置 CAN轉(zhuǎn)CANFD或CAN、CANFD轉(zhuǎn)CANFD或CAN,當(dāng)在 CAN→CAN、 CANFD→CANFD 時(shí)不改變幀數(shù)據(jù)。當(dāng)使用勾選“填充”功能后,CAN 報(bào)文數(shù)據(jù)長度等于 8 字節(jié)時(shí),會(huì)用填充數(shù)據(jù)將 CANFD報(bào)文填充至設(shè)置的 CANFD 報(bào)文數(shù)據(jù)長度,當(dāng) CAN 幀數(shù)據(jù)長度為 0~7 時(shí)填充無效, 轉(zhuǎn)換后的 CANFD 幀數(shù)據(jù)長度與 CAN 幀數(shù)據(jù)長度一樣;
圖7轉(zhuǎn)換設(shè)置
3、數(shù)據(jù)合并
合并功能用于將多個(gè) CAN 報(bào)文合并后轉(zhuǎn)換為 CANFD 報(bào)文。設(shè)置如圖8所示, 此設(shè)置使 CAN0 將 ID 為 0x01、 0x02、 0x03 的三個(gè)數(shù)據(jù)長度為8 的標(biāo)準(zhǔn) CAN 幀合并成 ID 為 0x123,數(shù)據(jù)長度為 24 的 CANFD 標(biāo)準(zhǔn)幀。
圖8經(jīng)典CAN數(shù)據(jù)合并CANFD
4、數(shù)據(jù)拆分
拆分功能用于將 CANFD 報(bào)文拆分成多個(gè) CAN 報(bào)文發(fā)送,設(shè)備最多支持設(shè)置 64 條拆分規(guī)則, 每條規(guī)則指定待拆分 CANFD 的幀 ID、幀類型及幀長度。如圖9所示設(shè)置,此設(shè)置將 ID 為 0xF1,長度為 64 字節(jié)的 CANFD 標(biāo)準(zhǔn)幀拆分為 8個(gè)數(shù)據(jù)長度為 8 字節(jié)的 CAN 標(biāo)準(zhǔn)幀, ID 分別為 0x00~0x07。
圖9CANFD拆分為經(jīng)典CAN幀
5、可靠性保證
為保證數(shù)據(jù)幀轉(zhuǎn)換的可靠性,CANFDBridge提供失敗回送設(shè)置。設(shè)置使能后 CANFDBridge 轉(zhuǎn)發(fā)失敗時(shí),會(huì)發(fā)送指定幀來告知發(fā)送方轉(zhuǎn)發(fā)失敗。示意圖如圖10所示。
圖10失敗回送機(jī)制
CAN與CANFD的橋接依靠CANFDBridge靈活的配置實(shí)現(xiàn),更多應(yīng)用細(xì)節(jié)請參閱相關(guān)產(chǎn)品手冊。