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.
我从函数发生器生成了一个1kHz 50%占空比的方波脉冲信号、并使用 ECAP 模块施加到端口 GPIO24 (eCAP1)。 该信号显示在观察窗口上并传递到 GPIO25 (ECAP 2)、在示波器上可见。 两个问题:
1 -当我关闭发生器信号时、该信号仍保留在缓冲器中、并且不清零。 请在关闭发生器信号后查看图片、示波器保持信号峰值既不是稳定的高电平也不是低电平。
2 - 一旦我在 50%或发生器的不同占空比下将频率从1KHz 更改为120kHz、信号在该特定频率/占空比下不会保持稳定。 频率和占空比都不同。 请参阅下面的结果图片。
请在代码中提供建议。 Santosh Jha
Santosh Jha Whitney Dewey 其他 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