这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 行业应用 » 汽车电子 » 【S32K3XX】FlexCAN MB 发送状态机机制

共1条 1/1 1 跳转至

【S32K3XX】FlexCAN MB 发送状态机机制

高工
2026-07-28 12:42:54   被打赏 35 分(兑奖)     打赏

【简介】

在之前的帖子(【S32K3XX】FlexCAN RAM 资源分配整理)介绍过S32K3 的CAN IP 的RAM 资源介绍,文中有介绍过发送CAN报文要使用 CAN IP 内部的mailbox 资源,每个mailbox 映射到了IP的一段内存,该内存在IP 内部是使用 Message buffer structure   结构来配置管理收发CAN 报文,CAN 的收发是基于MB 来完成的:

image.png

对应的数据结构如下:

image.pngimage.png


该 MB struct 数据管理方式采用固定的8字节的header + payload 的方式payload 的大小可支持8/16/32/64字节的模式。其中Header 的CODE 字段用于管理MB 的状态机,CPU 可以读取该信息获取当前的MB的状态信息。

image.png

本次试验我们来验证MB 作为发送资源使用时CODE 的状态管理,开始前我们先看下发送状态下MB 的状态定义如下。


image.png

基于(【S32K3XX】FlexCAN 模块配置使用)     工程的基础上Debug 查看MB的状态信息。

本地 debug 查看 Mailbox 31 的CODE 状态,在调用RTD 的 FlexCAN_Ip_Send 函数前查看对应状态为1000b 对应INACTIVE状态。

image.png

FlexCAN_Ip_Send 发送完成后断开 CAN 线 读取MB 的状态信息为1100b 发送DATA状态。

image.png

CAN 消息发送完成后改状态有重新切换为1000b INACTIVE.

image.png


 


共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]