之前项目中,一直用的MB(message buffer)结构和中断方式来接收总线CAN 报文。总线负载率和MCU负载不高的情况下,能够正常接收报文。

总线报文复杂的时候,可以利用CAN-FIFO和硬件过滤来提高MCU接收报文能力和性能。

先理解三个概念:

1)筛选ID;2)掩码;3)FIFO接收

筛选ID:用大白话来讲:就是总线上当前节点接收其他节点ID的范围;

掩码:利用掩码从硬件上过滤当前节点不需要的报文。此处还可以继续分为私有掩码和全局掩码,私有掩码针对单个MB结构来设置滤波,全局掩码可以针对所有MB结构来设置滤波。掩码设置1表示当前bit保持一致,设置0表示当前bit无需保持一致。相比于筛选ID,掩码设置更重要。

FIFO接收:当前CAN处理器在同一时间能够接收多帧报文存放在MB的结构中,存放和读取的顺序按照fifo规则。

此处示例代码:扩展帧,筛选ID=0x12345678,掩码=0x1fffffff,此时只能接收0x12345678的报文。

    //can初始化
FLEXCAN_DRV_Init(INST_CANCOM1, &canCom1_State, &canCom1_InitConfig0);
flexcan_id_table_t canidtable[8];
for(uint8_t i=0;i<8;i++)
{
canidtable[i].isExtendedFrame = true;
canidtable[i].isRemoteFrame = false;
canidtable[i].id = 0x12345678;
}
FLEXCAN_DRV_ConfigRxFifo(INST_CANCOM1,FLEXCAN_RX_FIFO_ID_FORMAT_A,canidtable);
/*私有掩码设置*/
/* FLEXCAN_DRV_SetRxMaskType(INST_CANCOM1,FLEXCAN_RX_MASK_INDIVIDUAL);
for(uint8_t id_index=0;id_index<8;id_index++)
{
FLEXCAN_DRV_SetRxIndividualMask(INST_CANCOM1,FLEXCAN_MSG_ID_STD,id_index,0xc0000000|0x7ff);
}*/
/*全局掩码设置*/
FLEXCAN_DRV_SetRxMaskType(INST_CANCOM1,FLEXCAN_RX_MASK_GLOBAL);
FLEXCAN_DRV_SetRxFifoGlobalMask(INST_CANCOM1,FLEXCAN_MSG_ID_EXT,0x1fffffff);
//注册中断事件
FLEXCAN_DRV_InstallEventCallback(INST_CANCOM1,canRxCallback,NULL); FLEXCAN_DRV_RxFifo(INST_CANCOM1,&can_recmsg);
// CAN发送时要使用到的 标准帧 8byte 数据帧
flexcan_data_info_t can1_data_std_info = {
.msg_id_type = FLEXCAN_MSG_ID_EXT,
.data_length = 8U,
.is_remote = false
};
FLEXCAN_DRV_ConfigTxMb(INST_CANCOM1,10,&can1_data_std_info,0x111);
uint8_t Tx[8] = {0,0x1,0x2,0x3,0x4,0x5,0x6,0x7}; // 通过 CAN0 邮箱10 以默认配置 发送 ID是0x111 数据为0,0x1,0x2,0x3,0x4,0x5,0x6,0x7的报文
FLEXCAN_DRV_Send(INST_CANCOM1, 10, &can1_data_std_info, 0x111, Tx);

测试结果,0x12345678报文可以接收,但是其他ID都接收不了。

