【導(dǎo)讀】在如今CAN總線應(yīng)用越來越廣泛的今天,很多人都開始學(xué)習(xí)使用這一技術(shù),但是由于CAN總線協(xié)議的復(fù)雜度,不少IT新人只能淺嘗輒止。本文將介紹如何運用嵌入式UART轉(zhuǎn)CAN模塊來解決這一問題。
一、CSM100產(chǎn)品簡介
CSM100系列UART轉(zhuǎn)CAN模塊是集成微處理器、CAN-bus 控制器、CAN-bus收發(fā)器、DC-DC轉(zhuǎn)換、高速光電隔離于一體的嵌入式UART 轉(zhuǎn)CAN 模塊,用戶可以不深入了解CAN-bus的相關(guān)知識,利用此芯片操作CAN-bus就如同操作UART 一樣方便。
模塊具有2種轉(zhuǎn)換方式包括透明轉(zhuǎn)換方式和透明帶標(biāo)示轉(zhuǎn)換方式。其中透明轉(zhuǎn)換方式會預(yù)先設(shè)定數(shù)據(jù)幀ID,串口只需要發(fā)送報文數(shù)據(jù)段信息,其余信息模塊會自動填充完整。透明帶標(biāo)識轉(zhuǎn)換方式通過既定的協(xié)議格式可以將CAN總線報文的類型、ID轉(zhuǎn)發(fā)到串口數(shù)據(jù)的相應(yīng)字段。這兩種方式在不同應(yīng)用場景下靈活組合可以實現(xiàn)多種功能。
二、應(yīng)用方案
CSM100這個小模塊不僅僅是做串口與CAN數(shù)據(jù)的轉(zhuǎn)換,在很多應(yīng)用場景中起著必不可少的作用。下面就來介紹一下。
1、為缺少CAN控制器的單片機(jī)提供CAN接口
雖然如今已經(jīng)不再是51單片機(jī)橫行的時代,但是仍然不是所有的MCU都具備CAN控制器,如果在某個項目中需要擴(kuò)展CAN通訊而恰好我們的主控平臺沒有CAN外設(shè),那么選擇CSM100就是一個絕佳的選擇。只要主控上還有多余的URAT資源就可以利用它輕松的擴(kuò)展。擴(kuò)展方式如圖2所示。
2、為點對點設(shè)備提供組網(wǎng)條件
我們都知道CAN總線是一種多主總線,可以實現(xiàn)多節(jié)點組網(wǎng)通訊,自帶優(yōu)先級仲裁機(jī)制,可有效防止數(shù)據(jù)沖突。基于這一優(yōu)點,可以利用CSM100模塊為點對點通訊設(shè)備提供組網(wǎng)的條件。例如,某些串口接口的傳感器,如果我們需要把多個傳感器的數(shù)據(jù)讀到MCU而MCU的串口數(shù)量不足怎么辦呢?
如圖3所示,與傳感器對接的CSM100模塊設(shè)定為透明轉(zhuǎn)換模式,并通過設(shè)定不同的地址ID加以區(qū)分。這樣全部傳感器的數(shù)據(jù)就可以共同在一條線路上傳輸了,不用為數(shù)據(jù)沖突或者找不到數(shù)據(jù)發(fā)送源而擔(dān)心。與主控對接的CSM100模塊設(shè)定為透明帶標(biāo)識轉(zhuǎn)換模式。這樣主控接收到的串口數(shù)據(jù)流中就包含了不同傳感器的地址ID信息了。
3、簡易隔離中繼設(shè)備
在很多CAN-bus總線的應(yīng)用現(xiàn)場,我們可能會碰到這些問題,例如遠(yuǎn)距離通訊質(zhì)量不穩(wěn)定,或者對接兩個速率不同的網(wǎng)絡(luò),亦或是想把網(wǎng)絡(luò)中的某些干擾較強(qiáng)的節(jié)點做隔離。這時我們可以使用兩個CSM100模塊實現(xiàn)一個簡易的CAN總線中繼功能。
如圖4所示,將兩個CSM100的UART口交叉對接,設(shè)定工作模式為透明帶標(biāo)識符傳輸,分別設(shè)置各自對接CAN網(wǎng)絡(luò)的通訊波特率參數(shù)。這樣CAN總線的報文數(shù)據(jù)會先轉(zhuǎn)換成串口再轉(zhuǎn)換為CAN數(shù)據(jù),信號得到了放大和隔離。