对于can通信过滤器的理解
以前没有接触过CAN通信,最近接触CAN通信,要调试F0芯片上的can通信,发送调试好了,接收总是只能接收固定id的数据,
这主要和过滤器有关,通过对过滤器的设置可以过滤特定的canid的数据,也可以接收任意canid的数据,具体设置方法如下:
CAN_FilterTypeDef sFilterConfig;sFilterConfig.FilterBank = 0; //过滤器0sFilterConfig.FilterMode = CAN_FILTERMODE_IDLIST; //设为列表模式 sFilterConfig.FilterScale = CAN_FILTERSCALE_32BIT;//滤波器位宽为单个32位 sFilterConfig.FilterIdHigh = 0x0000; //基本ID放入到STID中 sFilterConfig.FilterIdLow = 0x0000; sFilterConfig.FilterMaskIdHigh = 0;//这里设置接收任意ID的CAN数据sFilterConfig.FilterMaskIdLow = 0;//0表示接收来自发送端任意ID的数据 sFilterConfig.FilterFIFOAssignment = CAN_FILTER_FIFO0; //接收到的报文放入到FIFO0中 sFilterConfig.FilterActivation = ENABLE; //激活过滤器sFilterConfig.SlaveStartFilterBank = 0; HAL_Status=HAL_CAN_ConfigFilter(&hcan, &sFilterConfig);
使用过滤器0,当将FilterMode 设置为列表模式的时候,屏蔽寄存器FiterMask也被当作标识符寄存器用。因此,不是采用一个标识符加一个屏蔽位的方式,而是使用2个标识符寄存器。接收报文标识符的每一位都必须跟过滤器标识符FilterId相同, 所以列表模式下是过滤特定的ID模式,
如果将FilterMode设置为CAN_FILTERMODE_IDMASK模式,FilterMaskId设置为0时,表示不过滤,可以接收任意的canid数据,
当filterMaskId不为0时,则表示过滤 对应MaskID 为1的bit必须与FilterID中的bit位相同的canid才能接收过来。
比如filterid=0x10101010, maskid=0x0000ffff, 则只有id=0x xxxx 1010的数据才能接收,xxxx可以不用与filterid的高2字节相同,可以任意。
参考文章:http://blog.sina.com.cn/s/blog_8806edc50102wex0.html
对于can通信过滤器的理解相关推荐
- STM32F105 CAN通信过滤器配置问题
总结一些最近做项目对CAN通信的过滤器配置的理解: 这里我使用STM32F105系列的芯片,有2路CAN,我使用的是CAN2,过滤器可以设置从15开始,当然,从1开始也是没有问题的: 当设置了CAN过 ...
- (三.0)通过FPGA实现以太网通信原理及理解
0.0 OSI模型的简单理解 OSI(Open System Interconnect),即开放式系统互联.一般都叫OSI参考模型,是ISO(国际标准化组织)组织在1985年研究的网络互联模型.该体系 ...
- iic通信的深入理解(主从设备通信)
虽然之前也研究了先iic同行基本的时序你弄明白了,可是在机子写at24c02驱动的时候由于理解不够透彻出了点问题. 一.写数据 24c02的写入数据,可以看到主从设备iic中写的过程:起始信号-> ...
- 串口通信与并口通信的浅理解
在说到通信的时候,一般都会提到窜口通信和并口通信的问题,以前一直都是听别人说,我一点也不明白,毕竟这个概念还是偏硬件了点,但是人还是要往前进的,今天多google了几下,总结了下理解方式,算是一次学习 ...
- 对WIFI通信的一些理解(经常更新修改)
1.WIFI模块配置的指令形式是什么? 指令形式是字符串,上位机或MCU通过串口连接WIFI芯片,发送指令协议中对应的字符串,实质就是发送这些字符串对应的ASCII码值.WIFI 芯片接受到这些字符串 ...
- Filter过滤器的理解(一)
什么是过滤器 Filter也称之为过滤器,它是Servlet技术中最实用的技术,Web开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件或静 ...
- 香农公式--通信的浅显理解--单纯只是为了弄懂功率和信道容量的关系
笔记的目标:简单梳理功率和信道容量的关系 其中主要是为了弄明白论文<Spectrum Sharing in Vehicular Networks Based on Multi-Agent Rei ...
- 对BitMap和布隆过滤器的理解
BitMap 将每一个元素映射到一个Byte[]数组, 那么判断每个元素是否存在于一个数据集时, 直接用下标获取标记位进行判断即可 ○○ [] ●○ [1] ○● [2] ●● [1,2] 布隆过滤器 ...
- LTE中基本通信过程的理解——上行调度
上行调度 1. UE向ENB请求上行资源 Physical channel: PUCCH Message: SR (schedule request) 根据上层的配置UE按照一定的周期和子帧位置上通过 ...
- ucos通信邮箱的理解
学习过信号量之后再来看邮箱,发现他们是非常相似的,甚至有时候邮箱可以当做信号量来使用,邮箱相对信号量而言,只是多传递一个指针变量 和信号量相似,ucos提供了5个对邮箱操作的函数它们是: 1.建立一个 ...
最新文章
- iOS学习之路十三(动态调整UITableViewCell的高度)
- 微信支付HTTPS服务器证书验证(PHP)
- bzoj 3743 [Coci2015]Kamp——树形dp+换根
- crontab、chkconfig、systemd、unit、targ
- 成功解决This DCH driver package is not compatible with the currently installed version of Windows. This
- Spring-学习笔记09【JdbcTemplate的基本使用】
- 关于WEB三层架构的思考
- java 防渗透_「java、工程师工作经验怎么写」-看准网
- 被忽略的知识点——switch语句
- springboot整合H2内存数据库,实现单元测试与数据库无关性
- 从平台角度看物联网体系架构
- 华为手机如何调时间显示_华为手机不亮屏也能显示时间日期?10秒就能设置,原来这么简单...
- Myeclipse学习总结(9)——MyEclipse2014安装插件的几种方式(适用于Eclipse或MyEclipse其他版本)
- python安装后没有命令_Python的下载安装
- VB 各种进制相互转换大全
- Unity Heathaze shader
- yum 安装rabbitMQ
- php 改变键值,php数组中子数组如何修改键值
- 数电学习二——逻辑代数的计算与逻辑函数
- 淘宝新店刚开如何测款?