Hi team:
I use the can_pal0 and can_pan2 module in PE , and they can send and receive data with standard ID each other. Then I change the CAN_MSG_ID_STD to CAN_MSG_ID_EXT, and CAN ID from 0x01 to 0x10001, but CAN0 cannot receive data sent by CAN2.
Here are the codes for CANx initial and send, please help me check them.
void CAN0_Init(void)
{
CAN_Init(&can_pal0_instance, &can_pal0_Config0);
can_buff_config_t Rx_buffCfg = {
.enableFD = false,
.enableBRS = false,
.fdPadding = 0U,
.idType = CAN_MSG_ID_EXT,//CAN_MSG_ID_STD,
.isRemote = false
};
can_buff_config_t Tx_buffCfg = {
.enableFD = false,
.enableBRS = false,
.fdPadding = 0U,
.idType = CAN_MSG_ID_EXT,//CAN_MSG_ID_STD,
.isRemote = false
};
CAN_ConfigRxBuff(&can_pal0_instance, RX_MAILBOX_CAN0, &Rx_buffCfg, Rx_Filter);
CAN_ConfigTxBuff(&can_pal0_instance, TX_MAILBOX_CAN0, &Tx_buffCfg);
CAN_SetRxFilter(&can_pal0_instance,CAN_MSG_ID_EXT/*CAN_MSG_ID_STD*/,RX_MAILBOX_CAN0,0);
CAN_InstallEventCallback(&can_pal0_instance,&CAN0_Callback_Func,(void*)0);
CAN_Receive(&can_pal0_instance, RX_MAILBOX_CAN0, &recvMsg_CAN0);
}
void CAN2_Init(void)
{
CAN_Init(&can_pal2_instance, &can_pal2_Config0);
can_buff_config_t Rx_buffCfg = {
.enableFD = false,
.enableBRS = false,
.fdPadding = 0U,
.idType = CAN_MSG_ID_EXT,//CAN_MSG_ID_STD,
.isRemote = false
};
can_buff_config_t Tx_buffCfg = {
.enableFD = false,
.enableBRS = false,
.fdPadding = 0U,
.idType = CAN_MSG_ID_EXT,//CAN_MSG_ID_STD,
.isRemote = false
};
CAN_ConfigRxBuff(&can_pal2_instance, RX_MAILBOX_CAN2, &Rx_buffCfg, Rx_Filter);
CAN_ConfigTxBuff(&can_pal2_instance, TX_MAILBOX_CAN2, &Tx_buffCfg);
CAN_SetRxFilter(&can_pal2_instance,CAN_MSG_ID_EXT/*CAN_MSG_ID_STD*/,RX_MAILBOX_CAN2,0);
CAN_InstallEventCallback(&can_pal2_instance,&CAN2_Callback_Func,(void*)0);
CAN_Receive(&can_pal2_instance, RX_MAILBOX_CAN2, &recvMsg_CAN2);
}
CAN2 send to CAN0:
can_message_t Tx_msg = {
.cs = 0U,
.id = 0x10001, //extended ID, more than 11 bit
.data[0] = 0xaa,
.data[1] = 0xaa,
.data[2] = 0xaa,
.data[3] = 0xaa,
.data[4] = 0xaa,
.data[5] = 0xaa,
.data[6] = 0xaa,
.data[7] = 0xaa,
.length = 8
};
CAN_Send(&can_pal2_instance, TX_MAILBOX_CAN2, &Tx_msg);
Thanks!
fedora