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

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

3天内不再提示

i.MX8MPlus开发板实现SPI转CAN,该如何操作?

飞凌嵌入式 2023-09-04 16:04 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

飞凌嵌入式OKMX8MP-C开发板有两路原生CAN总线,但用户在开发产品时可能需要用到更多的CAN,这该如何解决呢?今天小编将为大家介绍一种SPI转CAN的方法,供各位工程师小伙伴参考。


说明

OKMX8MP-C核心板有两路原生的SPI总线,目前是将SPI1的引脚用作了LEDUART3的功能,SPI2做成了正常的SPI2接口。此处以SPI2转CAN为例,移植SPI转CAN芯片;

SPI转CAN芯片型号为:MCP2518,这款芯片可转出CAN-FD,若只需要CAN功能,可参照该方式移植MCP2515或其他芯片;

本次移植的MCP2518芯片驱动来源是i.MX8MQ的源码(处理器中默认移植MCP2518芯片)。

wKgZomT5QKWABPCtAAGqeU6B1M0490.jpg

1、移植MC2518芯片驱动

OK8MP-linux-kernel/drivers/net/can/spi/路径下创建一个文件夹——mcp25xxfd,将相关文件(包含.c文件、.h文件、Makefile、Kconfig等)放置到此文件夹中。

2、补全对can_rx_offload_add_manual函数的定义

viOK8MQ-linux-kernel/include/linux/can/rx-offload.h

添加:

int can_rx_offload_add_manual(struct net_device *dev, struct can_rx_offload *offload, unsigned int weight)

viOK8MQ-linux-kernel/drivers/net/can/rx-offload.c

添加:

int can_rx_offload_add_manual(struct net_device *dev, struct can_rx_offload *offload, unsigned int weight) { if (offload->mailbox_read) return -EINVAL; return can_rx_offload_init_queue(dev, offload, weight); } EXPORT_SYMBOL_GPL(can_rx_offload_add_manual);

3、修改上一级目录spi/下的Makefile和Kconfig

viOK8MP-linux-kernel/drivers/net/can/spi/Makefile

添加:

obj-y += mcp25xxfd/

viOK8MP-linux-kernel/drivers/net/can/spi/Kconfig

添加:

source "drivers/net/can/spi/mcp25xxfd/Kconfig"

4、修改驱动配置文件,将MCP2518编译进内核

viOK8MP-linux-kernel/arch/arm64/configs/OK8MP-C_defconfig

找到:CONFIG_CAN_MCP251X=y

改为:#CONFIG_CAN_MCP251X is not set

添加:CONFIG_CAN_MCP25XXFD=y

5、在设备树中配置时钟

viOK8MP-linux-kernel/arch/arm64/boot/dts/freescale/OK8MP-C.dts

添加:

