Edit online

接收过滤器

9 Aug 2024
Read time: 1 minute(s)

接收过滤器,是一个可编程的报文过滤单元,允许控制器根据报文的标识符、帧类型、第一个数据字节接收或拒绝该报文。接收过滤器由四个接收代码寄存器 CAN_RXCODE 和四个接收屏蔽寄存器 CAN_RXMASK 定义组成。

接收过滤器原理中,每条报文中的位必须匹配 RXCODE 值所指定的模式或者被 RXMASK 值屏蔽,才能使该报文通过过滤并存储到接收 FIFO 中。

接收代码寄存器、接收屏蔽寄存器,分别与缓冲 0~3 寄存器(偏移地址 0x40~0x4C)、缓冲 4~7 寄存器(偏移地址 0x50~5C)地址空间相同,因此只有控制器在复位模式时,才允许访问这两个寄存器。



1. 接收过滤器原理
  • 单过滤模式:在模式寄存器 CAN_MODE 中将 FILTER_SEL 设置为 1 ,启动单过滤模式。

    根据 RXCODE/ RXMASK 的值定义单个过滤器,其定义及过滤报文格式如图所示。



    2. 单过滤模式下单个过滤器定义及其可过滤报文格式
  • 双过滤模式:在模式寄存器 CAN_MODE 中将 FILTER_SEL 设置为 0, 启动双过滤模式。

    根据 RXCODE/ RXMASK 的值将定义两个过滤器,分别为过滤器 0 和过滤器 1。两个过滤器的标准格式 (SFF) 和扩展格式 (EFF) 下的过滤报文定义分别如下图所示。双过滤模式下,如果报文通过至少一个滤波器,则表示报文成功通过过滤。



    3. 双过滤模式下 SFF 标准格式过滤报文定义


    4. 双过滤模式下 EFF 扩展格式过滤报文定义