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.

[参考译文] TMS320F28379S:CLA -将值从共享 RAM 写入 PWM 寄存器

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1429985/tms320f28379s-cla---writing-values-from-shared-ram-to-pwm-registers

器件型号:TMS320F28379S

工具与软件:

您好!

我有一个关于 CLA 的问题。

我将使用 CLA 在每个周期更新 PWM 寄存器。 我希望它的速度尽可能快、从而更大限度地提高开关频率。

在我在 CLA 中计算必要数据并将其复制到 PWM 寄存器中之前。 1.5µs 的- 2µs。
我决定将计算转移到 CPU、以便 CLA 只能集中精力更新寄存器。

CPU 计算数据并将其写入共享存储器 LS1。 然后、CLA 获取这些值并将其写入 PWM 寄存器。

我本以为这会更快、但事实恰恰相反。 现在、到 PWM 寄存器的转移将采用7µs! 这是怎么可能的?

这就是之前对寄存器的访问方式:

EPWM_setCounterCompareValue(PWM_MODULE_BASE_ADRESS_S1_S2, EPWM_COUNTER_COMPARE_A, CMPA_S1_S2);

其中 CMPA_S1_S2是在 CLA 中计算的局部变量。

这就是它现在的样子:

EPWM_setCounterCompareValue(PWM_MODULE_BASE_ADRESS_S1_S2, EPWM_COUNTER_COMPARE_A, cmp_hw_data[cla_current_shadow_index].hw[temp].CMPA_S1_S2);

其中 CMP_HW_DATA 是位于 LS1的结构。

谢谢!

此致、

Milad

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

    尊敬的 Milad:

    您是否可以打开反汇编视图并查看为此行生成的指令? 您可以通过连接调试器、并在 CLA 上下文中转到 View >> Disassembly 来完成此操作。 我怀疑 CLA 正因结构访问而负担过重。

    此外、您如何测量性能? 您是否只是在 CLA 任务的开头和结尾捕获时间戳?

    此致、

    Delaney

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

    我解决了这个问题。 这确实是结构化访问。 谢谢 Delaney 的提示。 我将其替换为数组、现在我将使用指针算术、现在速度要快得多。 我所说的< 1us。 对速度差异感到非常惊讶。

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

    尊敬的 Milad:

    很高兴听到问题已解决。 我将关闭该主题、但如果您遇到任何其他问题、可以随意创建另一个主题。

    此致、

    Delaney