汇丰游戏网-游戏玩家聚集地

汇丰游戏网-游戏玩家聚集地

can软件如何过滤

59

CAN软件过滤是在软件层面上对CAN总线上传输的报文进行筛选和处理的过程。以下是一些常见的CAN软件过滤方法:

通过上位机配置过滤器参数

启用选项:勾选表示启用该过滤器,未勾选则该过滤无效。

ID上限(Hex):设置可接收数据的最大CAN ID,输入HEX值。

ID下限(Hex):设置可接收数据的最小CAN ID,输入HEX值。

过滤模式选择:有2种过滤模式,第一种为屏蔽位过滤,第二种为标识符列表过滤。

屏蔽位过滤

在这种模式下,硬件过滤器使用一个屏蔽位和一个标识符来定义哪些消息可以通过。屏蔽位决定了哪些位需要匹配,哪些位可以忽略。如果接收到的消息标识符与过滤器中的标识符在屏蔽位为1的地方相匹配,则消息可以通过,如果屏蔽码中的某一位为0,则标识符匹配值中的相应位可以不必与接收到的帧的标识符中的相应位相匹配。

标识符列表过滤

在这种模式下,不是采用一个标识符加一个屏蔽位的方式,而是使用2个标识符寄存器。接收报文标识符的每一位都必须跟过滤器标识符相同。

软件实现

在软件实现上,按照手册描述,我们以配置标识符列表模式为例来说明,假设在我的软件里,我想过滤的标识符为那么在CAN的初始化程序里面,我们就要加上过滤,然后在启动CAN使能中断,初始化就完成了。

添加多条过滤

如果想要过滤多个ID,可以在软件中继续添加新的过滤器。

掩码模式

设置为掩码模式主要是为了过滤出一组(多个)符合要求的ID。例如,当mask为0x0101,code为0x1010的时候,可以通过的id为0x*0*0的id可以通过。

列表模式

设置为列表模式主要是为了过滤出一个或多个符合要求的ID。例如,可过滤出一个标识,此时CAN_FxR0和CAN_FxR1中的都是要匹配的标识符,收到的帧的标识符必须与其中的一个吻合才能通过过滤。

16位和32位过滤器

设置16位过滤器只能用来过滤标准帧ID;设置32位过滤器一般用来过滤扩展帧ID(当然也可以过滤标准帧)。

通过上述方法,可以在软件层面上对CAN总线上传输的报文进行有效的过滤,以满足不同的应用需求。建议根据具体的应用场景选择合适的过滤模式和配置方法。