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

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

3天内不再提示

CANFD总线异构通讯简单实例

STM32单片机 来源:STM32单片机 作者:STM32单片机 2021-01-15 15:22 次阅读

本例程主要讲解 CANFD 总线异构通讯简单实例。把 CANFD 分配给 M4 核,然后另外一块开发板发送,M4 接收 CANFD 数据并通过异构通讯方式发送给 A7 在终端回显。

1.硬件资源

USB-TTL Debug 线两根

两块开发板

开发板配件

2.软件资源

Linux 5.4.31

STM32CubeIDE 1.3.0

STM32CubeMX5.6.0

3.环境准备

预先安装好 CubeIDE,CubeMX 等开发软件。

4.操作步骤

4.1.A7 核操作

由于 CAN 可以被 A7 和 m4 同时使用,现在是要分配给 m4,所以在 A7 端通过设备树把 CAN 分配给 m4。操作步骤如下:

1) 配置设备树

进入内核源码目录 stm32mp15xc-kernel5.4/arch/arm/boot/dts,vim 打开stm32mp15xx-ya157c.dtsi 设备树文件,把 can1 分配给 m4,并屏蔽掉 A7 端的 can1。

f2cc925c-56e0-11eb-8b86-12bb97331649.png

接着配置资源管理器,分配异构通讯的 SRAM

f3694700-56e0-11eb-8b86-12bb97331649.png

2) 编译并更新设备树

配置完成之后编译并拷贝对应设备树到 bootfs 分区。

f3bc6296-56e0-11eb-8b86-12bb97331649.png

另官方已经默认配置了 RPMSG_TTY 驱动。

4.2.M4 核操作

创建一个 STM32 工程,在 STM32CubeMX 里,依次配置 CANFD 用于发送报文、以及配置 IPCC 和 OPENAMP 用于通信

f40886a8-56e0-11eb-8b86-12bb97331649.png

图 4-1.配置 IPCC

f4608bf0-56e0-11eb-8b86-12bb97331649.png

图 4-2.配置 openamp

f4f8b86c-56e0-11eb-8b86-12bb97331649.png

图 4-3.CANFD 配置

注意配置 IPCC 时,需要在 NVIC Settings 选项卡里,将 IPCC RX1 occupiedinterrupt 和 IPCC TX1 free interrupt 的使能勾选上,不然后面的 OPENAMP 的 Activated始终为灰色,无法激活。这里计划创建两个 RPMsg tty 通道,一个用来传输 canfd 报文,一个用来统计 canfd报文的数量。

初始化两个 RPMsg tty 虚拟串口 。

f596d5ec-56e0-11eb-8b86-12bb97331649.png

注册回调函数以按通道接收消息 。

f5f8b7e4-56e0-11eb-8b86-12bb97331649.png

设置 canfd 接收滤波器和发送数据 buf,并注册回调函数和 canfd 接收中断。

f63e3cec-56e0-11eb-8b86-12bb97331649.png

f68bc34a-56e0-11eb-8b86-12bb97331649.png

f6f6f5ca-56e0-11eb-8b86-12bb97331649.png

f74d722e-56e0-11eb-8b86-12bb97331649.png

主函数轮询 RPMsg 消息 OPENAMP_check_for_message() 查询 MailBox 状态 ,主函数并根据运行时间向外发送报文同时不停的查询接收报文。

f78b60b6-56e0-11eb-8b86-12bb97331649.png

f7e7f48e-56e0-11eb-8b86-12bb97331649.png

f858cbd2-56e0-11eb-8b86-12bb97331649.png

当 M4 核接收到 canfd 报文的时候,存入 buf,主函数检测到有 buf 数据,就会调用虚拟串口发送给 A7 端。

f8914ebc-56e0-11eb-8b86-12bb97331649.png

f8de6a76-56e0-11eb-8b86-12bb97331649.png

4.3.测试步骤

J12 的 CANH、CANL 引脚和同类型的板子 CANH、CANL 相连,把编译生成的 M4 固件拷贝到 A7,并启动固件.....

原文标题:应用开发笔记|MYD-YA157-V2开发板CAN BUS 总线通信实例

文章出处:【微信公众号:STM32单片机】欢迎添加关注!文章转载请注明出处。

责任编辑:haq

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

    关注

    56

    文章

    2467

    浏览量

    459190
  • 通信
    +关注

    关注

    18

    文章

    5703

    浏览量

    134374
  • bus
    bus
    +关注

    关注

    0

    文章

    120

    浏览量

    47156

原文标题:应用开发笔记|MYD-YA157-V2开发板CAN BUS 总线通信实例

