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:如何使用一个 LPGT 在不同的通道上发送3个 PWM 输出

Guru**** 2587365 points
Other Parts Discussed in Thread: SYSCONFIG

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1407241/cc2340r5-how-to-use-one-lpgt-to-send-3-pwm-output-on-different-different-channel

器件型号:CC2340R5
主题中讨论的其他器件:SysConfig

工具与软件:

尊敬的 Expert:

原因是它不在示例代码中。

我需要具有不同占空比设置的3个 PWM 输出。 我只想在 LGPT3中使用3通道。

SysConfig 设置如下所示。

我可以使用下面的来启用3通道、对吧?

PWMTimerLPF3_Object *对象= pwm1->object;

object->chNumber = 0;
pwm1 = PWM_OPEN (CONFIG_PWM_0、&params);
如果(pwm1 = NULL)

/* CONFIG_PWM_0未打开*/
while (1){}
}

object->chNumber = 1;
pwm11 = PWM_open (CONFIG_PWM_0、&params);
if (pwm11 == NULL)

/* CONFIG_PWM_0未打开*/
while (1){}
}
object->chNumber = 2;
pwm12 = PWM_open (CONFIG_PWM_0、&params);
如果(pwm12 = NULL)

/* CONFIG_PWM_0未打开*/
while (1){}
}
object->chNumber = 0;
PWM_START (pwm1);
object->chNumber = 1;
PWM_START (pwm11);

object->chNumber = 2;
PWM_START (pwm12);


object->chNumber = 0;
PWM_setDuty (pwm1、占空比);
object->chNumber = 1;
PWM_setDuty (pwm11、占空比);
object->chNumber = 2;
PWM_setDuty (pwm12、占空比);

但我不能让它工作。 所以,我认为我可能会误解某件事。

BR、

Frank

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

    您好、Frank、

    请注意 之前的这个 E2E 主题。   

    无论对象的 chNumber 如何、 PWMTimerLPF3_open -> PWMTimerLPF3_getPwmChannelNo 都 将选择第一个有效的 channelConfig[x].pin (来自 SysConfig 生成的 ti_drivers_config.c)作为其 pwmChannelNo。   因此、您的通道0 (第一个)可能正常工作、但通道1和2不会正常工作。

    /*
     *  ======== PWMTimerLPF3_getPwmChannelNo ========
     */
    static LGPTimerLPF3_ChannelNo PWMTimerLPF3_getPwmChannelNo(uint_least8_t index)
    {
        LGPTimerLPF3_HWAttrs const *hwAttrs;
        LGPTimerLPF3_Handle handle;
        LGPTimerLPF3_ChannelNo channelNo;
    
        handle  = (LGPTimerLPF3_Handle)&LGPTimerLPF3_config[index];
        hwAttrs = handle->hwAttrs;
    
        /* Find the channel that has been connected to a pin.
         * It's assumed that only one of the ordinary channels have been
         * muxed to a pin.
         */
        if (hwAttrs->channelConfig[0].pin != GPIO_INVALID_INDEX)
        {
            channelNo = LGPTimerLPF3_CH_NO_0;
        }
        else if (hwAttrs->channelConfig[1].pin != GPIO_INVALID_INDEX)
        {
            channelNo = LGPTimerLPF3_CH_NO_1;
        }
        else
        {
            channelNo = LGPTimerLPF3_CH_NO_2;
        }
    
        return channelNo;
    }

    您将需要将 source\ti\drivers\pwm\PWMTimerLPF3.c 文件复制到工作区、并进行相应的修改、以满足您的特定应用需求。

    此致、
    Ryan