S32K344 RXFIFO Legacy

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

S32K344 RXFIFO Legacy

Jump to solution
516 Views
nirmal_masilamani
Contributor IV

Hello Team,

I am working on S32K344 EVB with CAN0, CAN TX and TX working normally. RXFIFO Legacy filter is not working, not getting any interrupt in callback.

I have attached my project here.

Tags (2)
0 Kudos
Reply
1 Solution
476 Views
Julián_AragónM
NXP TechSupport
NXP TechSupport

Hi @nirmal_masilamani

Routine and configuration seem fine. Just keep in mind that the filters' field can only be written in Freeze mode; the module blocks it in other modes.

Just move FlexCAN_Ip_SetStartMode() to after configuration:

 

uint16 can_hal_config_init_u16()
{
	uint16 ret_val_u16 = 0U;
		{
			ret_val_u16 = FlexCAN_Ip_Init(CAN_MAIN_INSTANCE, &FlexCAN_State0, &FlexCAN_Config0);
			if(E_OK == ret_val_u16)
			{
				/* Configure TX message buffer with index TX_MSG_ID and TX_MAILBOX*/
				{
					for(uint8 idx = 0U; idx < NO_OF_FILTER_ID; idx++)
					{
						can_rx_fifo_filter_table[idx].isRemoteFrame = false;
						can_rx_fifo_filter_table[idx].isExtendedFrame = false;
						can_rx_fifo_filter_table[idx].id = can_comm_filter_rx_msg_u32[idx];
					}
					FlexCAN_Ip_ConfigRxFifo(CAN_MAIN_INSTANCE,FLEXCAN_RX_FIFO_ID_FORMAT_A, can_rx_fifo_filter_table);
					ret_val_u16 = FlexCAN_Ip_SetStartMode(CAN_MAIN_INSTANCE);
					can_hal_tx_msg_uint16(CAN_MAIN_INSTANCE, 0x18EAE4F4, (uint8 *)&dummyData, CAN_MAIN_TX_MailBox);
					can_hal_start_rx_u16();
				}
			}
	}
	return ret_val_u16;
}

 

Best regards,
Julián

View solution in original post

0 Kudos
Reply
2 Replies
477 Views
Julián_AragónM
NXP TechSupport
NXP TechSupport

Hi @nirmal_masilamani

Routine and configuration seem fine. Just keep in mind that the filters' field can only be written in Freeze mode; the module blocks it in other modes.

Just move FlexCAN_Ip_SetStartMode() to after configuration:

 

uint16 can_hal_config_init_u16()
{
	uint16 ret_val_u16 = 0U;
		{
			ret_val_u16 = FlexCAN_Ip_Init(CAN_MAIN_INSTANCE, &FlexCAN_State0, &FlexCAN_Config0);
			if(E_OK == ret_val_u16)
			{
				/* Configure TX message buffer with index TX_MSG_ID and TX_MAILBOX*/
				{
					for(uint8 idx = 0U; idx < NO_OF_FILTER_ID; idx++)
					{
						can_rx_fifo_filter_table[idx].isRemoteFrame = false;
						can_rx_fifo_filter_table[idx].isExtendedFrame = false;
						can_rx_fifo_filter_table[idx].id = can_comm_filter_rx_msg_u32[idx];
					}
					FlexCAN_Ip_ConfigRxFifo(CAN_MAIN_INSTANCE,FLEXCAN_RX_FIFO_ID_FORMAT_A, can_rx_fifo_filter_table);
					ret_val_u16 = FlexCAN_Ip_SetStartMode(CAN_MAIN_INSTANCE);
					can_hal_tx_msg_uint16(CAN_MAIN_INSTANCE, 0x18EAE4F4, (uint8 *)&dummyData, CAN_MAIN_TX_MailBox);
					can_hal_start_rx_u16();
				}
			}
	}
	return ret_val_u16;
}

 

Best regards,
Julián

0 Kudos
Reply
372 Views
nirmal_masilamani
Contributor IV

Hello @Julián_AragónM ,

Thank you for reply.

Tags (3)
0 Kudos
Reply