Page 1 of 1

求助 ESP32 如何配置 CAN 双滤波器模式 ?

Posted: Tue May 14, 2019 10:24 am
by 17688538143
求助 ESP32 如何配置 CAN 双滤波器模式 ?

Re: 求助 ESP32 如何配置 CAN 双滤波器模式 ?

Posted: Tue May 14, 2019 11:59 am
by ESP_Dazz
首先要根据 Dual Filter 模式计算 acceptance_code acceptance_mask。然后在配置 can_filter_config_t 时候将 single_filter 变量设为 false


Filter 1 会接受所有从 0x0F 到 0xFF 的 Standard ID 包(包括 RTR )
Filter 2 会接收所有从 0x7F0 到 0x7FF 的 Standard ID 包 (包括 RTR )
acceptance_code = 0x01E0FE00
acceptance_mask = 0x1E1F01FF
  1. static const can_filter_config_t f_config = {.acceptance_code = 0x01E0FE00, .acceptance_mask = 0x1E1F01FF, .single_filter = false};
  2.  
  3. ...
  4.  
  5. can_driver_install(&g_config, &t_config, &f_config);

Re: 求助 ESP32 如何配置 CAN 双滤波器模式 ?

Posted: Wed May 15, 2019 2:29 am
by 17688538143
你好,非常感谢你的回复!我现在需要配置CAN滤波器固定接收两个ID,需要如何配置呢?

Re: 求助 ESP32 如何配置 CAN 双滤波器模式 ?

Posted: Wed May 15, 2019 7:13 am
by ESP_Dazz
根据双模式的为将两个 ID 值写到 acceptance_code 里。如果 Filter 1 需要监测包的 Data Byte 1,必须将 Data Byte 1 值也写到 acceptance_code 里,否则要用 acceptance_mask 作为位掩码掩盖 Data Byte 1 部分。
acc_filter.png
acc_filter.png (2.9 KiB) Viewed 9649 times
请看链接了解更多详情

Re: 求助 ESP32 如何配置 CAN 双滤波器模式 ?

Posted: Tue Feb 28, 2023 7:15 am
by esp_wxyao
说的不对吧,我测试的为什么只能接收低ID低8位为F的ID呢,比如只能接收-0X1F,2F,3F一直到FF。