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.

[参考译文] CC2340R5-Q1:CC2340R5 PWM 占空比不稳定

Guru**** 2543640 points


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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1383803/cc2340r5-q1-cc2340r5-pwm-duty-cycle-is-not-stable

器件型号:CC2340R5-Q1

工具与软件:

尊敬的 TI 支持团队:

在我们的设计中、使用 DIO_19作为 PWM 输出、我们将其配置为输出8MHz (50%占空比)

(1)占空比设置

8MHz PWM 输出的设置如下:  

if (!pwmHandle){
       PWM_Params 参数;

       //初始化 PWM 驱动程序
       pwm_init();
       PWM_Params_init (&params);

       params.idleLevel     = PWM_IDLE_LOW;
       params.periodUnits   = PWM_PERIOD_Hz;

       params.periodValue   = 8000000;//将周期设置为8 MHz
       params.dutyUnits     = PWM_DUTY_分数;
       // params.dutyValue     = PWM_DUTY_FRACTION_MAX/2;// 50%占空比
       params.dutyValue     =(uint32_t)(PWM_DUTY_FRACY_MAX/1.5);// 50%占空比

       pwmHandle = PWM_open (CONFIG_PWM_0、&params);
       if (pwmHandle == NULL){
           dbg_err (sg_menu_line_Auto、"Failed to open PWM");
       }
   }
   PWM_START (pwmHandle);


为什么在我们设置  params.dutyValue =(uint32_t)(PWM_DUTY_FRACTION_MAX/2)时占空比不是50%;?  我们从示波器上测量的占空比大约为30%。

但是、如果我们设置为 params.dutyValue =(uint32_t)(PWM_DUTY_FRACY_MAX/1.5)、大约为50%……我们不知道为什么以及如何设置正确的值?

(2)占空比不稳定

占空比不是固定的50%、而是48%至53%。

请对此提供支持、谢谢!

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

    Roger、您好!

    感谢您的提问。 我目前正在对此进行调查、并将在本周结束前向您提供反馈。 请告诉我,如果你更迫切需要这件事。

    我还可以问一下、这是不是相关的主题?  https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1384320/cc2340r5-q1-pwm-output-unstable

    此致、

    羊绒

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

    尊敬的 Cashmere:

    是的、它们是相同的情况。 因为我们面临巨大的计划压力。 您能优先考虑这种情况吗?  

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

    您好!

    这一行似乎是:
    params.dutyValue     =(uint32_t)(PWM_DUTY_FRACY_MAX/1.5);// 50%占空比
    不断除以占空比、直到周期结束。

     

    以下是针对50%占空比的工作代码:

    PWM_Params 参数;

    //初始化 PWM 驱动程序
    pwm_init();
    PWM_Params_init (&params);
    uint32_t dutyValue;

    params.idleLevel = PWM_IDLE_LOW;
    params.periodUnits = PWM_PERIOD_US;//将单位更改为 Us


    params.periodValue = 128;  
    params.dutyUnits = PWM_DUTY_US;//将单位更改为固定的 us 数、而不是小数
    params.dutyValue = 64;// 50%初始占空比

    PWM_Handle pwmHandle = PWM_open (CONFIG_PWM_0、&params);

    PWM_START (pwmHandle);


    请随时根据您的预期用例进行调整。

    非常感谢!

    此致、

    羊绒