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.

[参考译文] 编译器/TMS320F28377S:CAN 问题

Guru**** 2482225 points
Other Parts Discussed in Thread: CONTROLSUITE, C2000WARE

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/628221/compiler-tms320f28377s-can-questions

器件型号:TMS320F28377S
Thread 中讨论的其他器件:controlSUITEC2000WARE

工具/软件:TI C/C++编译器

我要将 CAN 例程从我们之前的 F28335处理器移植到 F28377S。  (不确定为什么在发布新一代 Delfino 时必须更改 CAN 硬件、但该问题已在论坛中得到解决)。  我将使用 CCS v7.3.0和 controlSUITE 3.4.6。  

《技术手册》有一个注释: 建议只对 CAN 寄存器进行32位访问。  但是、在较高的优化级别、编译器可能会将32位访问拆分为两个16位访问、这会损坏寄存器值。 正在开发编译器修复程序。  同时、16位访问可被用作一个权变措施。

我使用的编译器是否修复了此问题?  我是否必须使用__byte_peripheral_32内在函数?  您是否有一个示例说明如何执行此操作?  您最适合使用哪组 controlSUITE 示例: 常用目录中的 F2837xS_CAN.c 或 common/driverlib 目录中的 CAN.c?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你好

    是的、您列出了应使用的正确内在函数。 它在编译器 v15.12.0.LTS 和更新版本中提供。
    使用此内在函数的修复可在我们最新的 F2837xS driverlib 中找到、该 driverlib 位于 C2000Ware (~/driverlib/f2837xs)中。 与您在 controlSUITE 中引用的 driverlib 相比、我强烈建议您使用新的 driverlib。

    此致
    Chris