加入星计划,您可以享受以下权益:

  • 创作内容快速变现
  • 行业影响力扩散
  • 作品版权保护
  • 300W+ 专业用户
  • 1.5W+ 优质创作者
  • 5000+ 长期合作伙伴
立即加入
  • 正文
  • 推荐器件
  • 相关推荐
  • 电子产业图谱
申请入驻 产业图谱

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

2023/09/01
3819
阅读需 10 分钟
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

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

说明

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

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

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

01移植MC2518芯片驱动

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

02补全对can_rx_offload_add_manual函数的定义

vi
OK8MQ-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)

vi
OK8MQ-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);

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

vi
OK8MP-linux-kernel/drivers/net/can/spi/Makefile

添加:

obj-y     +=  mcp25xxfd/

vi
OK8MP-linux-kernel/drivers/net/can/spi/Kconfig

添加:

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

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

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

找到:CONFIG_CAN_MCP251X=y

改为:#
CONFIG_CAN_MCP251X is not set

添加:CONFIG_CAN_MCP25XXFD=y

05在设备树中配置时钟

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

添加:

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

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

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

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

添加:

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

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

vi
OK8MP-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开发板

08开发板验证

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

用户使用手册下载链接:https://pan.baidu.com/s/1TY4R5BrAnjAuTTJj9fNGWw

提取码: 7qc8

推荐器件

更多器件
器件型号 数量 器件厂商 器件描述 数据手册 ECAD模型 风险等级 参考价格 更多信息
CSTCE12M0G55Z-R0 1 Murata Manufacturing Co Ltd Ceramic Resonator, 12MHz Nom, SMD, 3 PIN
$0.54 查看
74HC245PW,118 1 NXP Semiconductors 74HC(T)245 - Octal bus transceiver; 3-state TSSOP2 20-Pin
$0.56 查看
CY62167EV30LL-45ZXI 1 Cypress Semiconductor Standard SRAM, 1MX16, 45ns, CMOS, PDSO48, TSOP1-48
$69.33 查看
飞凌嵌入式

飞凌嵌入式

保定飞凌嵌入式技术有限公司,创建于2006年,是一家专注嵌入式核心控制系统研发、设计和生产的高新技术企业,是国内较早专业从事嵌入式技术的企业之一。 经过十几年的发展与积累,公司拥有业内优秀的软硬件研发团队,在北京及保定建立两大研发基地,在苏州、深圳设有华东、华南技术服务中心,并在北美、欧洲以及亚太等其他国家和地区拥有国际业务网络。公司研发的智能设备核心平台广泛应用于物联网、工控、轨道交通、医疗、电力、商业电子、智能家居、安防、机器人、环境监测等诸多领域。

保定飞凌嵌入式技术有限公司,创建于2006年,是一家专注嵌入式核心控制系统研发、设计和生产的高新技术企业,是国内较早专业从事嵌入式技术的企业之一。 经过十几年的发展与积累,公司拥有业内优秀的软硬件研发团队,在北京及保定建立两大研发基地,在苏州、深圳设有华东、华南技术服务中心,并在北美、欧洲以及亚太等其他国家和地区拥有国际业务网络。公司研发的智能设备核心平台广泛应用于物联网、工控、轨道交通、医疗、电力、商业电子、智能家居、安防、机器人、环境监测等诸多领域。收起

查看更多

相关推荐

电子产业图谱

秉承专业态度,专注智能设备核心平台研发与制造,以技术研发创新为主导,以客户实用化,产品化为目标,把握嵌入式行业的前沿发展需求,利用核心技术为客户提供稳定、可靠、功能优异的高品质产品。合作联系:17713286011