本例程主要讲解 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。

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

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

另官方已经默认配置了 RPMSG_TTY 驱动。
4.2.M4 核操作
创建一个 STM32 工程,在 STM32CubeMX 里,依次配置 CANFD 用于发送报文、以及配置 IPCC 和 OPENAMP 用于通信。

图 4-1.配置 IPCC

图 4-2.配置 openamp

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

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

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




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



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


4.3.测试步骤
J12 的 CANH、CANL 引脚和同类型的板子 CANH、CANL 相连,把编译生成的 M4 固件拷贝到 A7,并启动固件.....
上一篇:教你如何轻松写单片机的指针
下一篇:一招教你快速解析WAV文件格式
- ASM330LHH适配器板,标准DIL24插座
- LT1071 电流升压型升压转换器的典型应用
- SECO-HVDCDC1362-15W-GEVB:用于 HEV 和电动汽车的 15 W SiC 高压辅助电源 纯电动汽车应用
- 使用 ON Semiconductor 的 KA7812E 的参考设计
- NCP5007 紧凑型背光 LED 升压驱动器的典型应用,具有模拟反馈的基本直流电流模式操作
- ADA4000-4ARZ运算放大器缓冲网络配置的典型应用电路
- 具有 PWM 调光功能的 NSI45030AT1G 350mA LED 灯串的典型应用
- DER-972 - 使用 LinkSwitch-TN2 的 6 W 高输出电流非隔离降压转换器,适用于电器
- AKD4348-SA,AK4348 24 位 8 通道 DAC 评估板
- LT1764AET-2.5 3.3 VIN 至 2.5 VOUT LDO 稳压器的典型应用

智能网联汽车电子电气架构 产业技术路线图(245页)
中国移动通信随e行客户端AT命令接口规范v[1].1.1
基于PDA与PC数据传输同步协议可扩展
现代雷达系统的信号设计

BFR340T






京公网安备 11010802033920号