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.

[参考译文] LAUNCHXL-F28379D:优化设置不能正常工作

Guru**** 2478765 points
Other Parts Discussed in Thread: TMS320F28379D, DRV8305, C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1464650/launchxl-f28379d-optimization-settings-not-working-properly

器件型号:LAUNCHXL-F28379D
主题中讨论的其他器件:TMS320F28379DDRV8305C2000WARE

工具与软件:

您好!

1.我们将 TMS320F28379D 和 DRV8305用于三相 BLDC 电机控制应用、我们为相同的应用制作了定制电路板。  我们有一个通过 SPI 输出编码器数据的编码器。 该编码器未直接连接到 pinmux 中定义的 SPI 引脚、因此我们未使用 SPI 库进行通信。

2.我们使用2个 GPIO、一个用作时钟、另一个用作 MISO、这就是我们从编码器获取数据所需要的。 我们已经实现并验证了代码、并且能够正确获取编码器数据。

3.但是,我们可以从 GPIO 生成的最大时钟是1us 的时间周期(所有优化都关闭了),我们想以更快的速度操作时钟,同样的,我们更改了优化设置,这是我们的观察。

  • 在某些设置中、我们能够实现高达300ns 的更高时钟速率
  • 在某些设置中、出于某种原因、会将编码器数据减半或除以4

原因是 WHA、我们该如何解决?

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

    您好!

    首先、在查看优化设置之前、请确保正在使用的 driverlib.lib 文件是发布版本({c2000Ware}/driverlib/f2837xd/driverlib/ccs/Release)、而不是调试版本({c2000Ware}/driverlib/f2837xd/driverlib/ccs/Debug)。 调试版本的优化程度较低、允许进行更深入的调试、可能会 减慢 GPIO 写入和读取等工作的速度。

    现在、对于您的优化问题、这非常奇怪。 如果我不得不在没有更完整信息的情况下进行猜测、则编译器不会"知道"该函数依赖于外部 GPIO。 当出现这种情况时、编译器可以优化掉基本功能、因为它看起来像一个变量、从不改变、因此某些系统状态看起来无法进入、可以被优化掉。  变量的"volatile"标签 基本上是通知编译器这一点并防止出现这种情况。

    如果这样做不能解决问题、请参考 C28x 编译器优化指南、第3节、以确定本节中提供的任何警告和建议是否适用。

    此致。
    Jason Osborn