接收过滤器
9 Aug 2024
Read time: 1 minute(s)
接收过滤器,是一个可编程的报文过滤单元,允许控制器根据报文的标识符、帧类型、第一个数据字节接收或拒绝该报文。接收过滤器由四个接收代码寄存器 CAN_RXCODE 和四个接收屏蔽寄存器 CAN_RXMASK 定义组成。
接收过滤器原理中,每条报文中的位必须匹配 RXCODE 值所指定的模式或者被 RXMASK 值屏蔽,才能使该报文通过过滤并存储到接收 FIFO 中。
接收代码寄存器、接收屏蔽寄存器,分别与缓冲 0~3 寄存器(偏移地址 0x40~0x4C)、缓冲 4~7 寄存器(偏移地址 0x50~5C)地址空间相同,因此只有控制器在复位模式时,才允许访问这两个寄存器。
- 单过滤模式:在模式寄存器 CAN_MODE 中将 FILTER_SEL 设置为 1 ,启动单过滤模式。
根据 RXCODE/ RXMASK 的值定义单个过滤器,其定义及过滤报文格式如图所示。
- 双过滤模式:在模式寄存器 CAN_MODE 中将 FILTER_SEL 设置为 0, 启动双过滤模式。
根据 RXCODE/ RXMASK 的值将定义两个过滤器,分别为过滤器 0 和过滤器 1。两个过滤器的标准格式 (SFF) 和扩展格式 (EFF) 下的过滤报文定义分别如下图所示。双过滤模式下,如果报文通过至少一个滤波器,则表示报文成功通过过滤。