我想和canbus一起过滤。我为过滤器找到了一些东西,但我想要的是不起作用。我创建了一个像下面这样的过滤器。有些邮件无法通过此筛选器。
我应该在过滤器中进行哪些类型的更改,以便包含在以下消息中?谢谢你的回答。
传递消息

不传递的消息

我的过滤密码
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){}
}谢谢你的回答。
发布于 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是固定的,其余的地址必须被屏蔽。
https://stackoverflow.com/questions/66762026
复制相似问题