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.

[参考译文] TMS570LS3137:具有十进制占空比的 PWM

Guru**** 2542950 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1313727/tms570ls3137-pwm-with-duty-cycle-decimal

器件型号:TMS570LS3137

您好

我有一个以百分比形式表示占空比为整数的 PWM 生成(例如30%)

我希望占空比为十进制(例如30.5)。

我将使用来自 HET 的设置占空比函数。 C 驱动程序

void pwmSetDuty (hetRAMBASE_t * hetRAM、Uint32 PWM、uint32 pwmDuty)
{
UINT32操作;
UINT32 pwmPolarity =0u;
uint32 pwmPeriod = hetRAM->Instruction [(PWM << 1U)+ 42U].Data + 128U;
pwmPeriod = pwmPeriod >> 7u;

if (hetRAM == hetRAM1)
{
pwmPolarity = s_het1pwmPolarity [PWM];

否则
{

如果(pwmDuty == 0u)
{
行动=(pwmPolarity== 3U)? 0u:2u;

否则、如果(pwmDuty >= 100U)
{
行动=(pwmPolarity== 3U)? 2u:0u;

否则
{
作用= pwmPolarity;

hetRAM->Instruction [(PWM << 1U)+ 41U].Control =((hetRAM->Instruction [(PWM << 1U)+ 41U].Control)&(~(UINT32)(0x00000018U))|(操作<< 3U);
hetRAM->Instruction [(PWM <<1U)+ 41U].Data =(((pwmPeriod * pwmDuty)/100U)<< 7U)+ 128U;

我将使用周期10kHz。

如何修改设置的占空比?

谢谢

法比奥

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

    尊敬的 Fabio:

    您只需将"pwmDuty"的变量类型无符号整型 浮点。

    Unknown 说:
    hetRAM->Instruction [(PWM <<1U)+ 41U].Data =((pwmPeriod * pwmDuty)/100U)<< 7U)+ 128U;

    一旦我们将变量类型更改为浮点型、数据将自动将 w.r.t 移动到我们传递的浮点值。

    --
    谢谢。此致、
    Jagadish。

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

    您好, Jagadish

    感谢您的建议。

    我更改了 pwmDuty 并使用了它  

    hetRAM->Instruction [(PWM << 1U)+ 41U].Data =((uint16_t)((pwmPeriod * pwmDuty * 128)/ 100U)+ 128U;

    并有效工作

    非常感谢

    法比奥

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

    您好, Jagadish

    我在检索有关 PWM 的分辨率信息时遇到了一些困难...还有用于管理 PWM 的寄存器

    您可以确认 PWM 的13位最大分辨率吗?

    谢谢

    法比奥

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

    尊敬的 Fabio:

    您能确认 PWM 的13位最大分辨率吗?

    最大分辨率是25位对吧?

    请验证 TRM 中的上述突出显示行。

    --
    谢谢。此致、
    Jagadish。

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

    谢谢

    法比奥