ST MCU Finder
安装免费手机应用,
寻找理想的ST MCU

[STM32F1] 求教CAN通信滤波器设置问题

[复制链接]
56|7
 楼主 | 2018-11-8 19:58 | 显示全部楼层 |阅读模式

CAN滤波器调试了好几天都还是不成功。
  CAN_FilterInitStructure.CAN_FilterIdHigh= (((u32)ID_Can<<3)&0x7ff0000)>>16;        
  CAN_FilterInitStructure.CAN_FilterIdLow= (((u32)ID_Can<<3)|CAN_ID_EXT|CAN_RTR_DATA)&0xf800;
这两个配置的是需要能过通过的ID号
CAN_FilterInitStructure.CAN_FilterMaskIdHigh=  (((u32)ID_Can<<3)&0x7ff0000)>>16;
CAN_FilterInitStructure.CAN_FilterMaskIdLow=  ((((u32)ID_Can<<3)&0xf800)|CAN_ID_EXT|CAN_RTR_DATA);
这两个配置的是需要对齐的位
不知道我的理解是否有误。

目前我多有节点ID都放在标识符8到23位(使用的是扩展帧),所以我配置时候滤波忽略0-8以及24-28位(滤波器这里因为左对齐实际数据会左移3位暂时不考虑)。
当前主机地址是0x00,其他节点是可以配置的地址是0x01-0xff。
目前我需要接收除了主机0x00以外还有其他节点多个地址的数据也需要接收(其他节点的地址会事先通过主机告诉该节点),这时我需要如何配置才能让我需要的节点和主机数据都能通过我的滤波器。
| 2018-11-8 20:04 | 显示全部楼层

http://blog.csdn.net/flydream0/article/details/52317532
你可以先看看这篇文章;
| 2018-11-8 20:08 | 显示全部楼层
CAN_FilterId:是过滤的;
CAN_FilterMask:是屏蔽的;
| 2018-11-8 20:11 | 显示全部楼层

需要的节点和主机数据都能通过我的滤波器
上面的ID一样,后面的数据就不会过滤;
| 2018-11-8 20:14 | 显示全部楼层
至于你需要的节点和数据,你可以通过协议来判断和处理;
 楼主 | 2018-11-8 20:18 | 显示全部楼层

其实还是不大明白,我再琢磨琢磨吧,多谢了哈,结贴了先
| 2018-11-9 09:11 | 显示全部楼层
如果调不通 可以先不设置这个
| 2018-11-9 12:55 | 显示全部楼层
网上有很多这方面成熟的文章可以参考下的
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式
我要创建版块 申请成为版主

论坛热帖

快速回复 返回顶部 返回列表