MX2000平台接口虽然丰富,但其本身不具备CAN接口。如果在实际产品应用中,需要使用到CAN接口的时候那该怎么办呢?本文将以新产品MX2000核心板为例讲述如何解决该问题。
软件改动1. 修改设备树在设备树中增加如下节点:
概述
MX2000平台上不具备CAN接口,但可通过我司CSM300(A)系列SPI(UART)转CAN模块进行拓展CAN接口。在实际产品应用场景中如果需要使用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的参考电路。不使用的模块引脚只需悬空而不用连接,以免因电路连接不当从而造成模块损坏。图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 |
&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打印。
[
][
] csm300 check id response:[.0: csm300 check id succeed
] csm300 spi0[.0 can0: csm300 successfully initialized. ] csm300 spi0
如果硬件连接不正确,则会在初始化时候出现以下错误log打印。图2CSM300(A)初始化错误LOG图
性能测试
将CSM-Eval评估套件通过USB CAN卡USBCAN-4E-U和电脑连接,框图如图3所示。
图3连接框图参考以下命令,对CAN进行配置:
[
][
][set bitrate is 1000000
] [
][
] csm300 check id response: [0xf7
] [0xf8
] [0x2
] [0x13
] [0x1e
] [
] csm300 setup response: [0xf7
] [0xf8
] [0x1
] [0x13
] [0x1d
] [
] csm300 setup succeed[ ]
MX2000端推荐使用以下命令进行测试。其中-g 后面所带参数代表间隔时间(单位:s),经过测试会直接影响丢包率,最优为0.1。
[ ]
电脑端使用ZCANPRO专业软件进行测试,得出结果在此帧率下丢包率为0%,如图4所示。图4性能测试结果图
技术交流群
长按识别如下二维码可加入“工控板/核心板技术交流群”,与志同道合的朋友交流,并有专业技术人员为您答疑解惑,如有问题可以咨询小致微信:zlgmcu-888。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
致远电子
+关注
关注
13文章
397浏览量
31066
原文标题:【产品应用】MX2000上如何拓展CAN接口?
文章出处:【微信号:ZLG_zhiyuan,微信公众号:ZLG致远电子】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
CAN总线接口保护方案
CAN总线的应用范围广,应用环境相当复杂,一些静电、浪涌等干扰很容易耦合到总线上,并直接作用于CAN总线接口。为了满足一些高等级EMC的要求,有必要添加额外的外围保护电路。CAN
还在为CAN接口不够而发愁?全国产器件高性价比CAN接口扩展芯片CSM330A满足你
。产品概述CSM330A支持通过SPI/UART扩展出一路CAN接口,可以方便地嵌入到具有SPI或UART接口的设备中,产品效果图如图1所示
CAN总线接口保护电路
CAN总线的应用范围广,应用环境相当复杂,一些静电、浪涌等干扰很容易耦合到总线上,并直接作用于CAN总线接口。为了满足一些高等级EMC的要求,有必要添加额外的外围保护电路。CAN
CAN接口与485接口如何实现互相转换?
CAN接口与485接口如何实现互相转换? CAN总线和RS-485总线都是工业级数据传输总线,它们在不同的工业自动化控制应用中被广泛应用。但是在一些特定的应用场景下,需要将
在i.MX8MP开发板上实现SPI转CAN
飞凌嵌入式OKMX8MP-C开发板有两路原生CAN总线,但用户在开发产品时可能需要用到更多的CAN,这该如何解决呢?今天小编将为大家介绍一种SPI转CAN的方法,供各位工程师小伙伴参考
发表于 09-11 15:26
使用CAN总线需要扩展CAN总线接口吗
及应用。CSM330A的优势如图1所示,通过SPI或UART扩展隔离CAN接口的常规方案,一般要用到CAN控制器芯片、隔离DC-DC电源、数字隔离芯片、CAN收发芯片等,存在
ZLG致远电子2023年文章月度回顾 | 2023.06期
六月,我们相继发布上市了MX2000核心板、MD-3568LI工控主板、VBNET系列车载以太网转换器、ZAM5404采集模块等新产品,干货文章结合短视频精彩呈现,哪一个产品会令你更感兴趣呢? 01
保护方案丨CAN总线接口保护电路
CAN总线的应用范围广,应用环境相当复杂,一些静电、浪涌等干扰很容易耦合到总线上,并直接作用于CAN总线接口。为了满足一些高等级EMC的要求,有必要添加额外的外围保护电路。CAN
【产品应用】CANopen主站如何获取Modbus设备的数据
CANopen通信硬件接口为CAN总线,然而Modbus通信硬件接口为串口/以太网口;那么问题来了:CANopen主站如何获取Modbus型传感器的数据呢?让我们一起来实现。PXB-6021是ZLG
评论