0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

【产品应用】MX2000上如何拓展CAN接口?

ZLG致远电子 2023-06-22 10:02 次阅读

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

cbc54d08-10a0-11ee-a579-dac502259ad0.jpg  概述

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


cbd943da-10a0-11ee-a579-dac502259ad0.jpg  硬件准备

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


cbd943da-10a0-11ee-a579-dac502259ad0.jpg 硬件设计和连接使用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的参考电路。不使用的模块引脚只需悬空而不用连接,以免因电路连接不当从而造成模块损坏。

cbfb7aae-10a0-11ee-a579-dac502259ad0.png

图1CSM300参考电路图如果仅需评估,则可以通过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


cbd943da-10a0-11ee-a579-dac502259ad0.jpg  软件改动1. 修改设备树在设备树中增加如下节点:

&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节点 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. 增加驱动并修改内核配置

驱动文件请联系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.991286] csm300 check id response:[ 0.991356] csm300 spi0.0: csm300 check id succeed[ 0.991717] csm300 spi0.0 can0: csm300 successfully initialized.

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

cc48e7b2-10a0-11ee-a579-dac502259ad0.png

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


cbd943da-10a0-11ee-a579-dac502259ad0.jpg  性能测试

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

cc784e6c-10a0-11ee-a579-dac502259ad0.png

图3连接框图参考以下命令,对CAN进行配置:

[root@MX2000 ]# ip link set can0 down[root@MX2000 ]# ip link set can0 type can bitrate 1000000 #设定比特率[ 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 #设置发送队列长度

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

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

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

cc8a7416-10a0-11ee-a579-dac502259ad0.png

图4性能测试结果图


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 接口
    +关注

    关注

    33

    文章

    8435

    浏览量

    150685
  • CAN
    CAN
    +关注

    关注

    57

    文章

    2690

    浏览量

    463077
收藏 人收藏

    评论

    相关推荐

    CAN/CANFD卡接口函数使用说明

    电子发烧友网站提供《CAN/CANFD卡接口函数使用说明.pdf》资料免费下载
    发表于 10-15 17:35 0次下载

    CAN接口按键面板 控制面板 操作面板 #can总线 #按键面板 #洒水车

    CAN接口
    长沙硕博电子科技股份有限公司
    发布于 :2024年09月09日 09:25:12

    CAN总线的接口类型

    CAN总线(Controller Area Network)是一种基于广播的串行通信协议,广泛用于连接分布式系统中的各个设备,实现它们之间的数据交换和控制。CAN总线接口的定义涵盖了物理层和数据链路层的多个方面,包括
    的头像 发表于 09-03 14:13 1049次阅读

    芯力特车规TVS产品助力CAN/LIN通讯接口保护

    芯力特深耕车规CAN/LIN通讯接口芯片,在大量的客户项目应用中深入了解客户需求后,推出了汽车级TVS防护器件,助力车规CAN/LIN通讯接口保护。该系列
    的头像 发表于 07-02 08:07 363次阅读
    芯力特车规TVS<b class='flag-5'>产品</b>助力<b class='flag-5'>CAN</b>/LIN通讯<b class='flag-5'>接口</b>保护

    如何使用CAN盒测出目标CAN设备的波特率

    要使用CAN盒测出目标CAN设备的波特率,可以按照以下步骤进行: (1)硬件准备: 准备一个与目标CAN设备兼容的CAN盒。 确保CAN盒的
    的头像 发表于 06-26 16:41 653次阅读

    如何将PSoC CAN控制器与NMEA 2000网络结合使用?

    NMEA 2000 是一种用于航海应用的网络,采用 ISO 11898-2(CAN)标准。 11898-2 (CAN) 的加入反映了 CAN 总线作为 NMEA
    发表于 05-23 07:04

    全新Linux环境PCAN驱动程序发布!CAN/CAN FD通信体验全面升级!

    全新8.17.0版本的PCAN-Linux驱动程序正式发布,专为CANCAN FD接口量身打造。无论是CAN 2.0 a/b还是CAN F
    的头像 发表于 04-19 10:38 820次阅读

    CANoe总线接口硬件VN1640A实物展示与功能介绍#汽车CAN总线 

    总线接口CAN总线接口
    北汇信息POLELINK
    发布于 :2024年04月11日 10:50:36

    请问X-NUCLEO-NFC08A1 NFC读卡器可以用CUBE-MX-NFC6或CUBE-MX-NFC7的扩展包吗?

    未找到X-NUCLEO-NFC08A1 NFC读卡器对应的CUBE-MX-NFC8拓展包,可以用CUBE-MX-NFC6或CUBE-MX-NFC7的扩展包吗?或者发一下CUBE-
    发表于 03-18 08:05

    应用探讨:二路CAN接口的定制

    控制器局域网(CAN)是博世的一种控制网络协议,在工业自动化和汽车工业中得到了广泛应用。 客户需要MCU实现两路CAN接口,目前AG32已经支持一路CAN
    发表于 01-29 13:37

    CAN和CANFD协议简介(

    CAN和CANFD协议简介(
    的头像 发表于 01-26 08:06 945次阅读
    <b class='flag-5'>CAN</b>和CANFD协议简介(<b class='flag-5'>上</b>)

    CAN总线接口保护方案

    CAN总线的应用范围广,应用环境相当复杂,一些静电、浪涌等干扰很容易耦合到总线上,并直接作用于CAN总线接口。为了满足一些高等级EMC的要求,有必要添加额外的外围保护电路。CAN
    的头像 发表于 01-13 08:27 645次阅读
    <b class='flag-5'>CAN</b>总线<b class='flag-5'>接口</b>保护方案

    can接口和485接口区别

    CAN接口和RS-485接口都是常见的工业通信接口,它们在功能和性能上有一些差异。以下是关于CAN接口
    的头像 发表于 12-13 10:50 1.4w次阅读

    CAN/CAN FD接口的ESD防护保护方案

      引言:ESD可能发生在任何有外露连接器的系统,包括CAN总线接口,通常这些连接器在汽车装配和维护时外露。例如在装配一辆汽车时,需要将电缆布线与汽车中的控制模块相连,这样当它们穿过工厂时,这些
    的头像 发表于 11-14 17:23 5481次阅读
    <b class='flag-5'>CAN</b>/<b class='flag-5'>CAN</b> FD<b class='flag-5'>接口</b>的ESD防护保护方案

    MX2000核心板的功耗有多低?

    BGA封装工艺是一种先进的集成电路封装技术,它具有小尺寸、多引脚等特点,能够有效地提高芯片的集成度和性能。
    的头像 发表于 11-10 10:05 562次阅读