s32k144 flexcan init cannot enter interrupt MB

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

s32k144 flexcan init cannot enter interrupt MB

跳至解决方案
375 次查看
yyyyym
Contributor I

Hi,

I have encountered a problem when using platform: used:S32SDK_S32K1xx_RTM_3.0.0 for can init.

1、Testing procedure:

Use the CAN tool to send a single frame, and then power on the machine to perform CAN initialization. Under normal circumstances, the machine should first send an ACK message and then enter the receive processing interrupt function. But when the problem occurred, it was found that only ACK was returned, but the  IFLAG1  register  corresponding to MB was not triggered, so the receiving interrupt was not triggered.

2、Current code initialization timing:

1)  FLEXCAN_DRV_Init();
2) FLEXCAN_DRV_ConfigRxMb();
3) FLEXCAN_DRV_SetRxIndividualMask();
4) FLEXCAN_DRV_Receive();
5) FLEXCAN_DRV_SetRxMaskType();
 
     I found that when FlexCAN_DRV_init is called, it has the ability to respond with an ACK(while exit freeze mode), but at this time, RXMB may not have been initialized properly, so the data was missed ,cannot trigger interrupt.
    Found CAN initialization sequence in the chip manual, it should exit freeze mode only after all the required configurations have been fully configured, but In the current code,while executing  FlexCAN_DRV_init, it enter and then exit freeze mode even though MB and Rx Individual Mask Registers  has not been initialized at this time.
    I don't know why the initialization sequence code is not completely consistent with what is described in the chip manual,but I modified the exit time from freeze mode for verification and found that the issue has been improved(not exiting freeze mode in FLEXCAN_DRV_init until executing several functions as described above 1~5).
   I'm not sure if this is the root cause of the problem,Perhaps you have encountered similar problems before, or do you have any suggestions or solutions.
 

Please guide me with this.

 

Thank you.

Regards,

 
 
FLEXCAN_DRV_Init()
      .
      .
      .
    /* Select mode */
    FLEXCAN_SetOperationMode(base, data->flexcanMode);

    if (data->flexcanMode != FLEXCAN_FREEZE_MODE)
    {
        FLEXCAN_ExitFreezeMode(base);
    }

    /* Enable FlexCAN interrupts.*/
    FLEXCAN_EnableIRQs(instance);

...

}

yyyyym_0-1755762097387.png

 

0 项奖励
回复
1 解答
350 次查看
PetrS
NXP TechSupport
NXP TechSupport

Hi,

yes, this behavior is possible if Normal mode is selected in configuration. Then after Init is called, module enters Normal mode and will ACK incoming messages.
But you can select Freeze mode as operation mode in configuration. This way module stays in Freeze mode upon Init calling. Finally call FLEXCAN_ExitFreezeMode after all MBs, masks, etc init is done.

BR, Petr

在原帖中查看解决方案

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

Hi,

yes, this behavior is possible if Normal mode is selected in configuration. Then after Init is called, module enters Normal mode and will ACK incoming messages.
But you can select Freeze mode as operation mode in configuration. This way module stays in Freeze mode upon Init calling. Finally call FLEXCAN_ExitFreezeMode after all MBs, masks, etc init is done.

BR, Petr

