CAN总线 标准帧/扩展帧滤波器设置

2023-05-16

        在CAN协议里,报文的标识符不代表节点的地址,而是跟报文的内容相关的。因此,发送者以广播的形式把报文发送给所有的接收者。节点在接收报文时,根据标识符(CAN ID)的值决定软件是否需要该报文;如果需要,就拷贝到SRAM里;如果不需要,报文就被丢弃且无需软件的干预。
         为满足这一需求,bxCAN为应用程序提供了14个位宽可变的、可配置的过滤器组(13~0),以便只接收那些软件需要的报文。硬件过滤的做法节省了CPU开销,否则就必须由软件过滤从而占用一定的CPU开销。每个过滤器组x由2个32位寄存器,CAN_FxR0和CAN_FxR1组成。

//标准帧
T_CAN_Filter gtCan1Filter[] =
{{0,(0x305 << 21), (0x07FF << 21)},}; //ID = 0x305
//扩展帧
T_CAN_Filter gtCan1Filter[] =        
{{0, (0x0000FF00 << 3), (0x0000FF00 << 3)},};// ID = 0xFF
#define CAN_FILTER_NUM    (sizeof(gtCan1Filter)   / sizeof(gtCan1Filter[0]))

for(; uIndex < CAN1_FILTER_NUM; uIndex++)
{
    CAN_FilterInitStructure.CAN_FilterNumber = gtCan1Filter[uIndex].uFilterNumber;
    CAN_FilterInitStructure.CAN_FilterMode   = CAN_FilterMode_IdMask;
    CAN_FilterInitStructure.CAN_FilterScale         = CAN_FilterScale_32bit;
    CAN_FilterInitStructure.CAN_FilterIdHigh       = gtCan1Filter[uIndex].uFilterId>> 16;
    CAN_FilterInitStructure.CAN_FilterIdLow           = gtCan1Filter[uIndex].uFilterId;
    CAN_FilterInitStructure.CAN_FilterMaskIdHigh = gtCan1Filter[uIndex].uFilterMaskId>> 16;
    CAN_FilterInitStructure.CAN_FilterMaskIdLow       = gtCan1Filter[uIndex].uFilterMaskId;
    CAN_FilterInitStructure.CAN_FilterFIFOAssignment  = CAN_Filter_FIFO0;
    CAN_FilterInitStructure.CAN_FilterActivation      = ENABLE;
    CAN_FilterInit(&CAN_FilterInitStructure);
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CAN总线 标准帧/扩展帧滤波器设置 的相关文章

  • 学习CANopen --- [9] CAN总线的状态检查

    本文讲述如何判断CAN总线是否存在以及是否bus off xff0c 以vcan0进行讲解 xff0c vcan0是虚拟的CAN接口 xff0c 可以把它看做一个软件CAN适配器 xff08 区别于硬件CAN适配器 xff0c 如PeakC
  • CAN扩展帧详解

    寻址方式
  • can't run '/etc/init.d/rcS': No such file or directory 最终解决方法

    drivers rtc hctosys c unable to open rtc device rtc0 end request I O error dev mtdblock2 sector 256 isofs fill super bre
  • Linux内核Socket CAN中文文档

    自己在年假中空闲之余翻译的内核中Socket CAN的文档 xff0c 原文地址在 xff1a http lxr linux no linux 43 v2 6 34 Documentation networking can txt 但是这篇
  • 一帧CAN数据需要多长时间发送

    1 CAN通讯速率 默认 500kbit s xff1b 2 xff1a 从下图CAN数据包的完整结构可知 xff0c 一包完整的扩展帧CAN数据总共包含 128bit xff1b 3 xff1a 发送一帧扩展帧CAN数据耗时 128 50
  • CAN通信矩阵的理解(CAN报文信号的属性)

    CAN通信矩阵 1 CAN通信矩阵是什么 CAN通信矩阵 xff08 CAN Communication Matrix xff09 通常由整车厂完成定义 xff0c 车辆网络中的各个节点需要遵循该通讯矩阵才能完成信息的交互和共享 我们知道C
  • G2O库和Eigen库can not find 问题——FindG2O.cmake FindEigen3.cmake

    目录 CMakeLists设置FindG2O cmake文件内容FindEigen3 cmake 文件内容 CMakeLists设置 在CMakeLists里加入如下这句话 xff0c 并在项目文件夹中新建cmake文件夹 LIST APP
  • 图解CAN总线数据的组成和帧格式

    CAN 是Controller Area Network 的缩写 xff08 以下称为CAN xff09 xff0c 是ISO国际标准化的串行通信协议 在汽车产业中 xff0c 出于对安全性 舒适性 方便性 低公害 低成本的要求 xff0c
  • CAN总线电平(隐性与显性)

    nbsp nbsp nbsp nbsp CAN2 0B规范定义了两种互补的逻辑数值 显性和隐性 同时传送显性和隐性位时 总线呈现显性状态 同时传送显性状态位时 总线呈现显性状态 同时传送隐性状态位时 总线呈现隐性状态 显性数值表示逻辑0 隐
  • Nvidia Jetson Xavier 上使用CAN

    为了利于回忆 xff0c 将自己查询到的资料在这里记录一下 资料一 xff1a 20条消息 NVIDIA Xavier CAN weifengdq的专栏 CSDN博客 资料二 xff1a 英文版Enabling CAN on Nvidia
  • CAN总线多帧即连续帧数据发送 拆包与重装

    1939协议支持多帧数据发送即数据超过8个的帧发送 用户可以通过ID来识别当前帧是否为多帧发送 xff08 连续帧 xff09 xff0c 如果是多帧发送ID xff0c 举例 xff1a 1C EC F4 56 其中 F4和56为目标地址
  • STM32 CAN通信的学习笔记总结

    转载地址 xff1a STM32 CAN通信的学习笔记总结 xff08 从小白开始 xff09 目录 1 总体概述 1 1 基本概念1 2 通讯方式1 3 为什么使用CAN 1 4 CAN的协议及组成 2 上帝视角看CAN的通讯过程 2 1
  • 山石岩读丨前沿领域探析——汽车CAN总线协议详解及攻击面分析

    1 CAN总线的基本概念以及由来 CAN Controller Area Network 总线协议是由 BOSCH 发明的一种基于消息广播模式的串行通信总线 它起初用于实现汽车内ECU之间可靠的通信 后因其简单实用可靠等特点 而广泛应用于工
  • Ubuntu系统周立功CAN驱动安装及常见问题

    文章目录 前言 一 步骤 1 检查是否安装libusb的库 2 驱动安装 3 测试 部分常见问题 前言 系统是ubuntu16系列 周立功的是usbcan 提示 以下是本篇文章正文内容 下面案例可供参考 一 步骤 1 检查是否安装libus
  • 【汽车电子】浅谈汽车四大总线:LIN、CAN、FlexRay、MOST

    目录 1 前言 2 汽车四大总线 2 1 LIN总线 2 1 1 LIN总线概述 2 1 2 LIN总线工作原理 2 2 CAN总线 2 2 1 CAN总线概述 2 2 2 CAN总线工作原理 2 2 3 CAN总线的优点 2 3 Flex
  • MCP2515独立控制器

    1 简介 MCP2515 是一款独立控制器局域网络 Controller Area Network CAN 协议控制器 完全支持 CAN V2 0B 技术规范 该器件能发送和接收标准和扩展数据帧以及远程帧 MCP2515 自带的两个验收屏蔽
  • CAN/CANFD 总线负载率及计算(源码和工具)

    CAN BUS的总线负载率是CAN总线架构协议设计时的一个重要的指标 一般建议负载率峰值不要高于80 平均负载率不要超过50 当然这只是一般建议 具体根据使用场景和系统设计而定 负载率定义 关于CAN负载率的定义和计算 很多文章写得不求甚解
  • STM32学习心得三十二:CAN通信基础知识、原理、配置及实验

    记录一下 方便以后翻阅 主要内容 1 CAN通信基础知识 2 STM32 CAN控制器简介 3 相关实验代码解读 参考资料 STM32中文参考手册 V10 第22章 控制器局域网 bxCAN 实验功能 CAN实验需要两个开发板 系统启动后
  • pico示波器使用

    文章目录 Pico示波器保存波形 Pico示波器录制数据 Pico示波器解析CAN报文 Pico示波器保存波形 Pico示波器可以通过以下步骤保存波形 在示波器上选择要保存的波形 连接示波器到计算机上 可以使用USB或者Ethernet连接
  • 功放诊断测试

    1 切换trace显示时间模式 Toggle time mode 2 测seedkey 需要加载seednkey dll 3 功能寻址和物理寻址切换

随机推荐

  • ROS实验笔记之——move_base_simple/goal

    本博文打算通过节点发布导航的坐标让机器人自动移动到目标点 通过自定义节点来实现导航功能 nbsp 目录 创建仿真环境 编写导航发布者 move base msgs MoveBaseActionGoal Message 实现代码 参考资料 n
  • ROS实验笔记之——自主搭建四旋翼无人机

    最近搭建了一台小的四旋翼无人机 xff0c 本博文记录一下搭建的过程以及一些问题 请问我博客就记录了自己做实验的搭建的飞机有什么问题 xff1f xff1f xff1f 目录 组装 飞行前准备 试飞 组装 首先是一系列的散装原件 到最后搭建
  • ROS实验笔记之——基于l515激光相机的FLVIS与MLMapping

    之前博客 ROS实验笔记之 VINS Mono在l515上的实现 在l515上实现了vins xff0c 博客 ROS实验笔记之 SLAM无人驾驶初入门 配置flvis并跑了对应的kitti数据集 本博文在l515上先实现flvis然后再用
  • Chapter 2. ROS 创建和编译功能包

    1 创建ROS功能包 使用catkin create pkg命令来创建一个新的catkin程序包 首先切换到之前通过创建catkin工作空间教程创建的catkin工作空间中的src目录下 xff1a ros workspace span c
  • linux ulimit命令用法解析

    以下内容转载自 xff1a http www linuxidc com Linux 2012 10 72782 htm Linux对于每个用户 xff0c 系统限制其最大进程数 为提高性能 xff0c 可以根据设备资源情况 xff0c 设置
  • 机体坐标系的角速度分量

    一 角速度分量 机体坐标系的三个角速度分量 xff0c 是机体坐标系相对于地面坐标系的转动角速度在机体坐标系各轴上的分量 其中 xff1a 角速度 xff50 xff0c 与机体轴 xff58 重合一致 xff1b 角速度 xff51 xf
  • 使用Realsense测试aruco_ros包

    01 准备工作 安装realsense ros安装aruco ros span class token builtin class name cd span ur ws src span class token function git s
  • DIY遥控船(一):电调和舵机的驱动[使用STC89C52]

    在动力模型中 xff0c 有两样东西是最基本 最必要的 xff0c 即舵机和无刷电机 舵机提供转动特定角度的功能 xff0c 而无刷电机需要由电调 xff0d xff0d 电子调速器驱动 舵机 舵机又叫伺服电机 xff0c 可以按照输入的指
  • GD32VF103之CRC

    在GD32VF103内部有一个CRC 循环冗余校验计算单元 xff0c 使用它可以对数据的完整性和正确性进行校验 xff0c 比如固件的完整性和正确性校验 通信数据的校验等 它使用固定的32位多项式 xff1a 0x4C11DB7 xff1
  • GD32VF103之GPIO最小配置

    longan nano是Sipeed xff08 矽速科技 xff09 推出的开发板 xff0c 使用兆易创新的gd32vf103cbt6芯片 xff0c 该芯片是基于芯来科技的Nuclei Bumblebee处理器的32位通用微控制器 x
  • Linux控制I2C/SMBus设备

    平台 xff1a 树莓派 bcm2835 Raspberry Pi 3 Model B Rev 1 2 I2C是Philips开发的一种两线通信协议 xff0c 常用于一些对速度要求不高的小型器件上 SMBus是系统管理总线 xff0c 基
  • ArduPilot/APM源码学习笔记(一)

    最近开始学习ArduPilot APM飞控的源码 xff0c 源码托管在github上 源码链接 xff1a https github com diydrones ardupilot 飞控主页 xff1a http ardupilot co
  • GRUB2引导修复

    本来是想把GRUB2装到U盘 xff0c 却不小心把电脑的GRUB搞坏了 原因可能是我执行命令grub install时没有加任何参数 xff0c 由于不知道没有参数怎么执行 xff0c 我赶紧ctrl 43 c终止了安装 xff0c 最后
  • ardupilot的libraries之PID

    在源码的libraries中 xff0c 有两个关于PID的源文件文件夹 xff0c 一个叫AC PID xff0c 另一个是PID AC PID中又细分为AC HELI PID AC P和AC PID xff0c 这里我们只讨论AC PI
  • stm32串口HAL库的DMA发送问题

    本文使用stm32f411ret的串口1的DMA方式发送数据 xff0c 刚开始调试的时候发现串口只能发送一次数据 xff0c 之后就把系统hang住了 通过网上搜资料和不断尝试 xff0c 发现问题是中断回调函数没有写的原因 使用HAL库
  • stm32的HAL库i2c从机实现

    stm32的i2c默认就是slave模式 xff0c 本文基于HAL库实现中断方式的接收和发送 xff0c 首先是初始化gpio和i2c xff0c 代码如下 xff1a I2C HandleTypeDef I2cHandle void H
  • openBLT-系统结构及框架

    openBLT 系统结构及框架 前言1 框架1 1设备层1 2中间件1 2 1 COM1 2 2 BACKDOOR1 2 3 FILE 1 3应用层 前言 openBLT 是开源的小型嵌入式系统bootloader xff0c 目前支持ST
  • 磁力计的基本工作原理

    http www dzsc com data html 2010 11 29 87454 html ST集成传感器方案实现电子罗盘功能
  • Ubuntu(ROS+雷达)修改udev/rules/更改ttyUSB 使端口绑定

    前提 xff1a 1 Linux xff08 Ubuntu xff09 系统 xff0c 本版本为Ubuntu16 04 2 确定USB口可以使用 xff08 拔插U盘看看有没有弹出文件夹窗口 xff09 参考博客 xff1a https
  • CAN总线 标准帧/扩展帧滤波器设置

    在CAN协议里 xff0c 报文的标识符不代表节点的地址 xff0c 而是跟报文的内容相关的 因此 xff0c 发送者以广播的形式把报文发送给所有的接收者 节点在接收报文时 根据标识符 CAN ID 的值决定软件是否需要该报文 xff1b