Remote frame receiving of the S32K148 FlexCAN module

显示  仅  | 搜索替代 

Remote frame receiving of the S32K148 FlexCAN module

446 次查看
Contributor I

I want to verify the remote frame sending and receiving function, but I can't receive the remote frame. It is normal to send and receive data frames. Can I modify the part marked red in the code to send and receive remote frames? You can provide the code for remote frame reception.

can_buff_config_t buffCfg = {
.enableFD = false,
.enableBRS = false,
.fdPadding = 0U,
.idType = CAN_MSG_ID_STD,
.isRemote = true

/* Configure RX buffer with index RX_MAILBOX */
CAN_ConfigRxBuff(&can_pal1_instance, RX_MAILBOX, &buffCfg, RX_MSG_ID);

/* Define receive buffer */
can_message_t recvMsg ;

/* Start receiving data in RX_MAILBOX. */
CAN_Receive(&can_pal1_instance, RX_MAILBOX, &recvMsg);

/* Wait until the previous FlexCAN receive is completed */
while(CAN_GetTransferStatus(&can_pal1_instance, RX_MAILBOX) == STATUS_SUCCESS);

/* Check the received message ID and payload */
if( == RX_MSG_ID ) //
/* Toggle output value LED1 */
PINS_DRV_TogglePins(GPIO_PORT, (1 << LED0));


0 项奖励
2 回复数

434 次查看
NXP TechSupport
NXP TechSupport


by default the remote request frame is not stored into any MB. This is determined by CTRL2[RRS]. Read chapter Remote frames for more info.

The FLEXCAN_DRV_ConfigRemoteResponseMb function can be used to prepare MB for remote request response. This need to be called just once, you need not to config MB every time. Once remote request frame is received with configured ID a message buffer becomes TX, sends a remote response and switch back to RX one to again recognize a Remote Request Frame and transmit a Response Frame in return.

BR, Petr

0 项奖励

419 次查看
Contributor I


Thank you for reply.

0 项奖励