CAN PAL Usage Issues with the S32K142 MCU

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 
已解决

CAN PAL Usage Issues with the S32K142 MCU

跳至解决方案
1,200 次查看
ykd
Contributor II

When using the code generated by CAN PAL to receive messages, all information of the first received message is displayed as 0 (the corresponding message is refreshed after exiting the interrupt). The data in the second receive interrupt works normally. Thank you for your help!

CAN_Init(&can_pal2_instance, &can_pal2_Config0);
CAN_InstallEventCallback(&can_pal2_instance, &CAN2_RXTXMsgHandle, (void*)0);

CAN_ConfigRxBuff(&can_pal2_instance, gs_CANRxIDMsgInfo.buffIdx, &gs_CANRxIDMsgInfo.config, 0x02160000);
CAN_SetRxFilter(&can_pal2_instance,CAN_MSG_ID_EXT,0,0x1fffe200);
CAN_Receive(&can_pal2_instance, 0, &gs_RXCANMsg);

void CAN2_RXTXMsgHandle(uint32_t instance,
can_event_t eventType,
uint32_t objIdx,
void *driverState)
{

    switch(eventType)
    {
 
    case CAN_EVENT_RX_COMPLETE:
    //CAN_Receive(&can_pal2_instance, 0, &gs_RXCANMsg);
    id_can_rx[id_count++] = gs_RXCANMsg.id;
        
//When powered on, the breakpoint here shows all zeros for the first time.
//CAN_Receive(&can_pal1_instance, RX_MAILBOX, &gs_RXCANMsg);
#if 1
CAN_Receive(&can_pal2_instance, 0, &gs_RXCANMsg);
CAN_Receive(&can_pal2_instance, 4, &gs_RXCANMsg);
//CAN_Receive(&can_pal1_instance, gs_CANRxPhyIDMsgInfo.buffIdx, &gs_RXCANMsg);
#endif
        break;
 
    case CAN_EVENT_TX_COMPLETE:
        //TP_DoTxMsgSuccesfulCallback();
        break;
 
    default:
        break;
    }
 
 
}
0 项奖励
回复
1 解答
1,118 次查看
PetrS
NXP TechSupport
NXP TechSupport

Hi,

when moving CAN2_RXTXMsgHandle into main.c makes the problem disappear, the most likely cause is a linkage / multiple-definition issue for your RX buffer or related globals, not the CAN PAL itself.
Be sure all shared RX/TX buffers declared once in a .c file, use extern in headers.
 
BR, Petr

在原帖中查看解决方案

0 项奖励
回复
2 回复数
1,131 次查看
ykd
Contributor II

At present, the issue is resolved when CAN2_RXTXMsgHandle is placed in the main.c file. Previously, this problem occurred when it was defined in maclcom_can.c (located in the subfolder macl_can under the mcal folder). Why does this happen?

0 项奖励
回复
1,119 次查看
PetrS
NXP TechSupport
NXP TechSupport

Hi,

when moving CAN2_RXTXMsgHandle into main.c makes the problem disappear, the most likely cause is a linkage / multiple-definition issue for your RX buffer or related globals, not the CAN PAL itself.
Be sure all shared RX/TX buffers declared once in a .c file, use extern in headers.
 
