MX2000上如何拓展CAN接口?

MX2000上如何拓展CAN接口?如果在实际产品应用中,需要使用到CAN接口的时候那该怎么办呢?MX2000平台上不具备CAN接口,但可通过我司CSM300系列SPI转CAN模块

大家好,欢迎来到IT知识分享网。

MX2000平台接口虽然丰富,但其本身不具备CAN接口。如果在实际产品应用中,需要使用到CAN接口的时候那该怎么办呢?本文将以新产品MX2000核心板为例讲述如何解决该问题。

概述

MX2000平台上不具备CAN接口,但可通过我司CSM300(A)系列SPI(UART)转CAN模块进行拓展CAN接口。在实际产品应用场景中如果需要使用CAN接口,则可以参考本文进行拓展、测试、评估。

软硬件准备

  1. 硬件:MX2000-EV-Board评估板一块、CSM300(A)模块一个、CSM-Eval评估套件一个、连接线缆若干、电源等;
  2. 软件:MX2000 SDK、CSM300(A)技术支持包等。

MX2000系列低功耗高性能BGA核心板/评估套件「链接」

MX2000上如何拓展CAN接口?

嵌入式SPI或UART转CAN模块CSM300(A)「链接」

MX2000上如何拓展CAN接口?

硬件设计和连接

使用SPI转CAN功能时,需要将CSM300(A)的MODE引脚接至高电平(3.3V)。MCU的SPI接口与CSM300(A)的SPI接口连接,同时MCU需要提供GPIO与RST、INT、CTL0、CTL1引脚连接,实现对CSM300(A)的有效监测与控制。若需要通过MCU对CSM300(A)进行配置,则需要额外的GPIO与CFG引脚连接。图1是CSM300A的参考电路。不使用的模块引脚只需悬空而不用连接,以免因电路连接不当从而造成模块损坏。

MX2000上如何拓展CAN接口?

图1 CSM300参考电路图

如果仅需评估,则可以通过CSM-Eval评估套件将CSM300(A)和MX2000-EV-Board连接。CSM-Eval评估套件需要使用一路SPI接口和5个电平为3.3V的GPIO;MX2000-EV-Board在J28上引出了SPI1和若干个电平为3.3V的GPIO,具体接线可以参考表1所示。

表1 CSM-Eval接MX2000-EV-Board引脚对应表

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

_

_

软件改动

1. 修改设备树

在设备树中增加如下节点:

&spi1 { status = "okay"; pinctrl-names = "default"; pinctrl-0 = <&spi1_pe_normal>, <&spi1_pe_cs>; spi-max-frequency = <>; 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节点 csm300@0 { compatible = "zhiyuan,csm300"; status = "okay"; spi-max-frequency = <>; 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. 增加驱动并修改内核配置

驱动文件请联系FAE或者销售工程师。将驱动文件csm300.c,放置于kernel/drivers/net/can/spi/文件夹下。并在该目录的Makefile文件中加入以下内容:

obj-$(CONFIG_CAN_CSM3XX) += csm300.o/*添加至文件末尾*/

同时在该目录下的Kconfig文件中加入以下内容:

config CAN_CSM3XX tristate "CSM3XX SPI CAN controllers" help Driver for CSM3XX SPI CAN controllers.

最后在menuconfig菜单中或defconfig配置文件中,打开对应内核配置,重新编译内核并烧录到评估板中。

成功加载并且硬件连接无误的情况下,会出现如下log打印。

[root@MX2000:~]# dmesg | grep csm [ 0.] csm300 check id response: [ 0.] csm300 spi0.0: csm300 check id succeed [ 0.] csm300 spi0.0 can0: csm300 successfully initialized.

如果硬件连接不正确,则会在初始化时候出现以下错误log打印。

MX2000上如何拓展CAN接口?

图2 CSM300(A)初始化错误LOG图

性能测试

将CSM-Eval评估套件通过USB CAN卡USBCAN-4E-U和电脑连接,框图如图3所示。

MX2000上如何拓展CAN接口?

图3 连接框图

参考以下命令,对CAN进行配置:

[root@MX2000 ]# ip link set can0 down [root@MX2000 ]# ip link set can0 type can bitrate  #设定比特率 [ 3205.] set bitrate is  [root@MX2000 ]# ip link set can0 up #挂起can卡 [ 3210.] csm300 check id response: [ 3210.] 0xf7 [ 3210.] 0xf8 [ 3210.] 0x2 [ 3210.] 0x13 [ 3210.] 0x1e [ 3210.] csm300 setup response: [ 3210.] 0xf7 [ 3210.] 0xf8 [ 3210.] 0x1 [ 3210.] 0x13 [ 3210.] 0x1d [ 3210.] csm300 setup succeed [root@MX2000 ]# echo  > /sys/class/net/can0/tx_queue_len #设置发送队列长度

MX2000端推荐使用以下命令进行测试。其中-g 后面所带参数代表间隔时间(单位:s),经过测试会直接影响丢包率,最优为0.1。

[root@MX2000 ]# cangen -g 0.1 -I 0x122 -L 8 -D i can0 -n 

电脑端使用ZCANPRO专业软件进行测试,得出结果在此帧率下丢包率为0%,如图4所示。

MX2000上如何拓展CAN接口?

图4 性能测试结果图

ZLG商城:https://j.youzan.com/Kt-L3L

ZLG开发者社区:https://z.zlg.cn

更多技术干货可关注“ZLG致远电子”微信公众号

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/48942.html

(0)

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信