首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何制作Canbus过滤设置?

如何制作Canbus过滤设置?
EN

Stack Overflow用户
提问于 2021-03-23 11:13:44
回答 1查看 1K关注 0票数 1

我想和canbus一起过滤。我为过滤器找到了一些东西,但我想要的是不起作用。我创建了一个像下面这样的过滤器。有些邮件无法通过此筛选器。

我应该在过滤器中进行哪些类型的更改,以便包含在以下消息中?谢谢你的回答。

传递消息

不传递的消息

我的过滤密码

代码语言:javascript
复制
void Can_Filter_Config(CAN_HandleTypeDef *h_can , CAN_FilterTypeDef *filterConfig , uint64_t Ex_Adress , uint8_t filterNum)
{
  filterConfig->FilterBank      = filterNum;
  filterConfig->FilterMode      = CAN_FILTERMODE_IDMASK; //CAN_FILTERMODE_IDLIST , CAN_FILTERMODE_IDMASK
  filterConfig->FilterScale         = CAN_FILTERSCALE_32BIT;
  //Working  
  filterConfig->FilterIdHigh        = (( Ex_Adress&0xFFFF0000 )   >>13) & 0xFFFF;
  filterConfig->FilterIdLow         = (((Ex_Adress&0xFFFF)<<16) >>13) & 0xFFFF;
  filterConfig->FilterMaskIdHigh    = 0x1fff0000>>13;
  filterConfig->FilterMaskIdLow     = 0xfff8;
  filterConfig->FilterFIFOAssignment    = CAN_RX_FIFO0;
  filterConfig->FilterActivation    = ENABLE;
  filterConfig->SlaveStartFilterBank    = filterNum;

  if(HAL_CAN_ConfigFilter(h_can, filterConfig) != HAL_OK){}
}

谢谢你的回答。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-23 16:31:01

例如,可以过滤消息以减少CPU中断负载(只有当过滤器接受消息时,中断才被触发)。使用过滤器,即检查总线上的消息是否寻址到此节点,这在https://www.mi.fu-berlin.de/inf/groups/ag-tech/projects/ScatterWeb/moduleComponents/CanBus_canover.pdf的第42-48页中有详细的内容。

CAN过滤器和掩码的组织方式有点类似于IP地址(IP地址和网络掩码),这在中或在http://jodies.de/ipcalc中的IP类比中都有详细说明。

因此,在CAN过滤中,如果您想要过滤一系列使用掩码的地址:

示例2.我们希望只接受ID为00001560的帧到0000156F集筛选器到00001560集掩码到1FFFFF0的帧

在您的代码中,只有0x18是固定的,其余的地址必须被屏蔽。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66762026

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档