0 项奖励
回复
%3CLINGO-SUB%20id%3D%22lingo-sub-2155850%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3Es32k144%20flexcan%20init%20%E6%97%A0%E6%B3%95%E8%BF%9B%E5%85%A5%E4%B8%AD%E6%96%AD%20MB%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2155850%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%3CP%3E%E5%9C%A8%E4%BD%BF%E7%94%A8%20platform%3A%20used%3AS32SDK_S32K1xx_RTM_3.0.0%20for%20can%20init%20%E6%97%B6%EF%BC%8C%E6%88%91%E9%81%87%E5%88%B0%E4%BA%86%E4%B8%80%E4%B8%AA%E9%97%AE%E9%A2%98%E3%80%82%3C%2FP%3E%3CP%3E1%E3%80%81%E6%B5%8B%E8%AF%95%E7%A8%8B%E5%BA%8F%EF%BC%9A%3C%2FP%3E%3CP%3E%E4%BD%BF%E7%94%A8%20CAN%20%E5%B7%A5%E5%85%B7%E5%8F%91%E9%80%81%E5%8D%95%E5%B8%A7%EF%BC%8C%E7%84%B6%E5%90%8E%E6%8E%A5%E9%80%9A%E6%9C%BA%E5%99%A8%E7%94%B5%E6%BA%90%E4%BB%A5%E6%89%A7%E8%A1%8C%20CAN%20%E5%88%9D%E5%A7%8B%E5%8C%96%E3%80%82%E6%AD%A3%E5%B8%B8%E6%83%85%E5%86%B5%E4%B8%8B%EF%BC%8C%E6%9C%BA%E5%99%A8%E5%BA%94%E9%A6%96%E5%85%88%E5%8F%91%E9%80%81%20ACK%20%E4%BF%A1%E6%81%AF%EF%BC%8C%E7%84%B6%E5%90%8E%E8%BF%9B%E5%85%A5%E6%8E%A5%E6%94%B6%E5%A4%84%E7%90%86%E4%B8%AD%E6%96%AD%E5%8A%9F%E8%83%BD%E3%80%82%E4%BD%86%E6%98%AF%E5%BD%93%E9%97%AE%E9%A2%98%E5%8F%91%E7%94%9F%E6%97%B6%EF%BC%8C%E5%8F%91%E7%8E%B0%E5%8F%AA%E8%BF%94%E5%9B%9E%E4%BA%86%20ACK%EF%BC%8C%E4%BD%86%E6%98%AF%E6%B2%A1%E6%9C%89%E8%A7%A6%E5%8F%91%E4%B8%8E%20MB%20%E5%AF%B9%E5%BA%94%E7%9A%84%20IFLAG1%20%E5%AF%84%E5%AD%98%E5%99%A8%EF%BC%8C%E5%9B%A0%E6%AD%A4%E6%B2%A1%E6%9C%89%E8%A7%A6%E5%8F%91%E6%8E%A5%E6%94%B6%E4%B8%AD%E6%96%AD%E3%80%82%3C%2FP%3E%3CP%3E2%E3%80%81%E5%BD%93%E5%89%8D%E4%BB%A3%E7%A0%81%E5%88%9D%E5%A7%8B%E5%8C%96%E6%97%B6%E5%BA%8F%EF%BC%9A%3C%2FP%3E%3CDIV%3E%3CDIV%3E%3CSPAN%3E1)%20FLEXCAN_DRV_Init%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3E)%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CDIV%3E%3CDIV%3E%3CSPAN%3E2)%20FLEXCAN_DRV_ConfigRxMb()%EF%BC%9B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CDIV%3E%3CDIV%3E%3CSPAN%3E3)%20FLEXCAN_DRV_SetRxIndividualMask()%EF%BC%9B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CDIV%3E%3CDIV%3E%3CSPAN%3E4)%20FLEXCAN_DRV_Receive()%EF%BC%9B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CDIV%3E%3CDIV%3E%3CSPAN%3E5)%20FLEXCAN_DRV_SetRxMaskType()%EF%BC%9B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3CDIV%3E%E6%88%91%E5%8F%91%E7%8E%B0%E5%BD%93%E8%B0%83%E7%94%A8%20flexcan_drv_init%20%E6%97%B6%EF%BC%8C%E5%AE%83%E6%9C%89%E8%83%BD%E5%8A%9B%E7%94%A8%20ACK%20%E8%BF%9B%E8%A1%8C%E5%93%8D%E5%BA%94%EF%BC%88%E9%80%80%E5%87%BA%E5%86%BB%E7%BB%93%E6%A8%A1%E5%BC%8F%E6%97%B6%EF%BC%89%EF%BC%8C%E4%BD%86%E6%98%AF%E6%AD%A4%E6%97%B6%EF%BC%8CRXMB%20%E5%8F%AF%E8%83%BD%E6%B2%A1%E6%9C%89%E6%AD%A3%E7%A1%AE%E5%88%9D%E5%A7%8B%E5%8C%96%EF%BC%8C%E6%89%80%E4%BB%A5%E6%95%B0%E6%8D%AE%E4%B8%A2%E5%A4%B1%E4%BA%86%EF%BC%8C%E6%97%A0%E6%B3%95%E8%A7%A6%E5%8F%91%E4%BF%A1%E5%8F%B7%E4%B8%AD%E6%96%AD%E3%80%82%3C%2FDIV%3E%3CDIV%3E%20%20%20%20%E6%A0%B9%E6%8D%AE%E8%8A%AF%E7%89%87%E6%89%8B%E5%86%8C%E4%B8%AD%E7%9A%84%20CAN%3CSPAN%20class%3D%22%22%3E%20%E5%88%9D%E5%A7%8B%E5%8C%96%E9%A1%BA%E5%BA%8F%20%3C%2FSPAN%3E%EF%BC%8C%E5%8F%AA%E6%9C%89%E5%9C%A8%E6%89%80%E6%9C%89%E5%BF%85%E8%A6%81%E7%9A%84%E9%85%8D%E7%BD%AE%E5%85%A8%E9%83%A8%E5%AE%8C%E6%88%90%E5%90%8E%EF%BC%8C%E6%89%8D%E8%83%BD%E9%80%80%E5%87%BA%E5%86%BB%E7%BB%93%E6%A8%A1%E5%BC%8F%EF%BC%8C%E4%BD%86%E5%9C%A8%E5%BD%93%E5%89%8D%E4%BB%A3%E7%A0%81%E4%B8%AD%EF%BC%8C%E5%9C%A8%E6%89%A7%E8%A1%8C%20FlexCAN_DRV_init%20%E6%97%B6%EF%BC%8C%E5%8D%B3%E4%BD%BF%20MB%20%E5%92%8C%3CSPAN%20class%3D%22%22%3ERx%20%E7%8B%AC%E7%AB%8B%E5%B1%8F%E8%94%BD%E5%AF%84%E5%AD%98%E5%99%A8%20%3C%2FSPAN%3E%E6%AD%A4%E6%97%B6%E5%B0%9A%E6%9C%AA%E5%88%9D%E5%A7%8B%E5%8C%96%EF%BC%8C%E4%B9%9F%E4%BC%9A%E8%BF%9B%E5%85%A5%E5%B9%B6%E9%80%80%E5%87%BA%E5%86%BB%E7%BB%93%E6%A8%A1%E5%BC%8F%E3%80%82%3C%2FDIV%3E%3CDIV%3E%20%20%20%20%E6%88%91%E4%B8%8D%E7%9F%A5%E9%81%93%E4%B8%BA%E4%BB%80%E4%B9%88%E5%88%9D%E5%A7%8B%E5%8C%96%E9%A1%BA%E5%BA%8F%E4%BB%A3%E7%A0%81%E4%B8%8E%E8%8A%AF%E7%89%87%E6%89%8B%E5%86%8C%E4%B8%AD%E6%8F%8F%E8%BF%B0%E7%9A%84%E4%B8%8D%E5%AE%8C%E5%85%A8%E4%B8%80%E8%87%B4%EF%BC%8C%E4%BD%86%E6%88%91%E4%BF%AE%E6%94%B9%E4%BA%86%E4%BB%8E%E5%86%BB%E7%BB%93%E6%A8%A1%E5%BC%8F%E9%80%80%E5%87%BA%E7%9A%84%E6%97%B6%E9%97%B4%E8%BF%9B%E8%A1%8C%E9%AA%8C%E8%AF%81%EF%BC%8C%E5%8F%91%E7%8E%B0%E9%97%AE%E9%A2%98%E5%BE%97%E5%88%B0%E4%BA%86%E6%94%B9%E5%96%84%EF%BC%88%E5%9C%A8%20FLEXCAN_DRV_init%20%E4%B8%AD%E4%B8%8D%E9%80%80%E5%87%BA%E5%86%BB%E7%BB%93%E6%A8%A1%E5%BC%8F%EF%BC%8C%E7%9B%B4%E5%88%B0%E6%89%A7%E8%A1%8C%E4%B8%8A%E8%BF%B0%201~5%20%E4%B8%AD%E6%8F%8F%E8%BF%B0%E7%9A%84%E5%87%A0%E4%B8%AA%E5%87%BD%E6%95%B0%EF%BC%89%E3%80%82%3C%2FDIV%3E%3CDIV%3E%20%20%20%E6%88%91%E4%B8%8D%E7%A1%AE%E5%AE%9A%E8%BF%99%E6%98%AF%E5%90%A6%E6%98%AF%E9%97%AE%E9%A2%98%E7%9A%84%E6%A0%B9%E6%9C%AC%E5%8E%9F%E5%9B%A0%EF%BC%8C%E4%B9%9F%E8%AE%B8%E4%BD%A0%E4%BB%A5%E5%89%8D%E9%81%87%E5%88%B0%E8%BF%87%E7%B1%BB%E4%BC%BC%E7%9A%84%E9%97%AE%E9%A2%98%EF%BC%8C%E6%88%96%E8%80%85%E4%BD%A0%E6%9C%89%E4%BB%80%E4%B9%88%E5%BB%BA%E8%AE%AE%E6%88%96%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88%E3%80%82%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3CDIV%3E%3CP%3E%E8%AF%B7%E4%B8%BA%E6%88%91%E6%8C%87%E7%82%B9%E8%BF%B7%E6%B4%A5%E3%80%82%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%E8%B0%A2%E8%B0%A2%EF%BC%81%3C%2FP%3E%3CP%3E%E6%AD%A4%E8%87%B4%EF%BC%8C%3C%2FP%3E%3C%2FDIV%3E%3CDIV%3E%3CDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3EFLEXCAN_DRV_Init%20%EF%BC%88%20%EF%BC%89%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%7B%20%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%20%20%20%20%20%20.%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%20%20%20%20%20%20.%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%20%20%20%20%20%20.%3C%2FSPAN%3E%3C%2FDIV%3E%3C%2FDIV%3E%3C%2FDIV%3E%3CDIV%3E%3CDIV%3E%3CDIV%3E%3CSPAN%3E%20%20%20%20%2F*%20%E9%80%89%E6%8B%A9%E6%A8%A1%E5%BC%8F%20*%2F%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%20%20%20%20%3C%2FSPAN%3E%3CSPAN%3EFLEXCAN_SetOperationMode%3C%2FSPAN%3E%3CSPAN%3E%EF%BC%88%E5%9F%BA%E7%A1%80%20%3C%2FSPAN%3E%3CSPAN%3E%E6%95%B0%E6%8D%AE%3C%2FSPAN%3E%3CSPAN%3E-%26gt%3B%3C%2FSPAN%3E%3CSPAN%3EflexcanMode%3C%2FSPAN%3E%3CSPAN%3E)%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CBR%20%2F%3E%3CDIV%3E%3CSPAN%3E%20%20%20%20%3C%2FSPAN%3E%3CSPAN%3E%E5%A6%82%E6%9E%9C%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3E%E6%95%B0%E6%8D%AE%3C%2FSPAN%3E%3CSPAN%3E-%26gt%3B%3C%2FSPAN%3E%3CSPAN%3EflexcanMode%3C%2FSPAN%3E%20%3CSPAN%3E!%3D%3C%2FSPAN%3E%3CSPAN%3Eflexcan_freeze_mode)%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%7B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%20%20%20%20%20%20%20%20%3C%2FSPAN%3E%3CSPAN%3EFLEXCAN_ExitFreezeMode%3C%2FSPAN%3E%3CSPAN%3E(%E5%9F%BA%E7%A1%80%EF%BC%89%EF%BC%9B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%26nbsp%3B%20%7D%3C%2FSPAN%3E%3C%2FDIV%3E%3CBR%20%2F%3E%3CDIV%3E%3CSPAN%3E%20%20%20%20%2F*%20%E5%90%AF%E7%94%A8%20FlexCAN%20%E4%B8%AD%E6%96%AD*%2F%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%20%20%20%20%3C%2FSPAN%3E%3CSPAN%3EFLEXCAN_EnableIRQs%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3E%E5%AE%9E%E4%BE%8B%3C%2FSPAN%3E%3CSPAN%3E)%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CBR%20%2F%3E%3CDIV%3E...%3C%2FDIV%3E%3C%2FDIV%3E%3C%2FDIV%3E%3C%2FDIV%3E%3C%2FDIV%3E%3C%2FDIV%3E%3C%2FDIV%3E%3C%2FDIV%3E%3C%2FDIV%3E%3C%2FDIV%3E%3C%2FDIV%3E%3C%2FDIV%3E%3CP%3E%3CSPAN%3E%7D%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22yyyyym_0-1755762097387.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22yyyyym_0-1755762097387.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F353459i73C34DD984328061%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22yyyyym_0-1755762097387.png%22%20alt%3D%22yyyyym_0-1755762097387.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2156006%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20s32k144%20flexcan%20init%20cannot%20enter%20interrupt%20MB%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2156006%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%3CP%3E%E6%98%AF%E7%9A%84%EF%BC%8C%E5%A6%82%E6%9E%9C%E5%9C%A8%E9%85%8D%E7%BD%AE%E4%B8%AD%E9%80%89%E6%8B%A9%E4%BA%86%E6%AD%A3%E5%B8%B8%E6%A8%A1%E5%BC%8F%EF%BC%8C%E5%B0%B1%E6%9C%89%E5%8F%AF%E8%83%BD%E5%87%BA%E7%8E%B0%E8%BF%99%E7%A7%8D%E8%A1%8C%E4%B8%BA%E3%80%82%E8%B0%83%E7%94%A8%20Init%20%E5%90%8E%EF%BC%8C%E6%A8%A1%E5%9D%97%E8%BF%9B%E5%85%A5%E6%AD%A3%E5%B8%B8%E6%A8%A1%E5%BC%8F%EF%BC%8C%E5%B9%B6%E5%B0%86%20ACK%20%E6%94%B6%E5%88%B0%E7%9A%84%E4%BF%A1%E6%81%AF%E3%80%82%3CBR%20%2F%3E%E4%BD%86%E6%82%A8%E5%8F%AF%E4%BB%A5%E5%9C%A8%E9%85%8D%E7%BD%AE%E4%B8%AD%E9%80%89%E6%8B%A9%E5%86%BB%E7%BB%93%E6%A8%A1%E5%BC%8F%E4%BD%9C%E4%B8%BA%E8%BF%90%E8%A1%8C%E6%A8%A1%E5%BC%8F%E3%80%82%E8%BF%99%E6%A0%B7%EF%BC%8C%E6%A8%A1%E5%9D%97%E5%9C%A8%E8%B0%83%E7%94%A8%20Init%20%E6%97%B6%E5%B0%B1%E4%BC%9A%E4%BF%9D%E6%8C%81%E5%86%BB%E7%BB%93%E6%A8%A1%E5%BC%8F%E3%80%82%E6%9C%80%E5%90%8E%EF%BC%8C%E5%9C%A8%E5%AE%8C%E6%88%90%E6%89%80%E6%9C%89%20MB%E3%80%81%E6%8E%A9%E7%A0%81%E7%AD%89%E5%88%9D%E5%A7%8B%E8%AE%BE%E7%BD%AE%E5%90%8E%EF%BC%8C%E8%B0%83%E7%94%A8%20FLEXCAN_ExitFreezeMode%E3%80%82%3C%2FP%3E%0A%3CP%3EBR%2C%20Petr%3C%2FP%3E%3C%2FLINGO-BODY%3E