SetRxFifoGlobalMask behavior

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

SetRxFifoGlobalMask behavior

679 Views
andydong1
Contributor I

Hi,

I used imxrt1050 and SDK is 2.6.1

below is my settings

uint32_t rxFifoFilter[] = {FLEXCAN_RX_FIFO_STD_FILTER_TYPE_A(0x3c0, 0, 0)};

rxFifoConfig.idFilterNum = sizeof(rxFifoFilter) / sizeof(rxFifoFilter[0]);
rxFifoConfig.idFilterTable = rxFifoFilter;
rxFifoConfig.idFilterType = kFLEXCAN_RxFifoFilterTypeA;
rxFifoConfig.priority = kFLEXCAN_RxFifoPrioHigh;
FLEXCAN_SetRxFifoConfig(EXAMPLE_CAN, &rxFifoConfig, true);

FLEXCAN_SetRxFifoGlobalMask(EXAMPLE_CAN,FLEXCAN_RX_FIFO_STD_MASK_TYPE_A(0x198,0,0));


txFrame.format = kFLEXCAN_FrameFormatStandard;
txFrame.type   = kFLEXCAN_FrameTypeData;
txFrame.id     = FLEXCAN_ID_STD(0x7ff);
txFrame.length = DLC;‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍

txFrame2.format = kFLEXCAN_FrameFormatStandard;
txFrame2.type   = kFLEXCAN_FrameTypeData;
txFrame2.id     = FLEXCAN_ID_STD(0x7c0);
txFrame2.length = DLC;

In this condition, why I still receive the txFrame ? 

the txFrame ID didn't match.

Filter         =  0x  1  1110 0000 00000000000000000000
Mask        =  0x      1100 1100 00000000000000000000

txFrame   =  0x 11  1111 1111 1000000000000000000- 
txFrame2 =  0x 11  1110 0000 0000000000000000000- 

and what's the difference between RxFifoGlobalMask and RxIndividualMask ?

thanks

Best Regareds,

Andy Dong

Labels (1)
Tags (2)
0 Kudos
2 Replies

571 Views
andydong1
Contributor I

Hi, Kerry Zhou

I used SDK_2.5.0_MIMXRT1052xxxxB\boards\evkbimxrt1050\driver_examples\flexcan\loopback_transfer

I modified this example to test the Rx FIFO.

 I used MB 13&14 to transmit the txFrame&txFrame2.

the result of above settings is not what I imagine.

the txFrame and txFrame2 masked by RxFifoGlobalMask should be below

txFrame   =  0x xx  11xx 11xx xxxxxxxxxxxxxxxxxxx
txFrame2 =  0x xx  11xx 00xx xxxxxxxxxxxxxxxxxxx- 

so txFrame will not be received.

 

Best Regards,

Andy Dong

0 Kudos

571 Views
kerryzhou
NXP TechSupport
NXP TechSupport

Hello Andy Dong ,

  What's the SDK project you are using? Could you please tell me the path?

  This one?

SDK_2.7.0_EVKB-IMXRT1050\boards\evkbimxrt1050\driver_examples\flexcan\interrupt_transfer

  Please also update your SDK to the newest version.

  It seems your code not the directly SDK original code, do you modify the code, please also tell me which file, then I can help you to check more details.

RXMGMASK is used to mask the filter fields of all Rx MBs, excluding MBs 14-15, which have individual mask registers.

RXIMR are used as acceptance masks for ID filtering in Rx MBs and the Rx FIFO

   

Wish it helps you!

Kerry

 

-------------------------------------------------------------------------------
Note:
- If this post answers your question, please click the "Mark Correct" button. Thank you!

 

- We are following threads for 7 weeks after the last post, later replies are ignored
Please open a new thread and refer to the closed one, if you have a related question at a later point in time.
-------------------------------------------------------------------------------

0 Kudos