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:高频率 ECAP 和 Apwm 问题

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1195887/tms320f28335-high-freq-ecap-and-apwm-issue

器件型号:TMS320F28335

我从函数发生器生成了一个1kHz 50%占空比的方波脉冲信号、并使用 ECAP 模块施加到端口 GPIO24 (eCAP1)。 该信号显示在观察窗口上并传递到 GPIO25 (ECAP 2)、在示波器上可见。 两个问题:  

1 -当我关闭发生器信号时、该信号仍保留在缓冲器中、并且不清零。 请在关闭发生器信号后查看图片、示波器保持信号峰值既不是稳定的高电平也不是低电平。  

2 - 一旦我在 50%或发生器的不同占空比下将频率从1KHz 更改为120kHz、信号在该特定频率/占空比下不会保持稳定。 频率和占空比都不同。 请参阅下面的结果图片。

 

请在代码中提供建议。   

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

      其他 TI_大师/专家

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

    您好、Arsalan、

    我实现了不是写入 CAP1/CAP2、而是写入 CAP3/4寄存器来执行影子到活动加载。 这可能有助于解决您看到的不稳定性问题。

    ECap2Regs.CAP3 = PWM_PERIOD;
    ECap2Regs.CAP4 = PWM_Duty;

    然后、我们不应设置 TSCTR = 0、而应通过写入该寄存器/位来重新布设 ECAP 模块。

    ECap1Regs.ECCTL2.reARM = 1;

    尝试一下、让我知道它是否修复了不稳定。

    最棒的

    Ryan Ma

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

    您好、Ryan、

    感谢您在添加这些行后的帮助。 信号现在是稳定的、但有延迟、并且在关闭发生器后不会移动高电平或低电平(显示峰值)。

    请注意:在1kHz 时、该延迟非常小。 在之前的帖子中、TSCTR = 0移除了该延迟

     以下是针对120kHz 信号的更新:

    发生器中的120kHz 和50%占空比信号=>

    首先、在示波器上看不到输出、寄存器值如下所示:

    经过一些延迟(大约5-10秒)后、我得到稳定的输出。 寄存器值和输出信号显示为=>

    当关闭发生器信号时、信号保持在缓冲器中(寄存器)=>

     

    另外、我为第二个 APWM 信号引入了另一个用于 ECap3的 GPIO26、即 GPIO25 (Ecap2-APWM)的反相。 为此、我添加了一个东西、即 ECap3Regs.ECCTL2.all = 0x0496;对于190行处 APWM-Ecap2的反相信号(设置极性 APWMPOL = 1)。 此处还介绍了另外两个变量:PWM2_PERIOD 和 PWM2_DUTY。 请相应地查看代码。

    期待您的反馈

    谢谢

    此致

    Arsalan

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

    您好、Arsalan、

    当您关闭发生器时、像 CAP2/CAP1这样的 ECAP 寄存器是否不会变为零? 您能否向我展示一下、一旦关闭发生器、您会从这些寄存器中看到什么?

    您能否询问一些逻辑、以判断周期是否低于特定阈值、将您的职责设置为零或解除捕获?

    请告诉我这是否能够解决您的第一个问题。

    最棒的

    Ryan Ma

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

    您好、Ryan、

    是的、CAP1/CAP2寄存器不会变为零。 寄存器输出在最后一幅图像中给出。  目前的情况是:

    在120kHz 时、寄存器值和信号输出为:

    通道1输出:APWM1_GPIO25

    通道2输出:APWM2_GPIO26

    关闭发生器信号后:信号和寄存器的输出如下所示:

    期待您的回复。

    谢谢

    Arsalan

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

    您好 Arslan、

    信号保持高电平而不变为低电平的原因是、当计数器达到非常接近周期的 CMP 值时。 它将清除输出信号、然后在周期发生时再次置位。 这就是您在末尾看到该切换的原因

    当达到周期时、信号将被置位、并且只有在发生 CMP 事件时才切换为低电平。 因此、要关闭 ECAP、您需要将 CMP 值设置为周期。 这样、只要发生周期事件或 CMP 事件、它就会关闭。 这取决于您在何时实现。

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

    好的、感谢 Ryan 的帮助。 我正在关闭此主题、已解决。 还有一件事是 PWM 信号的死区实现。 为此、我将做一些新的介绍。谢谢 Ryan