stm32 CAN过滤器组
在互联型产品中, CAN1和CAN2分享28个过滤器组
其它STM32F103xx系列产品中有14个过滤器组
位宽设置
四种配置方式:
1个32位的屏蔽位模式
2个32位的标识符列表模式,可以过滤2个标识符id
2个16位的屏蔽位模式
4个16位的标识符列表模式,可以过滤4个标准标识符id
扩展标识符必须选择32位宽
标识符列表模式
在标识符列表模式下,屏蔽寄存器也被当作标识符寄存器用。因此,不是采用一个标识符加一
个屏蔽位的方式,而是使用2个标识符寄存器。接收报文标识符的每一位都必须跟过滤器标识符
相同
CAN_FilterInitStructure.CAN_FilterNumber = 0; //过滤器组0(FM1R)
CAN_FilterInitStructure.CAN_FilterMode = CAN_FilterMode_IdList;
CAN_FilterInitStructure.CAN_FilterScale = CAN_FilterScale_32bit;
//第一个标识符id(FR1)- 标准标识符举例
CAN_FilterInitStructure.CAN_FilterIdHigh = 0x123 << 5; //根据位宽设置图
CAN_FilterInitStructure.CAN_FilterIdLow = CAN_ID_STD; //选择标准标识符
//第二个标识符id(FR2)- 扩展标识符举例
CAN_FilterInitStructure.CAN_FilterMaskIdHigh = 0;
CAN_FilterInitStructure.CAN_FilterMaskIdLow = 0x321 << 3 | CAN_ID_EXT; //根据位宽设置图 | 选择扩展标识符
发送方标识符id必须是0x123或0x321
屏蔽位模式
屏蔽位模式可以过滤出一组标识符
//标准标识符举例
CAN_FilterInitStructure.CAN_FilterNumber = 0; //过滤器组0(FM1R)
CAN_FilterInitStructure.CAN_FilterMode = CAN_FilterMode_IdMask;
CAN_FilterInitStructure.CAN_FilterScale = CAN_FilterScale_32bit;
CAN_FilterInitStructure.CAN_FilterIdHigh = 0x123 << 5;
CAN_FilterInitStructure.CAN_FilterIdLow = CAN_ID_STD; //选择标准标识符
CAN_FilterInitStructure.CAN_FilterMaskIdHigh = 0x23 << 5;
CAN_FilterInitStructure.CAN_FilterMaskIdLow = 0;
CAN_FilterIdx:期望的标识符id
CAN_FilterMaskIdx:屏蔽位。关心的位
期望的标识符id:
关心的位:
只关心为1的位,必须和期望的标识符id位一致。其他位是多少不关心
优先级规则
位宽为32位的过滤器,优先级高于位宽为16位的过滤器
对于位宽相同的过滤器,标识符列表模式的优先级高于屏蔽位模式
位宽和模式都相同的过滤器,优先级由过滤器号决定,过滤器号小的优先级高
stm32 CAN过滤器组的更多相关文章
- STM32(12)——CAN
简介: CAN是Controller Area Network,是 ISO 国际标准化的串行通信协议. CAN 控制器根据两根线上的电位差来判断总线电平.总线电平分为显性电平和隐性电平,二者必居其一 ...
- CAN通信详解
30.1 CAN简介 30.2 硬件设计 30.3 软件设计 30.4 下载验证 CAN 是Controller Area Network 的缩写(以下称为CAN),是ISO国际标准化的串行通信协议. ...
- STM32之CAN ---CAN ID过滤器分析
1 前言 在CAN协议里,报文的标识符不代表节点的地址,而是跟报文的内容相关的.因此,发送者以广播的形式把报文发送给所有的接收者.节点在接收报文时,根据标识符(CAN ID)的值决定软件是否需要该 ...
- STM32使用以下规则对过滤器编号:
STM32使用以下规则对过滤器编号:(1) FIFO_0和 FIFO_1的过滤器分别独立编号,均从0开始按顺序编号.(2) 所有关联同一个 FIFO 的过滤器,不管有没有被激活,均统一进行编号.(3) ...
- STM32 CAN总线标识符过滤器难点解析
STM32 CAN总线标识符过滤器难点解析 原创 2016年05月31日 15:12:24 标签: stm32 / CAN 4910 CAN总线是目前应用非常多的一种总线,在汽车电子,航空航天中应用广 ...
- STM32之CAN通讯接收过滤器过滤分析
一.前言 学习了CAN通讯,底层的东东CAN控制器已经帮你处理完成,也就是CAN通讯协议已经做好,你按协议格式往对应的位扔数据发送就好,所以使用CAN通讯,我们只需要去关心制定发送的数据间的协议,也就 ...
- 关于STM32的CAN的过滤器
关于STM32的CAN的过滤器STM32普通型芯片的CAN有14组过滤器组,互联型有28组过滤器组.一般我们用的都是普通型的,所以在本文中可以说STM32有14组过滤器组.根据配置,每1组过滤器组可以 ...
- STM32学习笔记(十) CAN通讯测试(环回模式)
1.CAN通讯的理解 想学习CAN通讯,那么要对通讯协议有一定的认知.通讯协议是指通信双方对数据传送控制的一种约定.约定中包括对数据格式,同步方式,传输速度,传送步骤,检纠错方式以及控制字符定义等问题 ...
- STM32的can现场总线实验心得
最近在搞stm32实验板的can现场总线实验,之前只是搞过STC51的串口通信,相比之下,发觉can总线都挺复杂的.开始时,知道自己是新手,只知道can总线跟串行通信,485通信,I2C通信一样都是用 ...
随机推荐
- 备份数据库的shell
#!/bin/bash #定义备份数据库名 dbname=yourdbname #定义备份数据库的用户名和密码 dbuser=yourdbuser dbpasswd=yourdbpasswd #数据库 ...
- js知识体系
- [译]使用to_dict将pandas.DataFrame转换为Python中的字典列表
pandas.DataFrame.to_json返回的是JSON字符串,不是字典. 可以使用to_dict进行字典转换. 使用orient指定方向. >>> df col1 col2 ...
- Linux开机报错,提示根目录有错误,无法通过检测进入系统
报错信息如下: VolGroup-lv_root contains a file system with errors, check forced. 修复方法:(因为我的是虚拟机,可以随意做备份,所以 ...
- Netty实现SSL双向验证完整实例
Netty实现SSL双向验证完整实例 博客分类: netty nettyssl自签证书 一.证书准备 要使用ssl双向验证,就必须先要生成服务端和客户端的证书,并相互添加信任,具体流程如下(本人调试 ...
- win10锁住鼠标和键盘操作。
以前做的一个winform自动更新程序没考虑到程序在更新过程中禁止操作被更新程序.现在加上了更新过程中锁住鼠标和大部分键盘. 碰到问题:用系统api -- BlockInput(true)锁住屏幕无效 ...
- Vue问题汇总
Vue——父子组件间异步动态获取数据传递数据时,子组件获取不到值或者延时获取: 通过watch解决:https://blog.csdn.net/where_slr/article/details/99 ...
- IP通信学习心得02
1.7层模型 2.OSI的应用 3.如何辨别.数清冲突域和广播域 1)首先,须知第一层不能隔离冲突域和广播域.例如集线器或者直接连PC 2)其次,第二层可以隔离冲突域,但不能隔离广播域.例如,二层交换 ...
- QT虚拟小键盘设计--qt事件循环,事件发送的理解
有人讲到QT5.7及其以后的版本才自带免费的小键盘插件. QT5.10中关于QKeyEvent类:点击打开链接 QT sendEvent和PostEvent, 点击打开链接 my god,我今天安装了 ...
- 第I位是0/1
int a; scanf("%d",&a); ;i<;i++) { ;//从右往左第i位是x ,i==0,就是第一位 printf("%d ",x ...