MCU沒有CAN或CAN接口數(shù)量不夠怎么辦?目前市面上有串口轉(zhuǎn)CAN的相關(guān)模塊或設(shè)備,但大家知道串口轉(zhuǎn)CAN是如何實(shí)現(xiàn)的嗎?轉(zhuǎn)換后的幀格式是如何的?本文將為大家詳細(xì)介紹串口經(jīng)過轉(zhuǎn)換后的CAN幀格式與注意事項(xiàng)。
適用場景
串口轉(zhuǎn)CAN模塊在什么時(shí)候需要用到呢?一是老產(chǎn)品面臨升級,需要用到CAN總線通信,但硬件平臺中的MCU沒有集成CAN總線的控制器。二是選用的MCU已經(jīng)包含CAN總線接口,但數(shù)量上不能滿足項(xiàng)目需求。若出現(xiàn)類似以上兩種情況且MCU有閑置串口,則可以選用串口轉(zhuǎn)CAN模塊解決。
圖1 應(yīng)用行業(yè)
使用方法
該類模塊可以很方便地嵌入到具有UART接口的設(shè)備中,在不需改變原有硬件結(jié)構(gòu)的前提下使設(shè)備獲得CAN-bus通訊接口,實(shí)現(xiàn)具有UART設(shè)備和CAN-bus網(wǎng)絡(luò)之間的數(shù)據(jù)通訊。工業(yè)級的轉(zhuǎn)換模塊內(nèi)部還包括實(shí)現(xiàn)帶隔離的CAN和UART轉(zhuǎn)換所必須的模擬和數(shù)字器件、光電耦合器、DC/DC變換器、CAN-bus接口等。
圖2 產(chǎn)品架構(gòu)
轉(zhuǎn)換說明
CSM100系列模塊提供3種協(xié)議轉(zhuǎn)換方式:透明轉(zhuǎn)換、透明帶標(biāo)示轉(zhuǎn)換、自定義協(xié)議轉(zhuǎn)換。下面以CSM100系列的模塊簡述模塊的透明轉(zhuǎn)換格式。
該模式下,CSM100接收到一側(cè)總線的數(shù)據(jù)就立即轉(zhuǎn)換發(fā)送至另一總線側(cè)。該模式下的模塊數(shù)據(jù)轉(zhuǎn)換效率最高,能承擔(dān)較大流量的數(shù)據(jù)傳輸。串行幀轉(zhuǎn)CAN幀時(shí),模塊將來自串口的數(shù)據(jù)直接打包,并插入預(yù)先配置的CAN幀信息、幀ID一同作為一幀數(shù)據(jù)發(fā)送到總線上。同理,來自CAN總線上的數(shù)據(jù)將按順序拆分為字節(jié)流發(fā)送到串口上,字節(jié)流的前幾個(gè)字節(jié)為該CAN幀的信息。
圖3 轉(zhuǎn)換方式
說到這,大家肯定有個(gè)疑惑,CAN幀的信息及CAN幀ID是如何表示的呢?
幀信息主要用來區(qū)分標(biāo)準(zhǔn)幀、擴(kuò)展幀,長度為1個(gè)字節(jié)。在“自定義協(xié)議轉(zhuǎn)換”中,標(biāo)準(zhǔn)幀固定為 0x00, 擴(kuò)展幀固定為 0x80; 在“透明轉(zhuǎn)換”“透明帶標(biāo)識轉(zhuǎn)換” 中, 標(biāo)準(zhǔn)幀為 0x0_,擴(kuò)展幀為 0x8_,其中“_” 代表每個(gè)幀中的數(shù)據(jù)域長度, 范圍為 0~8。
標(biāo)準(zhǔn)幀的幀ID拆分為2個(gè)字節(jié)表示,擴(kuò)展幀的幀ID拆分為4個(gè)字節(jié)表示。如果實(shí)際配置時(shí)給幀ID預(yù)留的只有一個(gè)字節(jié)且?guī)愋蜑閿U(kuò)展幀,方向是CAN幀轉(zhuǎn)串行幀,那么將只能得到幀ID的高8位。如果實(shí)際配置時(shí)給幀ID預(yù)留的只有一個(gè)字節(jié)且?guī)愋蜑閿U(kuò)展幀,方向是串行幀轉(zhuǎn)CAN幀,那么將幀ID的高8位正常填充,其他三字節(jié)全補(bǔ)零。
圖4 幀ID轉(zhuǎn)換說明
假設(shè)配置的轉(zhuǎn)換成的CAN報(bào)文幀信息為“標(biāo)準(zhǔn)幀”,配置的幀ID1,ID0分別為“0x01,0x23”,串行幀的數(shù)據(jù)為01,02,03,04,05,06,07,08共8個(gè)字節(jié),那么轉(zhuǎn)換格式如圖5。CAN報(bào)文的幀ID為0x0123(用戶配置),幀信息:標(biāo)準(zhǔn)幀(用戶配置),串行幀中的數(shù)據(jù)部分將不作任何修改地轉(zhuǎn)換到CAN報(bào)文中。
圖5 串行幀到CAN幀
假設(shè)CAN報(bào)文中幀ID1為0x01,幀ID0為 0x23,數(shù)據(jù)為0x12,0x34,0x56,0x78,0xab,0xcd,0xef,0xff,則CAN報(bào)文和轉(zhuǎn)換后的串行幀如圖6。CAN報(bào)文的幀信息(0x08)轉(zhuǎn)換到串行幀中的第1個(gè)字節(jié)(0x08),CAN報(bào)文中的ID:0x0123依次轉(zhuǎn)換到串行幀中的第2個(gè)字節(jié)(0x01)及第3個(gè)字節(jié)(0x23)。CAN報(bào)文的數(shù)據(jù)域?qū)⒉蛔魅魏涡薷牡剞D(zhuǎn)換到串行幀中的數(shù)據(jù)部分。
圖6 CAN幀到串行幀
總結(jié)
以上為串口轉(zhuǎn)CAN透明格式下的轉(zhuǎn)換方式,后續(xù)筆者將新增透明帶標(biāo)示轉(zhuǎn)換、自定義協(xié)議轉(zhuǎn)換以及moudbus轉(zhuǎn)換的內(nèi)容,歡迎持續(xù)關(guān)注。
-
CAN
+關(guān)注
關(guān)注
57文章
2694瀏覽量
463142 -
串口
+關(guān)注
關(guān)注
14文章
1540瀏覽量
76059
原文標(biāo)題:串口數(shù)據(jù)轉(zhuǎn)換為CAN數(shù)據(jù)之后是怎樣的?
文章出處:【微信號:ZLG_zhiyuan,微信公眾號:ZLG致遠(yuǎn)電子】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論