BR, Petr
0 项奖励
回复
%3CLINGO-SUB%20id%3D%22lingo-sub-2288811%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3ES32K142%20MCU%20%E7%9A%84%20CAN%20PAL%20%E4%BD%BF%E7%94%A8%E9%97%AE%E9%A2%98%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2288811%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E4%BD%BF%E7%94%A8%3CSTRONG%3ECAN%20PAL%3C%2FSTRONG%3E%E7%94%9F%E6%88%90%E7%9A%84%E4%BB%A3%E7%A0%81%E6%8E%A5%E6%94%B6%E6%8A%A5%E6%96%87%E6%97%B6%EF%BC%8C%3CSTRONG%3E%E7%AC%AC%E4%B8%80%E4%B8%AA%E6%8E%A5%E6%94%B6%E5%88%B0%E7%9A%84%E6%8A%A5%E6%96%87%3C%2FSTRONG%3E%E7%9A%84%E6%89%80%E6%9C%89%E4%BF%A1%E6%81%AF%E9%83%BD%E6%98%BE%E7%A4%BA%E4%B8%BA%200%EF%BC%88%E9%80%80%E5%87%BA%E4%B8%AD%E6%96%AD%E5%90%8E%E4%BC%9A%E5%88%B7%E6%96%B0%E7%9B%B8%E5%BA%94%E7%9A%84%E6%8A%A5%E6%96%87%EF%BC%89%E3%80%82%3CSTRONG%3E%E7%AC%AC%E4%BA%8C%E4%B8%AA%E6%8E%A5%E6%94%B6%E4%B8%AD%E6%96%AD%3C%2FSTRONG%3E%E4%B8%AD%E7%9A%84%E6%95%B0%E6%8D%AE%E6%AD%A3%E5%B8%B8%E5%B7%A5%E4%BD%9C%E3%80%82%E6%84%9F%E8%B0%A2%E6%82%A8%E7%9A%84%E5%B8%AE%E5%8A%A9%EF%BC%81%3C%2FP%3E%3CP%3ECAN_Init(%26amp%3Bcan_pal2_instance%2C%26amp%3Bcan_pal2_Config0)%3B%3CBR%20%2F%3ECAN_InstallEventCallback(%26amp%3Bcan_pal2_instance%2C%26amp%3BCAN2_RXTXMsgHandle%2C%20(void*)0)%EF%BC%9B%3C%2FP%3E%3CP%3ECAN_ConfigRxBuff(%26amp%3Bcan_pal2_instance%EF%BC%8Cgs_CANRxIDMsgInfo.buffIdx%E3%80%81%26amp%3Bgs_CANRxIDMsgInfo.config%2C%200x02160000)%3B%3CBR%20%2F%3ECAN_SetRxFilter(%26amp%3Bcan_pal2_instance%2CCAN_MSG_ID_EXT%2C0%2C0x1fffe200)%3B%3CBR%20%2F%3ECAN_Receive(%26amp%3Bcan_pal2_instance%2C%200%2C%26amp%3Bgs_RXCANMsg)%EF%BC%9B%3C%2FP%3E%3CP%3Evoid%20CAN2_RXTXMsgHandle(uint32_t%20instance%2C%3CBR%20%2F%3Ecan_event_t%20eventType%2C%3CBR%20%2F%3Euint32_t%20objIdx%2C%3CBR%20%2F%3Evoid%20*driverState)%3CBR%20%2F%3E%7B%3C%2FP%3E%3CDIV%3E%20%20%20%20switch(eventType)%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%20%26nbsp%3B%20%7B%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%20%20%20%20%E6%83%85%E5%86%B5%20CAN_EVENT_RX_COMPLETE%EF%BC%9A%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%20%20%20%20%2F%2FCAN_Receive(%26amp%3Bcan_pal2_instance%EF%BC%8C0%EF%BC%8C%26amp%3Bgs_RXCANMsg)%EF%BC%9B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%20%20%20%20id_can_rx%5Bid_count%2B%2B%5D%20%3D%20gs_RXCANMsg.id%EF%BC%9B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%26nbsp%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CDIV%3E%2F%2F%E6%8E%A5%E9%80%9A%E7%94%B5%E6%BA%90%E5%90%8E%EF%BC%8C%E6%AD%A4%E5%A4%84%E7%9A%84%E6%96%AD%E7%82%B9%E9%A6%96%E6%AC%A1%E6%98%BE%E7%A4%BA%E5%85%A8%E9%9B%B6%E3%80%82%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%2F%2FCAN_Receive(%26amp%3Bcan_pal1_instance%EF%BC%8CRX_MAILBOX%EF%BC%8C%26amp%3Bgs_RXCANMsg)%EF%BC%9B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%23if%201%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3ECAN_Receive(%26amp%3Bcan_pal2_instance%EF%BC%8C0%EF%BC%8C%26amp%3Bgs_RXCANMsg)%EF%BC%9B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3ECAN_Receive(%26amp%3Bcan_pal2_instance%EF%BC%8C4%EF%BC%8C%26amp%3Bgs_RXCANMsg)%EF%BC%9B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%2F%2FCAN_Receive(%26amp%3Bcan_pal1_instance%EF%BC%8Cgs_CANRxPhyIDMsgInfo.buffIdx%EF%BC%8C%26amp%3Bgs_RXCANMsg)%EF%BC%9B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%23endif%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%20%20%20%20%20%20%20%20%E6%89%93%E7%A0%B4%EF%BC%9B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%20%20%20%20%E6%83%85%E5%86%B5%20CAN_EVENT_TX_COMPLETE%EF%BC%9A%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%20%20%20%20%20%20%20%20%2F%2FTP_DoTxMsgSuccesfulCallback()%EF%BC%9B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%20%20%20%20%20%20%20%20%E6%89%93%E7%A0%B4%EF%BC%9B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%20%20%20%20%E9%BB%98%E8%AE%A4%EF%BC%9A%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%20%20%20%20%20%20%20%20%E6%89%93%E7%A0%B4%EF%BC%9B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%26nbsp%3B%20%7D%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3CDIV%3E%7D%3C%2FDIV%3E%3C%2FDIV%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2289306%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3E%E5%9B%9E%E5%A4%8D%EF%BC%9A%20CAN%20PAL%20Usage%20Issues%20with%20the%20S32K142%20MCU%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2289306%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E6%82%A8%E5%A5%BD%EF%BC%8C%3C%2FP%3E%0A%3CDIV%3E%E5%B0%86%20CAN2_RXTXMsgHandle%20%E7%A7%BB%E5%85%A5%20main.c%20%E6%97%B6%E4%BD%BF%E9%97%AE%E9%A2%98%E6%B6%88%E5%A4%B1%EF%BC%8C%E6%9C%80%E6%9C%89%E5%8F%AF%E8%83%BD%E7%9A%84%E5%8E%9F%E5%9B%A0%E6%98%AF%20RX%20%E7%BC%93%E5%86%B2%E5%8C%BA%E6%88%96%E7%9B%B8%E5%85%B3%E5%85%A8%E5%B1%80%E7%9A%84%E9%93%BE%E6%8E%A5%2F%E5%A4%9A%E5%AE%9A%E4%B9%89%E9%97%AE%E9%A2%98%EF%BC%8C%E8%80%8C%E4%B8%8D%E6%98%AF%20CAN%20PAL%20%E6%9C%AC%E8%BA%AB%E3%80%82%3CBR%20%2F%3E%E7%A1%AE%E4%BF%9D%E5%9C%A8%20.c%20%E6%96%87%E4%BB%B6%E4%B8%AD%E5%A3%B0%E6%98%8E%E4%B8%80%E6%AC%A1%E6%89%80%E6%9C%89%E5%85%B1%E4%BA%AB%E7%9A%84%20RX%2FTX%20%E7%BC%93%E5%86%B2%E5%8C%BA%E3%80%82%E6%96%87%E4%BB%B6%EF%BC%8C%E5%9C%A8%E5%A4%B4%E6%96%87%E4%BB%B6%E4%B8%AD%E4%BD%BF%E7%94%A8%20extern%E3%80%82%3C%2FDIV%3E%0A%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%0A%3CDIV%3EBR%2C%20Petr%3C%2FDIV%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2289082%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3E%E5%9B%9E%E5%A4%8D%EF%BC%9A%20CAN%20PAL%20Usage%20Issues%20with%20the%20S32K142%20MCU%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2289082%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E7%9B%AE%E5%89%8D%EF%BC%8C%E5%A6%82%E6%9E%9C%E5%B0%86%20CAN2_RXTXMsgHandle%20%E6%94%BE%E5%9C%A8%20main.c%20%E4%B8%AD%EF%BC%8C%E9%97%AE%E9%A2%98%E5%B0%B1%E4%BC%9A%E5%BE%97%E5%88%B0%E8%A7%A3%E5%86%B3%E3%80%82%E9%94%89%E5%88%80%E4%BB%A5%E5%89%8D%EF%BC%8C%E5%9C%A8%20maclcom_can.c%20%E4%B8%AD%E5%AE%9A%E4%B9%89%E5%AE%83%E6%97%B6%E4%BC%9A%E5%87%BA%E7%8E%B0%E8%BF%99%E4%B8%AA%E9%97%AE%E9%A2%98(%E4%BD%8D%E4%BA%8E%20mcal%20%E6%96%87%E4%BB%B6%E5%A4%B9%E4%B8%8B%E7%9A%84%20macl_can%20%E5%AD%90%E6%96%87%E4%BB%B6%E5%A4%B9%E4%B8%AD%EF%BC%89%E3%80%82%E4%B8%BA%E4%BB%80%E4%B9%88%E4%BC%9A%E5%87%BA%E7%8E%B0%E8%BF%99%E7%A7%8D%E6%83%85%E5%86%B5%EF%BC%9F%3C%2FP%3E%3C%2FLINGO-BODY%3E