MX2000平臺(tái)接口雖然豐富,但其本身不具備CAN接口。如果在實(shí)際產(chǎn)品應(yīng)用中,需要使用到CAN接口的時(shí)候那該怎么辦呢?本文將以新產(chǎn)品MX2000核心板為例講述如何解決該問(wèn)題。
?概述
MX2000平臺(tái)上不具備CAN接口,但可通過(guò)我司CSM300(A)系列SPI(UART)轉(zhuǎn)CAN模塊進(jìn)行拓展CAN接口。在實(shí)際產(chǎn)品應(yīng)用場(chǎng)景中如果需要使用CAN接口,則可以參考本文進(jìn)行拓展、測(cè)試、評(píng)估。
?軟硬件準(zhǔn)備
- 硬件:MX2000-EV-Board評(píng)估板一塊、CSM300(A)模塊一個(gè)、CSM-Eval評(píng)估套件一個(gè)、連接線纜若干、電源等;
- 軟件:MX2000 SDK、CSM300(A)技術(shù)支持包等。
硬件設(shè)計(jì)和連接使用SPI轉(zhuǎn)CAN功能時(shí),需要將CSM300(A)的MODE引腳接至高電平(3.3V)。MCU的SPI接口與CSM300(A)的SPI接口連接,同時(shí)MCU需要提供GPIO與RST、INT、CTL0、CTL1引腳連接,實(shí)現(xiàn)對(duì)CSM300(A)的有效監(jiān)測(cè)與控制。若需要通過(guò)MCU對(duì)CSM300(A)進(jìn)行配置,則需要額外的GPIO與CFG引腳連接。圖1是CSM300A的參考電路。不使用的模塊引腳只需懸空而不用連接,以免因電路連接不當(dāng)從而造成模塊損壞。
圖1CSM300參考電路圖如果僅需評(píng)估,則可以通過(guò)CSM-Eval評(píng)估套件將CSM300(A)和MX2000-EV-Board連接。CSM-Eval評(píng)估套件需要使用一路SPI接口和5個(gè)電平為3.3V的GPIO;MX2000-EV-Board在J28上引出了SPI1和若干個(gè)電平為3.3V的GPIO,具體接線可以參考表1所示。表1 CSM-Eval接MX2000-EV-Board引腳對(duì)應(yīng)表
CSM-Eval引腳 | MX2000-EV-Board端引腳 | CSM-Eval引腳 | MX2000-EV-Board端引腳 |
SSEL | SSI1_CE0 | CFG | PB27 |
SCK | SSI1_SCK | INT | PC20 |
MISO | SSI1_DI | CTL0 | PB24 |
MOSI | SSI1_DO | CTL1 | PB25 |
GND | GND | RST | PB26 |
VCC | 3.3V |
?軟件改動(dòng)1. 修改設(shè)備樹(shù)在設(shè)備樹(shù)中增加如下節(jié)點(diǎn):
&spi1 { status = "okay"; pinctrl-names = "default"; pinctrl-0 = <&spi1_pe_normal>, <&spi1_pe_cs>; spi-max-frequency = <2000000>; num-cs = <1>; cs-gpios = <0>; ingenic,chnl = <0>; ingenic,allow_cs_same = <1>; ingenic,bus_num = <0>; ingenic,has_dma_support = <0>; ingenic,spi-src-clk = <1>;/*0.ext; 1.ssi*/
/delete-node/ spidev@0; // 刪除原有spidev節(jié)點(diǎn) csm300@0 { compatible = "zhiyuan,csm300"; status = "okay"; spi-max-frequency = <1000000>; reg = <0>; gpios = <&gpb 24 GPIO_ACTIVE_LOW INGENIC_GPIO_NOBIAS /* CTL0引腳 */ &gpb 25 GPIO_ACTIVE_LOW INGENIC_GPIO_NOBIAS /* CTL1引腳 */ &gpb 26 GPIO_ACTIVE_LOW INGENIC_GPIO_NOBIAS /* RST引腳 */ &gpb 27 GPIO_ACTIVE_LOW INGENIC_GPIO_NOBIAS /* CFG引腳 */ >; interrupt-parent = <&gpc>; interrupts = <20 IRQ_TYPE_LEVEL_LOW>; };};
2. 增加驅(qū)動(dòng)并修改內(nèi)核配置
驅(qū)動(dòng)文件請(qǐng)聯(lián)系FAE或者銷售工程師。將驅(qū)動(dòng)文件csm300.c,放置于kernel/drivers/net/can/spi/文件夾下。并在該目錄的Makefile文件中加入以下內(nèi)容:
obj-$(CONFIG_CAN_CSM3XX) += csm300.o/*添加至文件末尾*/
同時(shí)在該目錄下的Kconfig文件中加入以下內(nèi)容:
config CAN_CSM3XX tristate "CSM3XX SPI CAN controllers" help Driver for CSM3XX SPI CAN controllers.
最后在menuconfig菜單中或defconfig配置文件中,打開(kāi)對(duì)應(yīng)內(nèi)核配置,重新編譯內(nèi)核并燒錄到評(píng)估板中。
成功加載并且硬件連接無(wú)誤的情況下,會(huì)出現(xiàn)如下log打印。
[root@MX2000:~]# dmesg | grep csm[ 0.991286] csm300 check id response:[ 0.991356] csm300 spi0.0: csm300 check id succeed[ 0.991717] csm300 spi0.0 can0: csm300 successfully initialized.
如果硬件連接不正確,則會(huì)在初始化時(shí)候出現(xiàn)以下錯(cuò)誤log打印。
圖2CSM300(A)初始化錯(cuò)誤LOG圖
?性能測(cè)試
將CSM-Eval評(píng)估套件通過(guò)USB CAN卡USBCAN-4E-U和電腦連接,框圖如圖3所示。
圖3連接框圖參考以下命令,對(duì)CAN進(jìn)行配置:
[root@MX2000 ]# ip link set can0 down[root@MX2000 ]# ip link set can0 type can bitrate 1000000 #設(shè)定比特率[ 3205.411204] set bitrate is 1000000[root@MX2000 ]# ip link set can0 up #掛起can卡[ 3210.251020] csm300 check id response: [ 3210.251031] 0xf7 [ 3210.255100] 0xf8 [ 3210.257092] 0x2 [ 3210.259082] 0x13 [ 3210.260984] 0x1e [ 3210.451014] csm300 setup response: [ 3210.453010] 0xf7 [ 3210.456620] 0xf8 [ 3210.458610] 0x1 [ 3210.460599] 0x13 [ 3210.462498] 0x1d [ 3210.464486] csm300 setup succeed[root@MX2000 ]# echo 204800 > /sys/class/net/can0/tx_queue_len #設(shè)置發(fā)送隊(duì)列長(zhǎng)度
MX2000端推薦使用以下命令進(jìn)行測(cè)試。其中-g 后面所帶參數(shù)代表間隔時(shí)間(單位:s),經(jīng)過(guò)測(cè)試會(huì)直接影響丟包率,最優(yōu)為0.1。
[root@MX2000 ]# cangen -g 0.1 -I 0x122 -L 8 -D i can0 -n 204800
電腦端使用ZCANPRO專業(yè)軟件進(jìn)行測(cè)試,得出結(jié)果在此幀率下丟包率為0%,如圖4所示。
圖4性能測(cè)試結(jié)果圖
-
接口
+關(guān)注
關(guān)注
33文章
8611瀏覽量
151247 -
CAN
+關(guān)注
關(guān)注
57文章
2756瀏覽量
463779
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論