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:TMS320F28335

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1193977/tms320f28335-tms320f28335

器件型号:TMS320F28335

我从函数发生器生成了一个1kHz 50%占空比的方波脉冲信号,并使用 ECAP 模块应用于端口 GPIO24 (eCAP1)。 该信号显示在观察窗口上并传递到 GPIO25 (ECAP 2)、在示波器上可见。 首先、信号有延迟、它在大约4-5秒后生成输出、有时随着我在阶跃中增加频率而延长。 请参阅下图、在示波器上查看1KHz 50%占空比 PWM。

但是、一旦我将频率从1KHz 更改为120kHz 、50%或发生器的不同占空比、并等待一段时间或更长的时间。 同样、输出不会出现、它在示波器中显示了垃圾值。 请参阅下面的结果图片。

代码的给出如下:

社区成员,请提出相应建议。

Arsalan

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

    您好、Arsalan、

    设置周期并使 ISR 保持零后、TSCTR 或时间戳计数器将达到最大值2^32-1。

    这可能有助于解决您遇到的延迟问题。

     ECap2Regs.TSCTR = 0;                        // Clear the counter

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

    您好、Ryan、

    感谢您的回复。

    在 PWM_PERIOD 设置后清除 TSCTR 计数器后、延迟问题得到解决。 但我注意到、之后还有两个问题、

    1 -只需关闭发生器信号、该信号就会保留在缓冲器中、且不会清除。 我尝试清除代码中的中断和计数器设置、但它不起作用。 请在关闭发生器信号后查看图片、示波器保持信号峰值既不是稳定的高电平也不是低电平。

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

    期待您的反馈

    Arsalan

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

    您好、Arsalan、

    对于您的第一个问题、似乎需要额外的逻辑来检查输入捕捉是否未接收到任何输入、然后您可以将 CAP1/CAP2寄存器设置为0、关闭 CTR 等

    第二个问题可能是、您的中断每三个捕捉沿发生一次、从而更新 PWM 周期/占空比、并将计数器重置为零。 也许您可以添加一些额外的逻辑来允许中断只在 x 个事件之后发生、这样 PWM 周期/占空比寄存器可以在一个特定的周期内保持它们的值、并查看这是否使输出稳定。

    最棒的

    Ryan Ma

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

    您好、Ryan、

    感谢您的回复。 我之前的代码如下所示:

    问:对于您的第一个问题、似乎需要额外的逻辑来检查输入捕捉是否未接收到任何输入、然后您可以将 CAP1/CAP2寄存器设置为0、关闭 CTR 等

    根据第一个问题的建议:我在 ECCLR.bit.INT 的241行使用了 while 环路、然后为 eCAP1/2和 TSCR =0设置值"0"。

    Q:第二个问题可能是因为您的中断每三个捕捉沿发生一次、从而更新 PWM 周期/占空比、并将计数器重置为零。 也许您可以添加一些额外的逻辑来允许中断只在 x 个事件之后发生、这样 PWM 周期/占空比寄存器可以在一个特定的周期内保持它们的值、并查看这是否使输出稳定。

    根据第二个问题的建议:我再次使用 while 线路221、但我不确定它在从5Khz 切换到120kHz 时如何工作、以在示波器上稳定120kHz 输出结果。

    下面给出了这两个问题的代码变化。  请在代码中建议纠正这两个问题的解决方案:

    谢谢

    此致

    Arsalan

     

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

    您好、Arsalan、

    由于我们能够解决这个概念问题的配置、我无法真正帮助您完成最终实现。 这将取决于您希望如何逻辑处理此问题。  

    但是、我可以给您最后一个关于这个问题的想法。

    我建议每 x 个时间生成另一个中断、以更新您的 ecap2周期、而不是在从 eCAP1采样周期时更改同一中断处理程序中的 ecap2周期。 这样、您就可以对几个周期值进行采样、并每10秒更新一次 ecap2周期、例如、在一段时间内周期具有一个常量值、而不是每3次捕获边沿更新一次、并重置计数器。  

    最棒的

    Ryan Ma

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

    您好、Ryan、  

    我将思考如何发展你最后想法的这个想法。 我将花时间在代码方面实施此部件。 显然不是专家。 很抱歉、我不熟悉使用此板。 两个月前、我不知道如何使用此板和模块。 然后开始实施 TI 网站提供的实验。 我学到了很多、并将进行更多练习。 我还想问您、我是否可以再次发布此主题、或者询问其他社区成员或 TI_MasterMinds、他们可以在高频率器件上提供更多想法或解决方案。 因为我发现有些人也在高频率部件上工作。

    其次、我又提出了一个问题、我是否可以将 eCap2 /Gpio25中的死区功能添加为 APWM 模式信号、因为如果您看到图片、一旦您将其从5Khz 切换到120kHz、它们就会在更高的频率上重叠?  

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

    您好、Arsalan、

    是的、请随时发布有关您的问题的新主题。 要回答您的最后一个问题、您不能在硬件中的 eCAP 的 APWM 模式中添加死区时间、因为这不是一个内置功能。 一种选择是在占空比计算中考虑死区时间并在软件中添加。

    最棒的

    Ryan Ma

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

    谢谢