clocks{ mcp2518fd_clock: mcp2518fd_clock{ compatible = "fixed-clock"; #clock-cells = <0>; clock-frequency = <40000000>; }; };

6、找一个引脚用作芯片的中断引脚

此处是将GPIO4_IO21用作了中断引脚。

viOK8MP-linux-kernel/arch/arm64/boot/dts/freescale/OK8MP-C.dts

添加:

pinctrl_ecspi2_can: ecspi2can{ fsl,pins = < MX8MP_IOMUXC_SAI2_RXFS__GPIO4_IO21 0x40000 >; };

7、在设备树的ecspi2节点中进行修改

viOK8MP-linux-kernel/arch/arm64/boot/dts/freescale/OK8MP-C.dts

从:

&ecspi2{ #address-cells= <1>; #size-cells= <0>; fsl,spi-num-chipselects= <1>; pinctrl-names= "default"; pinctrl-0= <&pinctrl_ecspi2 &pinctrl_ecspi2_cs>; cs-gpios= <&gpio5 13 GPIO_ACTIVE_LOW>; status= "okay"; spidev1:spi@0 { reg= <0>; compatible= "rohm,dh2228fv"; spi-max-frequency= <500000>; }; };

改为:

&ecspi2{ #address-cells= <1>; #size-cells= <0>; fsl,spi-num-chipselects= <1>; pinctrl-names= "default"; pinctrl-0= <&pinctrl_ecspi2 &pinctrl_ecspi2_cs &pinctrl_ecspi2_can>; cs-gpios= <&gpio5 13 GPIO_ACTIVE_LOW>; status= "okay"; mcp1:mcp2518fd@0{ compatible= "microchip,mcp2518fd"; reg= <0>; spi-max-frequency= <20000000>; clocks= <&mcp2518fd_clock2>; interrupts-extended= <&gpio4 21 IRQ_TYPE_LEVEL_LOW>; }; };

完成上述修改后即可进行编译,并用新生成的镜像烧写OKMX8MP-C开发板。

8、开发板验证

将MCP2518芯片接到SPI2的接口上,启动OKMX8MP-C开发板,启动后使用ifconfig-a命令查看,即可看到多出了1个CAN节点。节点生成后,即可按照用户使用手册4.18FlexCAN测试】章节进行测试,验证功能是否正常。

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

    关注

    58

    文章

    3010

    浏览量

    471415
  • SPI
    SPI
    +关注

    关注

    17

    文章

    1866

    浏览量

    99771
  • 总线
    +关注

    关注

    10

    文章

    3014

    浏览量

    91295
  • 嵌入式开发
    +关注

    关注

    18

    文章

    1103

    浏览量

    49839
  • 开发板
    +关注

    关注

    25

    文章

    6122

    浏览量

    113232
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    既要稳定性,还要性价比的工业级开发板 — 米尔i.MX91

    之前我介绍过NXPi.MX8系列的开发板,最近它的下一代产品i.MX9系列产品也有了,我就拿到了这个基于NXPi.MX9系列的米尔MYD-LMX91
    的头像 发表于 11-20 08:05 746次阅读
    既要稳定性,还要性价比的工业级<b class='flag-5'>开发板</b> — 米尔<b class='flag-5'>i.MX</b>91

    简单认识NXP FRDM i.MX 93开发板

    FRDM i.MX 93开发板是一款入门级、紧凑型开发板,采用i.MX93应用处理器。板配备板载IW612模块,集成了恩智浦的三频解决方案
    的头像 发表于 11-17 09:45 546次阅读
    简单认识NXP FRDM <b class='flag-5'>i.MX</b> 93<b class='flag-5'>开发板</b>

    【项目实战】基于i.MX8M Plus的人工智能小车(AGV导航、视觉避障、自动跟随、颜色识别、防跌落)有教程代码

    今天给大家分享一款人工智能AGV自主导航小车,该款小车主要是基于NXPi.MX8MPlus主控。i.MX8MPlus应用处理器是NXP推出的一款致力于推动机器学习(ML),机器视觉,多媒体与工业边缘
    的头像 发表于 09-10 17:04 623次阅读
    【项目实战】基于<b class='flag-5'>i.MX8</b>M Plus的人工智能小车(AGV导航、视觉避障、自动跟随、颜色识别、防跌落)有教程代码

    在友晶DE1-SOC开发板实现Chirikov标准映射求解器

    该项目是在友晶DE1-SOC开发板实现Chirikov标准映射的求解器,并将其应用于图像加密和解密的概念验证。
    的头像 发表于 07-07 15:22 1627次阅读
    在友晶DE1-SOC<b class='flag-5'>开发板实现</b>Chirikov标准映射求解器

    618盛夏狂欢,米尔电子携手恩智浦开启年度技术盛宴!

    即日起-2025.06.30,米尔恩智浦多系列开发板限时折扣!米尔基于i.MX91、i.MX93、i.MX8MPlusi.MX6UL/
    的头像 发表于 06-13 08:03 715次阅读
    618盛夏狂欢,米尔电子携手恩智浦开启年度技术盛宴!

    米尔NXP i.MX 91核心板发布,助力新一代入门级Linux应用开发

    93处理器实现引脚兼容。此外,这款处理器支持多种外设接口资源,2个千兆以太网接口、2个USB2.0接口、2个CAN-FD接口、8个UART接口,8
    发表于 05-30 11:20

    NXP i.MX 91开发板#支持快速创建基于Linux®的边缘器件

    NXP Semiconductors FRDM i.MX 91开发板设计用于评估i.MX 91应用处理器,支持快速创建基于Linux ^®^ 的边缘器件。
    的头像 发表于 05-19 10:55 1982次阅读
    NXP <b class='flag-5'>i.MX</b> 91<b class='flag-5'>开发板</b>#支持快速创建基于Linux®的边缘器件

    「2025恩智浦创新技术峰会」飞凌嵌入式亮相上海首站

    ,展示其在低成本人工智能、工业物联网等领域的创新成果。此次峰会,飞凌嵌入式带来了基于恩智浦i.MX95xx、i.MX9352、i.MX8MPlusi.MX6ULL
    的头像 发表于 05-15 13:38 1059次阅读
    「2025恩智浦创新技术峰会」飞凌嵌入式亮相上海首站

    技术分享 | i.MX8MPlus Journal日志管理系统

    我司IAC-IMX8MP-Kit开发板搭载NXPi.MX8MPlusSOC,芯片采用4颗ArmCortex-A53核心以及1颗ArmCortex-M7核心。目前
    的头像 发表于 05-08 17:23 536次阅读
    技术分享 | <b class='flag-5'>i.MX8MPlus</b> Journal日志管理系统

    NXP基于i.MX 91应用处理器打造的FRDM i.MX 91开发板特性参数详解

    FRDM i.MX 91开发板开发板基于i.MX 91应用处理器打造,专为加速工业与物联网的开发
    的头像 发表于 03-21 09:37 12.3w次阅读
    NXP基于<b class='flag-5'>i.MX</b> 91应用处理器打造的FRDM <b class='flag-5'>i.MX</b> 91<b class='flag-5'>开发板</b>特性参数详解

    如何实现i.MX8MPlus的rpmsg调试

    我司IAC-IMX8MP-Kit开发板搭载NXPi.MX8MPlusSOC,芯片采用4颗ArmCortex-A53核心以及1颗ArmCortex-M7核心。很多客户需求在M核心运行实
    的头像 发表于 03-20 17:26 1071次阅读
    如何<b class='flag-5'>实现</b><b class='flag-5'>i.MX8MPlus</b>的rpmsg调试

    NXP i.MX 93 开发板#提供高效的机器学习 支持高能效的边缘计算

    NXP Semiconductors FRDM-IMX93开发板i.MX 93应用处理器提供支持。NXP Semiconductors FRDM-IMX93板配备板载IW612模块,支持NXP
    的头像 发表于 03-10 15:30 2510次阅读
    NXP <b class='flag-5'>i.MX</b> 93 <b class='flag-5'>开发板</b>#提供高效的机器学习 支持高能效的边缘计算

    NXP首款搭载MPU的FRDM产品怎么样?FRDM i.MX93开发板开箱速览

    近期,NXP将i.MX 93系列处理器引入了FRDM系列产品线,推出了FRDM i.MX 93开发板,作为首款配备i.MX MPU的FRDM板,它提供了模块化硬件、全面的软件和工具,以
    的头像 发表于 02-26 14:56 2359次阅读
    NXP首款搭载MPU的FRDM产品怎么样?FRDM <b class='flag-5'>i.MX</b>93<b class='flag-5'>开发板</b>开箱速览

    恩智浦推出FRDM i.MX 93开发板

    备受嵌入式开发者青睐的恩智浦FRDM开发平台,迎来了一位新成员——FRDM i.MX 93开发板,这也是第一块配备i.MX MPU的FRDM
    的头像 发表于 02-21 14:22 2884次阅读

    NXP推出FRDM i.MX 93开发板, 助力现代工业与边缘智能开发

    近日,恩智浦半导体(NXP Semiconductor)推出了FRDM i.MX 93开发板,这是FRDM系列中第一款基于MPU推出的开发板,以低成本、紧凑的设计为核心,搭载了NXP i.MX
    的头像 发表于 02-21 09:19 2619次阅读
    NXP推出FRDM <b class='flag-5'>i.MX</b> 93<b class='flag-5'>开发板</b>, 助力现代工业与边缘智能<b class='flag-5'>开发</b>