S32K312 Flexcan CANFD模式下 设置 CAN filter问题

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 
已解决

S32K312 Flexcan CANFD模式下 设置 CAN filter问题

跳至解决方案
682 次查看
Bert2023
Contributor III

请问:

S32K312 Flexcan CANFD模式下 设置 CAN filter时使用函数

FlexCAN_Ip_ConfigRxMb(INST_FLEXCAN_0, RX_MB_IDX_0, &rx_info, 0x55)

时,这样设置是否只能接收ID为0x55的报文?

如果用此函数设置filter,如何实现接收多个特定的报文(如:ID=0x35,ID=0x68,ID=0x123,)?

Thanks!

0 项奖励
回复
1 解答
643 次查看
Senlent
NXP TechSupport
NXP TechSupport

Hi@Bert2023

通常我们是为一个MB设置一个ID,或者一个ID设置多个MB。

对于一个MB设置多个ID的情况可通过设置mask来实现,一般是这个ID是一段连续的,,例如0x35~0x45这类状况。

对于0x35,0x68,0x123,其值不是连续的,这样无法通过一个mask值来实现一个MB的接收、

 

下面这个文章是S32K1的FlexCAN mask设置的教程,这原理是和S32K3几乎一样,你可以参考下.

https://community.nxp.com/t5/S32K-Knowledge-Base/S32K1xx-FlexCAN-Mask-Setting-Demo/ta-p/1519753

 

在原帖中查看解决方案

0 项奖励
回复
3 回复数
655 次查看
Senlent
NXP TechSupport
NXP TechSupport

Hi@Bert2023

"FlexCAN_Ip_ConfigRxMb(INST_FLEXCAN_0, RX_MB_IDX_0, &rx_info, 0x55)"这个函数并不设置filiter,如果你没有设置过filiter,那么默认是每个MB对设置的ID进行所有的比对。

简单来讲,如果你需要设置ID=0x35,ID=0x68,ID=0x123的接收报文,且默认不配置mask,那么你需要为每个ID设置一个MB:

FlexCAN_Ip_ConfigRxMb(INST_FLEXCAN_0, RX_MB_IDX_0, &rx_info, 0x35);

FlexCAN_Ip_ConfigRxMb(INST_FLEXCAN_0, RX_MB_IDX_1, &rx_info, 0x68);

FlexCAN_Ip_ConfigRxMb(INST_FLEXCAN_0, RX_MB_IDX_2, &rx_info, 0x123);

0 项奖励
回复
647 次查看
Bert2023
Contributor III

多谢回复!

在请问一个问题。

如果在同一个MB中接收几个不同ID(如:ID=0x35,ID=0x68,ID=0x123)的报文

是通过此函数FlexCAN_Ip_SetRxIndividualMask_Privileged(   )实现吗?如何设置?

Thanks!

0 项奖励
回复
644 次查看
Senlent
NXP TechSupport
NXP TechSupport

Hi@Bert2023

通常我们是为一个MB设置一个ID,或者一个ID设置多个MB。

对于一个MB设置多个ID的情况可通过设置mask来实现,一般是这个ID是一段连续的,,例如0x35~0x45这类状况。

对于0x35,0x68,0x123,其值不是连续的,这样无法通过一个mask值来实现一个MB的接收、

 

下面这个文章是S32K1的FlexCAN mask设置的教程,这原理是和S32K3几乎一样,你可以参考下.

https://community.nxp.com/t5/S32K-Knowledge-Base/S32K1xx-FlexCAN-Mask-Setting-Demo/ta-p/1519753

 

0 项奖励
回复