1.单过滤器模式
单过滤器模式可以过滤:
- 标准帧的11位ID、RTR位、数据字节1和数据字节2
- 扩展帧的29位ID和RTR位

单滤波模式图(很重要)
2.双过滤器模式
双过滤器模式可以过滤:
- 标准帧的11位ID、RTR位、数据字节1(仅适用于滤波器Filter 1)
- 扩展帧29位ID中的高16位

双滤波模式图(很重要)
将 TWAI_RX_FILTER_MODE 的位置 0,可启动双滤波模式。此后,32-bit code/mask 的值将定义两个滤波器之 一,即滤波器 1 或滤波器 2。双滤波模式下,如果报文通过这两个滤波器中的至少一个,则表示该报文已成功 通过过滤。
3.库函数twai_types.h的配置
* @brief Initializer macro for filter configuration to accept all IDs
//接收所有的ID
*/
#define TWAI_FILTER_CONFIG_ACCEPT_ALL() {.acceptance_code = 0, .acceptance_mask = 0xFFFFFFFF .single_filter = true}
4.配置举例:过滤掉低位不为87H的扩展帧ID
twai_filter_config_t f_config;
f_config.single_filter = true; //配置为单滤波模式就足够
//左移三位是因为扩展帧ID只有29位,过滤器有32位,其中低三位是1位RTR,两位未使用
f_config.acceptance_code = 0x87 << 3;
//f:不相关的位 0:相关位
//过滤出低八位是87H的ID
f_config.acceptance_mask = 0xffffff00;
本文介绍了ESP32的CAN过滤器配置,包括单过滤器和双过滤器模式,详细阐述了过滤条件,并提供了配置示例,如如何过滤掉低位不为87H的扩展帧ID。
7322





