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.

Compiler/TMS320F28377S: CAN Questions

Part Number: TMS320F28377S
Other Parts Discussed in Thread: CONTROLSUITE, C2000WARE

Tool/software: TI C/C++ Compiler

I'm porting CAN routines from our previous F28335 processor to the F28377S.  (Not sure why you had to change the CAN hardware in releasing a newer generation Delfino, but that question has already been addressed in the forum).  I'll be using CCS v7.3.0 and ControlSuite 3.4.6. 

The Technical Manual has a note that says:  It is recommended to only make 32-bit accesses to the CAN registers.  However, at the higher optimization levels, the compiler may split a 32-bit access into two 16-bit accesses, which will corrupt the register value. A compiler fix is in development.  In the meantime, 16-bit accesses can be used as a workaround.

Does the compiler I'm using have this issue fixed?  Do I have to use the __byte_peripheral_32 intrinsic?  Do you have an example of how to do this?  Which set of you ControlSuite examples is the most appropriate:  F2837xS_can.c in the common directory or can.c in the common/driverlib directory?

  • Hello

    Yes, you listed the correct intrinsic that should be used. It is available in compiler v15.12.0.LTS and newer.
    The fix using this intrinsic can be found in our newest driverlib for F2837xS which is in C2000Ware (~/driverlib/f2837xs/). I highly recommend using the new driverlib versus the one you are referencing in controlSUITE.

    Best regards
    Chris