文章出处:【微信号:STM32_STM8_MCU,微信公众号:STM32单片机】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    TC275D系列的芯片支持标准CANFD能配置成非标准CANFD的吗?

    TC275D系列的芯片支持标准CANFD,是否也能配置成非标准CANFD的呢,有那位技术人员配置过吗?
    发表于 02-06 08:31

    cyt2b94使用can总线的时候无法使用CANFD_CONFIG_STD_ID_FILTER_RANGE滤波器怎么解决?

    cyt2b94使用can总线的时候无法使用CANFD_CONFIG_STD_ID_FILTER_RANGE滤波器 代码如下: static const cy_stc_id_filter_t
    发表于 02-01 08:25

    CANFD SDL无法被接收到的原因?

    任何 CANFD 消息,如果把 cy_stc_canfd_config_t 的 .canFDMode 改为 false 就可以收到,是因为 BAUDRATE 与 DATARATE 的关系吗 ?,我应该要填多少 ?,该怎么从代码推算呢 ?
    发表于 02-01 07:27

    canfd通信tdcv实测值受总线长度影响吗

    canfd通信tdcv实测值受总线长度影响吗  当涉及到CAN FD通信和总线长度的讨论时,总线长度可以对实测值产生一定的影响。在本文中,我将详细讨论CAN FD通信和
    的头像 发表于 01-31 13:46 356次阅读

    求助,关于M467系列CANFD的BSP例程疑问

    CANFD_SetSIDFltr(g_pCanfd, 0, CANFD_RX_BUFFER_STD(0x111, 0)); CANFD_SetSIDFltr(g_pCanfd, 0
    发表于 01-16 08:19

    CAN与CANFD的区别 CAN与CANFD如何转换

    CAN与CANFD的区别 CAN与CANFD如何转换  CAN(Controller Area Network)是一种广泛应用于汽车和工业控制系统等领域的串行通信协议,用于在不同的设备间传输数据
    的头像 发表于 11-22 16:37 3717次阅读

    RA MCU CANFD的应用实例(上)

    本篇文章将以RA6E2为例,介绍如何使用瑞萨电子FSP CAN-FD lite的堆栈来设计和实现基于CAN的简易系统。最后,使用两套FPB-RA6E2和CAN收发器模块通过CAN实现相互通信,按下一块板上的按键S1会发送CANFD数据。
    的头像 发表于 10-25 15:53 460次阅读
    RA MCU <b class='flag-5'>CANFD</b>的应用<b class='flag-5'>实例</b>(上)

    RA MCU CANFD在FSP中的配置详解

    在瑞萨RA系列MCU产品中,目前RA4E2、RA4T1、RA6E2、RA6T2和RA6T3搭载了CANFD Lite(硬件手册中成为CANFD_B)模块,相关的详细IP介绍,请参见之前的文章
    的头像 发表于 10-20 14:46 624次阅读
    RA MCU <b class='flag-5'>CANFD</b>在FSP中的配置详解

    如何使用M460系列微控制器接收和打印CANFD信息

    : NuMaker-M467HJ V1.0 这是一个简单的示例代码,使用M460系列微控制器接收和打印CANFD信息。 M460系列 MCU有一个强大的 CANFD。 以下仅介绍 M460 RX FIFO 结构以方
    发表于 08-29 07:55

    CAN和CANFD协议简介(下)

    前篇内容请点击查看: RA MCU CAN和CANFD IP介绍 CAN和CANFD协议简介(上) 2. CAN协议 2.2 协议层 前文 讲述了CAN的物理层标准,约定了电气特性,以下介绍的协议
    的头像 发表于 08-02 12:15 1435次阅读
    CAN和<b class='flag-5'>CANFD</b>协议简介(下)

    玩转先楫CANFD外设系列之一:轻松搞起CANFD

    一、概述先楫的CANFD外设,有两个CANFD的IP,其中HPM6700系列,HPM6400系列、HPM6300系列使用的是CAN,包括了经典CAN和CANFD。而HPM6200系列则使用的MCAN
    的头像 发表于 08-02 08:20 1323次阅读
    玩转先楫<b class='flag-5'>CANFD</b>外设系列之一:轻松搞起<b class='flag-5'>CANFD</b>

    开发者分享:轻松搞起CANFD

    先楫的CANFD外设,有两个CANFD的IP,其中HPM6700系列,HPM6400系列、HPM6300系列使用的是CAN,包括了经典CAN和CANFD
    的头像 发表于 08-01 10:28 1529次阅读
    开发者分享:轻松搞起<b class='flag-5'>CANFD</b>

    基于Tricore的CANFD入门工程

    汽车嵌入式开发,很多时候,想学一些东西(eg:CANFD),但又不知道如何下手,这应该是大多数刚入行工程师的苦恼。目前项目上,CANFD的使用已经很普遍,而单纯阅读芯片手册,可能无法透彻的理解CANFD,如果想透彻的理解
    的头像 发表于 07-12 09:46 634次阅读
    基于Tricore的<b class='flag-5'>CANFD</b>入门工程

    求助,LPC5516 CANFD采样点4M以上波特率如何设置70%以上?

    当采样点设置大于70%时,数据阶段会出现协议错误,发送错误帧。数据波特率小于4M时无此问题,采样点小于70%即可。 单片机:LPC5516 CANFD发射器:TJA1042/3 CANFD模块时钟:80MHz 通讯接口:Kvas
    发表于 05-16 06:59

    西门子PLC自由口通讯配合中断的实例

    以前我们讲过关于自由口通讯实例,今天我们讲一下自由口通讯配合中断的实例
    的头像 发表于 05-15 10:10 782次阅读
    西门子PLC自由口<b class='flag-5'>通讯</b>配合中断的<b class='flag-5'>实例</b>