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.

[参考译文] CC3220SF-LAUNCHXL:PWM 测试:相位差

Guru**** 2589300 points
Other Parts Discussed in Thread: CC3220SF-LAUNCHXL, CC3200

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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/798897/cc3220sf-launchxl-pwm-test-out-of-phase

器件型号:CC3220SF-LAUNCHXL
Thread 中讨论的其他器件: CC3200

您好!

使用的器件:CC3220SF-LAUNCHXL


我们使用4个 PWM 通道,即 PWM2、PWM5、PWM6和 PWM7。
我们已将 PWM6和 PWM7设置为60%占空比、将 PWM2和 PWM5设置为30%占空比。
因此、在测试期间、我们检查了所有4个通道的逻辑分析仪是否相位差。

使所有这些器件保持同相的程序是什么?

我们有2对、第一对包含 PWM2和 PWM5、第二对包含 PWM6和 PWM7。
我们需要在每个对中反转 PWM 极性、
(占空比60%) PWM2 =~Ω PWM5
(占空比30%) PWM6 =~Ω PWM7

实现反转的步骤是什么?

 

反相也应同相。 基本上、所有4个都应该同相。



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

    请允许我花几天时间对此进行调查。 我将在5/8之前回复您。

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

    您是否有时间检查此问题?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    是否有人可以对此进行更新?

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

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

    您好 Sagar、

    很抱歉耽误你的时间。 遗憾的是、没有必要像您所描述的那样使所有 PWM 保持同相。 发生延迟的主要原因是使用 TI 驱动器单独启动每个计时器之间的延迟。

    我唯一能想到的是尽可能减少这种延迟、那就是:

    1) 1)在 TimerCC32XX.c 中、注释掉 TimerCC32XX_start()中的 TimerEnable()函数调用。


    2) 2)创建一个中断服务例程、该例程使用 driverlib 调用来启动计时器。

      (将此行从 TimerEnable 复制到您的 ISR -> HWREG (ulBase + TIMER_O_CTL)|= ulTimer &(TIMER_CTL_TAEN | TIMER_CTL_TBEN);)


    3) 3)使用正常的 TI 驱动程序函数来打开/启动计时器、然后使用 ISR 来实际启动计时器。

    谢谢、

    Alexis

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

    您好 Alexis、
    感谢您的回答、我将检查并返回给您。
    另一个问题是、基于同一个计时器的2个 PWM 是怎样的。 它们之间不应有任何相位差,对吧?
    背后的逻辑是什么?



    仅供参考,我们将使用以下代码进行 PWM:

    params.periodUnits = PWM_PERIOD_US;
    params.periodValue = pwmPeriod;
    params.dutyUnits = PWM_Duty_US;
    Params.dutyValue = 0;
    PWM_Params_init (&params);
    
    PWM_INIT ();
    PWM_OPEN (Board_PWM2、&params);
    PWM_OPEN (Board_PWM5、&params);
    PWM_OPEN (Board_PWM6、&params);
    PWM_OPEN (Board_PWM7、&params);
    
    PWM_START (pwm2);
    PWM_START (pwm5);
    PWM_START (pwm6);
    PWM_START (pwm7);
    
    PWM_setDuty (pwm2、60);
    PWM_setDuty (pwm5、60);
    PWM_setDuty (pwm6、30);
    PWM_setDuty (pwm7、30);
    
    
    

    //现在我们连接示波器

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

    您检查过吗?
    请更新我的信息。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Sagar、

    尽管它们使用相同的计时器资源、但您仍会单独启用 PWM、因此上述与 TI 驱动程序相关的相同延迟仍然是问题所在。

    谢谢、
    Alexis
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    好的、如果我错了、请纠正我的问题。 根据我的理解。 使用 SDK API 将很难或无法移除 PWM 信号之间的相位。
    我们需要使用一个可以设置计时器寄存器和手动配置 PWM 寄存器的函数。 对吧?
    请参阅我们可以测试此代码的一些示例代码。


    以下问题将有助于消除混淆:
    1.如果我们调用计时器低级函数,那么所有 PWM 都将同相吗?
    2.如果没有,我们是否需要定时器和 PWM 低级调用,使所有 PWM 同相?
    3.使用必要低级函数的步骤或顺序是什么?
    4.是否有可用的参考代码?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我们能够通过更改 PWM 函数的调用顺序来将相位最小化到可接受的水平。 但无法找到使 PWM 信号反相的方法。

    如何实现这一点?

    我找到了一个能够实现它的函数。 但无法找到任何使用它的参考代码。

    TimerControlLevel()。

    Rgards

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

    Jitendra、您好!

    是的,您可以使用 TimerControlLevel(),并参考 CC3200 SDK 中的 PWM 示例以了解其用法 ,因为这是一个 driverlib API。  

    谢谢、

    Alexis

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

    您好 Alexis、

    我将检查此信息并更新您的信息。

    我们是否有更快的方法可以获得响应?

    谢谢

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

    Jitendra、您好!

    是的、您可以发布任何进度或后续问题、我将继续监控该主题。

    谢谢、

    Alexis