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.

TMS320F28335: eCAN: Unexpected Cessation of Transmit Operation : ERRATA

Part Number: TMS320F28335
Other Parts Discussed in Thread: C2000WARE

As part of a development for Airbus Helicopters, I have to cover a req related to an errata of the DSP.

The F28335 DSP transmits and receives CAN frames by using ECAN-A

 

F28335 DSP transmits each 50 ms 12 frames (in sequence) from 12 different mailboxes.

 

Errata is:

 

Advisory eCAN: Unexpected Cessation of Transmit Operation

Revision(s) Affected 0, A

Details In rare instances, the cessation of message transmission from the eCAN module has

been observed (while the receive operation continues normally). This anomalous state

may occur without any error frames on the bus.

Workaround(s) The Time-out feature (MOTO) of the eCAN module may be employed to detect this

condition. When this occurs, set and clear the CCR bit (using the CCE bit for verification)

to remove the anomalous condition.

 

 

To cover, I code the following:

-          MOTO registers are initialized with values as 500 µs for first message, 1000 µs for next … and so on. (with CAN speed set to 500 Kb/s and DLC set to 8 bytes, max transmission value is around 280 µs)

-          CANTSC is cleared each 50 ms before sending the CAN frames

-          CANTOC is set with a bit set for each message sent.

 

With a serial debugger, I see that MOTS registers are valid values (for all the messages sent):

-          0x9C for first value                                312 µs (2 µs resolution as 500 Kb/s)

-          0x12C for second                   600 µs                   Delta = 288 µs

-          0x1B8                                          880 µs                   Delta = 280 µs

-          0x246                                          1164 µs                 Delta = 284 µs

-          0x2D1, 0x35D, 0x3E9 …

 

 

I want next, verify that if the message is not sent before MOTO value, CANTOS bit is set.

 

So I change with debugger MOTO value: by example, I change first MOTO value with 0x01 (instead of 0xFA = 500 µs (2 µs resolution)

 

I can see that CANTOS bit 0 toggles 0 /1, (as time out is always set, why CANTOS bit is not always set ? )

Same for any other MOTO value changed.

 

 

As the workaround specifies the use of MOTO:

-  The Time-out feature (MOTO) of the eCAN module may be employed to detect this condition.

 

With the simple example described before, CANTOS bit is not systematically set : 

how can I do to be sure that

Unexpected Cessation of Transmit Operation

Will be always detected?

 

May i clear MOTS values before sending and verify after transmission that all MOTS values are lower than MOTO values (software function ?)

Can you send me examples of code to workaround the errata?

Can you detail more?

When this occurs, set and clear the CCR bit (using the CCE bit for verification) to remove the anomalous condition

I saw there is a state machine running : how does it work ? What is the state machine frequency ?

Any additional information will be appreciated

Salutations

 

  • Serge,

                Not sure why you opened a new thread when we were already discussing this issue in https://e2e.ti.com/support/microcontrollers/c2000/f/171/t/624320

     

    Anyway, I didn’t quite understand what you meant by "I can see that CANTOS bit 0 toggles 0 /1, (as time out is always set, why CANTOS bit is not always set ? )". In the first part, you indicate CANTOS bit gets set (like it should), but in the second part you seem to indicate CANTOS bit is not always set. Are you saying the CANTOS bit is not always set upon a time-out condition? Have you taken a look at SPRA876B on the TI website? There is an example code that shows how to implement the timeout function.

     

     

  • Hi,
    I add a new thread after a person from TI France invited me to write the problem more precisely

    I cannot find the example code in
    C:\ti\c2000\C2000Ware_1_00_01_00\device_support\f2833x\examples
    (Zip have been installed on my machine)

    Can you confirm me where are the CAN examples ?

    Effectively, CANTOS bit is not always set. Sometimes only (so bit toggles, sometimes 0, sometimes 1)

    Thanks for your response

    Salutations
  • Hi again,

    SPRA876.zip is not available on TI site
    Can you send me a valid link to get CAN examples ...

    Thanks
  • Hi Serge,

    Indeed the link to the zip file in the application report is incorrect. Sorry for that. Please use this link instead. Please let us know if this code example helps.

    Thank you,
    François.

  • Hi, Francois,

    Thanks for your reply.

    MOTO example shows the solution : I install ECan1 interrupt with MOTF flag for all the mailboxes on transmission.

    When TSC reaches MOTO[n] value , interrupt is generated as expected. (if i change with my RS232 debugger a MOTO value with a time value lower than expected !)

    Interrupt sets a flag with is used to toggle CCE before the messages transmission

    (transmission each 50 ms of 16 CAN messages)

    Thanks again

    Congratulations