AnsweredAssumed Answered

s23k144 CAN_ESR1  is not working properly

Question asked by shingo zhou on Jun 24, 2018
Latest reply on Jul 26, 2018 by shingo zhou


I make the two CAN wires (CAN_High and CAN_Low) short curcuit without sending any frame to MCU. Call the lib function FLEXCAN_DRV_Init(INST_CAN0COM, ...) and read the CAN_ESR1, the value of CAN_ESR1 is 0x280036 at the first time . and then, I call the FLEXCAN_DRV_Deinit(INST_CAN0COM) ,FLEXCAN_DRV_Init(INST_CAN0COM, ...) and read the CAN_ESR1 again, the value of CAN_ESR1 become 0x40080. It keep this value  all the time, even though separete the two CAN wires.


So, could the CAN_ESR1 report the real CAN status in time?

Here is my gold: detect the CAN status whether normal or bus-off.  send the standard frame if normal status,  otherwise call the FLEXCAN_DRV_Init to initialize the CAN and detect the status again till entering normal status , record the number of entering bus-off status.

But the CAN_ESR1 could not report the real status in time, How to achieve this target?