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