请问:
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!
Solved! Go to Solution.
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
"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);
多谢回复!
在请问一个问题。
如果在同一个MB中接收几个不同ID(如:ID=0x35,ID=0x68,ID=0x123)的报文
是通过此函数FlexCAN_Ip_SetRxIndividualMask_Privileged( )实现吗?如何设置?
Thanks!
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