以前没有接触过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通信过滤器的理解相关推荐

  1. STM32F105 CAN通信过滤器配置问题

    总结一些最近做项目对CAN通信的过滤器配置的理解: 这里我使用STM32F105系列的芯片,有2路CAN,我使用的是CAN2,过滤器可以设置从15开始,当然,从1开始也是没有问题的: 当设置了CAN过 ...

  2. (三.0)通过FPGA实现以太网通信原理及理解

    0.0 OSI模型的简单理解 OSI(Open System Interconnect),即开放式系统互联.一般都叫OSI参考模型,是ISO(国际标准化组织)组织在1985年研究的网络互联模型.该体系 ...

  3. iic通信的深入理解(主从设备通信)

    虽然之前也研究了先iic同行基本的时序你弄明白了,可是在机子写at24c02驱动的时候由于理解不够透彻出了点问题. 一.写数据 24c02的写入数据,可以看到主从设备iic中写的过程:起始信号-> ...

  4. 串口通信与并口通信的浅理解

    在说到通信的时候,一般都会提到窜口通信和并口通信的问题,以前一直都是听别人说,我一点也不明白,毕竟这个概念还是偏硬件了点,但是人还是要往前进的,今天多google了几下,总结了下理解方式,算是一次学习 ...

  5. 对WIFI通信的一些理解(经常更新修改)

    1.WIFI模块配置的指令形式是什么? 指令形式是字符串,上位机或MCU通过串口连接WIFI芯片,发送指令协议中对应的字符串,实质就是发送这些字符串对应的ASCII码值.WIFI 芯片接受到这些字符串 ...

  6. Filter过滤器的理解(一)

    什么是过滤器 Filter也称之为过滤器,它是Servlet技术中最实用的技术,Web开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件或静 ...

  7. 香农公式--通信的浅显理解--单纯只是为了弄懂功率和信道容量的关系

    笔记的目标:简单梳理功率和信道容量的关系 其中主要是为了弄明白论文<Spectrum Sharing in Vehicular Networks Based on Multi-Agent Rei ...

  8. 对BitMap和布隆过滤器的理解

    BitMap 将每一个元素映射到一个Byte[]数组, 那么判断每个元素是否存在于一个数据集时, 直接用下标获取标记位进行判断即可 ○○ [] ●○ [1] ○● [2] ●● [1,2] 布隆过滤器 ...

  9. LTE中基本通信过程的理解——上行调度

    上行调度 1. UE向ENB请求上行资源 Physical channel: PUCCH Message: SR (schedule request) 根据上层的配置UE按照一定的周期和子帧位置上通过 ...

  10. ucos通信邮箱的理解

    学习过信号量之后再来看邮箱,发现他们是非常相似的,甚至有时候邮箱可以当做信号量来使用,邮箱相对信号量而言,只是多传递一个指针变量 和信号量相似,ucos提供了5个对邮箱操作的函数它们是: 1.建立一个 ...

最新文章

  1. iOS学习之路十三(动态调整UITableViewCell的高度)
  2. 微信支付HTTPS服务器证书验证(PHP)
  3. bzoj 3743 [Coci2015]Kamp——树形dp+换根
  4. crontab、chkconfig、systemd、unit、targ
  5. 成功解决This DCH driver package is not compatible with the currently installed version of Windows. This
  6. Spring-学习笔记09【JdbcTemplate的基本使用】
  7. 关于WEB三层架构的思考
  8. java 防渗透_「java、工程师工作经验怎么写」-看准网
  9. 被忽略的知识点——switch语句
  10. springboot整合H2内存数据库,实现单元测试与数据库无关性
  11. 从平台角度看物联网体系架构
  12. 华为手机如何调时间显示_华为手机不亮屏也能显示时间日期?10秒就能设置,原来这么简单...
  13. Myeclipse学习总结(9)——MyEclipse2014安装插件的几种方式(适用于Eclipse或MyEclipse其他版本)
  14. python安装后没有命令_Python的下载安装
  15. VB 各种进制相互转换大全
  16. Unity Heathaze shader
  17. yum 安装rabbitMQ
  18. php 改变键值,php数组中子数组如何修改键值
  19. 数电学习二——逻辑代数的计算与逻辑函数
  20. 淘宝新店刚开如何测款?

热门文章

  1. 331. 验证二叉树的前序序列化
  2. PCS2021:针对游戏内容的视频编码工具分析和数据集
  3. 如何删除360浏览器的桔梗导航
  4. 335x内核ddr3频率与电压修改
  5. Unity - Timeline 之 Deleting tracks(删除轨道)
  6. 小米路由器4A千兆版c341编程器刷breed.bin详细教程
  7. 开源社区人们总说的LGTM是什么意思?
  8. 树莓派触摸屏校准以及QT触摸屏相关问题解决
  9. BCB 第三方组件/控件 ZZ
  10. android技巧:dumpsys简化信息查看Activity结构