This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TMS320F28377D: Errors will cause CAN to stop operating

Part Number: TMS320F28377D


Hi Champ,

I am asking for customer, though I am not familiar with CAN module at all.

For CAN applications, several mailboxes are used for filtering Rx, and other mailboxes are used for Tx.

In customer's current status, the CAN module is affected by noise due to the EMI hasn't been handled well.

It is found that the signals will become dirtier when the output power is higher, and finally the CAN will stop operating.

Rx can’t receive anything at all, also Tx can’t send any more messages.

In SCI module, if there is any error, such as PE, OE, FE error occurs, SCI will stop responding with Tx and Rx.

So I am asking that :

1). Is there any error that will cause CAN to stop operating ?

2). To reset these errors, is there a method except setting CAN_CTL.SWR = 1 ?

For the second question, the action will reset the timing settings and reset all mailbox settings, it is troublesome to set to the state before CAN stop after software reset. 

The customer has tried to execute CAN_getStatus() and reset the error flag in CAN_ES, but the operation will not be restored.

May I have your comment and support with it ?

Thanks for any comment.

BR, Johnny

  • 1). Is there any error that will cause CAN to stop operating ?

    It is very likely the node is in bus-off (BO) condition. Under BO, the node stops participating in bus activity.

    2). To reset these errors, is there a method except setting CAN_CTL.SWR = 1 ?

    There is no need to do a software reset. You can initiate a bus-off recovery, as outlined in the TRM. However, it is likely the node will go into BO again. 

    The correct solution would be to address the EMI issue, which is the root cause.

  • Hi Hareesh,

    Thanks for your support. It is true that CAN_CTL.Init will be raised, then CAN will stop.

    We have suggested to address the EMI issue as you said. 

    Currently, the customer temporarily checks the bit.Init in CAN_CTL Register if it's 1, then execute CAN_startModule(CANA_BASE).

    Thanks.