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

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

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

Jump to solution
475 Views
Bert2023
Contributor I

请问:

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 Kudos
Reply
1 Solution
436 Views
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

 

View solution in original post

0 Kudos
Reply
3 Replies
448 Views
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 Kudos
Reply
440 Views
Bert2023
Contributor I

多谢回复!

在请问一个问题。

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

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

Thanks!

0 Kudos
Reply
437 Views
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 Kudos
Reply