邊緣計算控制器鋇錸技術(shù)BL302怎么使用CAN口
CAN接口是一種用于實現(xiàn)車載網(wǎng)絡(luò)通信的接口,它可以支持多個設(shè)備之間的高速數(shù)據(jù)傳輸。它是由德國BOSCH公司開發(fā)的,并最終成為國際標(biāo)準(zhǔn)(ISO 11898),在北美和西歐,它已經(jīng)成為汽車計算機(jī)控制系統(tǒng)和嵌入式工業(yè)控制局域網(wǎng)的標(biāo)準(zhǔn)總線,并且擁有以CAN為底層協(xié)議專為大型貨車和重工機(jī)械車輛設(shè)計的J1939協(xié)議。

CAN接口主要應(yīng)用于汽車行業(yè),可以用于汽車控制、安全系統(tǒng)、車載娛樂系統(tǒng)等。此外,它還可以用于工業(yè)控制、醫(yī)療設(shè)備、家庭自動化等領(lǐng)域。
鋇錸技術(shù)嵌入式ARM控制器BL301/BL302系列是一款工業(yè)級堅固型工業(yè)控制器,采用NXP的高性能處理器I.MX6ULL,搭配先進(jìn)的ARM Cortex-A7構(gòu)架,運(yùn)行速度高達(dá)800MHz,具有高度的穩(wěn)定性。
鋇錸技術(shù)嵌入式ARM控制器BL301/BL302系列擁有4路RS485/RS232、1路CAN口、2路網(wǎng)口、2路DI口、2路PWM口輸出、1路USB 接口、1路電源輸入/輸出接口和1路HDMI視頻顯示接口,
鋇錸技術(shù)嵌入式ARM控制器BL301/BL302系列可運(yùn)行LINUX、Ubuntu、Debian等操作系統(tǒng),兼容Node-Red、QT、Python、C++等應(yīng)用程序,支持MySQL、InfluxDB、SQLite等數(shù)據(jù)庫。

本文主要講解鋇錸技術(shù)嵌入式ARM控制器BL301/BL302系列使用CAN口的教程

CAN接口如圖所示,輸入如下命令:
ifconfig -a?//查看所有網(wǎng)卡
如果FlexCAN驅(qū)動工作正常的話就會看到CAN對應(yīng)的網(wǎng)卡接口,如圖。從圖中可以看出,有一個名為“can0”的網(wǎng)卡,這個就是BL302板上的CAN1接口對應(yīng)的can網(wǎng)卡設(shè)備。

BL302板子上有一個CAN接口,如需測試CAN接口,還需要一個CAN設(shè)備,可以使用另一塊BL302板子,或者帶有CAN的板子進(jìn)行測試。
準(zhǔn)備兩塊BL302設(shè)備,然后將CAN接口連接起來,BL302設(shè)備上CAN接線端子如圖

將兩個設(shè)備的CAN接口連接起來,注意,CAN_H接CAN_H,CAN_L接CAN_L。
首先使用ip命令設(shè)置兩個設(shè)備的CAN接口,首先設(shè)置CAN接口的速度,輸入如下所示命令:
ip link set can0 type can bitrate 500000
上述命令設(shè)置can0速度為500Kbit/S,兩個CAN設(shè)備的速度要設(shè)置為一樣的!速度設(shè)置好以后打開can0網(wǎng)卡,命令如下:
ifconfig can0 up?//打開can0
can0打開以后就可以使用can-utils里面的小工具進(jìn)行數(shù)據(jù)收發(fā)測試了。一個設(shè)備用來接收數(shù)據(jù),一個用來發(fā)送數(shù)據(jù),接收數(shù)據(jù)的設(shè)備使用candump命令,輸入如下命令:
candump can0?//接收數(shù)據(jù)
發(fā)送數(shù)據(jù)的設(shè)備使用cansend命令向接收單元發(fā)送8個字節(jié)的數(shù)據(jù):0X11、0X22、0X33、0X44、0X55、0X66、0X77、0X88。輸入如下命令:
cansend can0 5A1#11.22.33.44.55.66.77.88
cansend命令用于發(fā)送can數(shù)據(jù),“5A1”是幀ID,“#”號后面的“11.22.33.44.55.66.77.88”就是要發(fā)送的數(shù)據(jù),十六進(jìn)制。CAN2.0一次最多發(fā)送8個字節(jié)的數(shù)據(jù),8個字節(jié)的數(shù)據(jù)之間用“.”隔開。
如果CAN工作正常的話接收端就會接收到上面發(fā)送過來的這8個字節(jié)的數(shù)據(jù)
/ # candump can0
can0 5A1 [8] 11 22 33 44 55 66 77 88
從上面可以看出,接收端的can0接口接收到了8個字節(jié)的數(shù)據(jù),幀ID為5A1,說明CAN驅(qū)動工作正常。
如果要關(guān)閉can0的話輸入如下命令:
ifconfig can0 down
如果要在一個板子上進(jìn)行CAN回環(huán)測試,按照如下命令設(shè)置CAN:
ifconfig can0 down?//如果can0已經(jīng)打開了,先關(guān)閉
ip link set can0 type can bitrate 500000 loopback on?//開啟回環(huán)測試
ifconfig can0 up?//重新打開can0
candump can0 &?//candump后臺接收數(shù)據(jù)
cansend can0 5A1#11.22.33.44.55.66.77.88?//cansend發(fā)送數(shù)據(jù)
如果回環(huán)測試成功的話那么設(shè)備就會收到發(fā)送給自己的數(shù)據(jù),如圖所示:
/ # cansend can0 5A1#11.22.33.44.55.66.77.88
can0 5A1 [8] 11 22 33 44 55 66 77 88