S32K146-CAN fifo接收的更多相关文章

  1. AXI4 STREAM DATA FIFO

    参考:http://www.xilinx.com/support/documentation/ip_documentation/axis_infrastructure_ip_suite/v1_1/pg ...

  2. 学习笔记20151211——AXI4 STREAM DATA FIFO

    AXI4 STREAM DATA FIFO是输入输出接口均为AXIS接口的数据缓存器,和其他fifo一样是先进先出形式.可以在跨时钟域的应用中用于数据缓冲,避免亚稳态出现.支持数据的分割和数据拼接.在 ...

  3. 《30天自制操作系统》16_day_学习笔记

    harib13a: 今天我们要继续折腾多任务,任务的高效管理是操作系统的一个重要的任务.在今天,我们将为系统创建更加完善的任务管理系统,其中包括优先级,任务等级等. 1.任务管理结构体 #define ...

  4. Linux编程之给你的程序开后门

    这里说的"后门"并不是教你做坏事,而是让你做好事,搭建自己的调试工具更好地进行调试开发.我们都知道,当程序发生异常错误时,我们需要定位到错误,有时我们还想,我们在不修改程序的前提下 ...

  5. CAN控制器-配置过滤器

    首先简单介绍一下CAN总线,关于CAN总线是谁发明的,CAN总线的历史,CAN总线的发展,CAN总线的应用场合,这些,通通不说.这里只是以我个人理解,简单说说CAN通信.CAN总线的端点没有地址(除非 ...

  6. STM32F0使用LL库实现MS5536C通讯

    在本次项目中,限于空间要求我们选用了STM32F030F4作为控制芯片.这款MCU不但封装紧凑,而且自带的Flash空间也非常有限,所以我们选择了LL库实现.在本文中我们说明一下,使用LL库实现MS5 ...

  7. ARM7与GSM实现的简单的远程控制

    幸好单从控制GSM上来说,并不是太难,它是基于串口通信的,而且全是基于AT指令的控制,说起来,就只是熟悉下指令,而且这次比赛用到的指令也比较少,主要是关于短消息方面的指令.我们用到的指令如下: AT& ...

  8. CAN通信详解

    30.1 CAN简介 30.2 硬件设计 30.3 软件设计 30.4 下载验证 CAN 是Controller Area Network 的缩写(以下称为CAN),是ISO国际标准化的串行通信协议. ...

  9. TMS320F28379D 使用心得之 SCI

    原文地址https://blog.csdn.net/qq_39545674/article/details/82597106 一.SCI 简介SCI(Serial Communication Inte ...

  10. STM32之CAN

    概述:STM32有3个发送邮箱,发送调度器根据优先级决定先发送那个,相当于有3个发送帧FIFO;接收方面有14个过滤器,通过编程可以从CAN的接收引脚中选择需要的报文然后分别给2个接收帧FIFO(每个 ...

随机推荐

  1. 来个好玩的,用手机随时随地指挥你的 Cursor!

    告别束缚,用手机随时随地指挥你的 Cursor! 嘿,各位 Cursor 的忠实用户和效率达人们! 你是否曾经遇到过这样的场景:人不在Mac旁边,却突然灵感迸发,想要让 Cursor 帮你写点代码.整 ...

  2. Windows系统 C/C++程序编译后首次执行时间很长 断网则正常执行 的解决方法

    Windows系统 C/C++程序编译后首次执行时间很长 断网则正常执行 的解决方法 如果您遇到此类问题,可以与我联系.我可尝试帮助您解决此问题,2SADFC4F%2$@!0$#@$%2!@#$3#! ...

  3. Httprunner 文件上传场景

    使用Httprunner在做接口自动化的时候,经常会遇到需要上传文件的场景,下面讲一下关于Httpruner文件上传的用例编写. 1. 建项目 首先我们使用httprunner的脚手架快速搭建一个工程 ...

  4. Java泛型<T> T与T的用法

             泛型(Generic type 或者 generics)是对 Java 语言的类型系统的一种扩展,以支持创建可以按类型进行参数化的类.可以把类型参数看作是使用参数化类型时指定的类型的 ...

  5. STM32的3种启动模式

    STM32的3种启动模式 STM32启动模式介绍 各种模式介绍 boot0 = 0 Flash memory启动方式 启动地址:0x08000000 是STM32内置的Flash,一般我们使用JTAG ...

  6. python终端中使用pip指令下载模块显示SyntaxError: invalid syntax解决办法

    今天学习爬虫导入模块时遇到以下错误,即语法错误 >>> pip bs4 File "<stdin>", line 1 pip bs4 ^^^ Synt ...

  7. 优化数据处理效率,解读 EasyMR 大数据组件升级

    EasyMR 作为袋鼠云基于云原生技术和 Hadoop.Hive.Spark.Flink.Hbase.Presto 等开源大数据组件构建的弹性计算引擎.此前,我们已就其展开了多方位.多角度的详尽介绍. ...

  8. THUWC2024游寄

    THUWC2024游寄 后面可能会随机补充一些内容 update: 2024.2.3 补充了day1关于演讲的内容 施工ing... \(day\ -1\) 从学校坐车到巴蜀,第一次参加这种全国赛就碰 ...

  9. C# Model(模型) 转 Hashtable

    灵感来源:https://blog.csdn.net/anonymous_qsh/article/details/78596695 public static Hashtable ObjectToMa ...

  10. C# lambda 去除重复GroupBy 查找最大记录一条数据

    public class Student { public int ID { get; set; } public string Name { get; set; } public int Age { ...