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.

[参考译文] TM4C129DNCPDT:PWM 占空比增加

Guru**** 2530320 points
Other Parts Discussed in Thread: EK-TM4C1294XL

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1217736/tm4c129dncpdt-pwm-duty-cycle-increase

器件型号:TM4C129DNCPDT
主题中讨论的其他器件:EK-TM4C1294XL

您好!  

 我正在以不同的宽度和间隔进行脉冲生成。 我的 PWM 设置将生成20us 的脉宽和70ms 的间隔。

void init_pwm()

SysCtlPeripheralEnable (SYSCTL_Periph_GPIOF);//系统外设启用 GPIOF GPIOF
SysCtlPeripheralEnable (SYSCTL_Periph_PWM0);//针对 PWM0启用系统外设
// SysCtlPWMClockSet (SYSCTL_PWMDIV_1);// PWM 时钟设置
PWMClockSet (PWM0_BASE、PWM_SYSCLK_DIV_64);
GPIOPinConfigure (GPIO_PF0_M0PWM0);// GPIO 引脚功能配置为 PWM
GPIOPinTypePWM (GPIO_PORTF_BASE,GPIO_PIN_0 );// PWM 的 GPIO 引脚

while (!SysCtlPeripheralReady (SYSCTL_Periph_PWM0)//等待外设就绪

//不执行任何操作
}
PWMGenConfigure (PWM0_BASE、PWM_GEN_0、PWM_GEN_MODE_DOWN|PWM_GEN_MODE_NO_SYNC);// PWM 生成0、向下模式、无同步
PWMGenPeriodSet (PWM0_BASE、PWM_GEN_0、4294967295);// PWM_Generation 0、周期设置
PWMPulseWidthSet (PWM0_BASE、PWM_OUT_0、36);//占空比
PWMOutputState (PWM0_BASE、PWM_OUT_0_BIT、TRUE);// PWM 输出使能
PWMGenEnable (PWM0_BASE、PWM_GEN_0);

}

我需要生成20us 的脉冲宽度1S 的间隔。 如何设置 PWM 模块?

此致、

Sumit Chaulya

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

    您好!

    Unknown 说:
    我想生成20us 脉冲宽度1S 间隔。 如何设置 PWM 模块?

     什么类型的 PWM 应用需要1s 的周期? 在许多 PWM 应用中、周期设置为 kHz、而不是1Hz。 PWM 计数器仅为16位。 即使将 PWM 时钟分频器设置为  PWM_SYSCLK_DIV_64、基于120MHz 系统时钟、可以生成的最大周期也将为1.875Mhz (120/64=1.875)。 当然、您也可以使用 PLL 来生成速度较慢的系统时钟、但这仍然不会为您提供1的周期。  

    Unknown 说:
    PWMGenPeriodSet (PWM0_BASE、PWM_GEN_0、4294967295);// PWM_generation 0、period set

    如上所述、该计数器只有16位、可以取最大值0xFFFF 或65535的十进制值。 您无法将  4294967295加载到16位计数器中。  

    PWM 模式中的计时器模块可以提供一个24位计数器。 但这仍然不会为您提供1周期。  

    对于一般 PWM 设置、 C:\ti\TivaWare_C_Series-2.2.0.295\examples\boards\ek-tm4c1294xl\pwm_invert 中提供了一个示例、展示如何根据分频的 PWM 时钟设置周期和占空比。  

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

    您好、Charles。

    对于生成20us 脉冲宽度和1s 脉冲间隔、您有什么建议吗?

    此致、

    总结  

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

    您好!

     我可以想象您会尝试两个计时器来生成20us 占空比和1s 周期。 您将设置一个计时器模块的超时时间为1s、另一个计时器的超时时间为20us。 1s 超时用于创建 PWM 周期。 20us 超时用于切换 GPIO 引脚。 当1s 计时器超时时时、它会产生一个中断。 在1秒 ISR 中、您将设置一个 GPIO 引脚为高电平、并且您还将以20us 的单次触发计时器模式启动第二个计时器。 您将使用单次触发计时器超时来清除 GPIO 引脚。 请注意、您无需在1秒 ISR 中等待20us。 您可以设置一个标志,以便可以在 main()函数内切换 GPIO。   

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

    您好、Charles。

        我们可以设置单稳态 PWM 吗?

        距脉冲下降沿2.1s 间隔。  

    此致、

    总结

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

    您好!

      我们可以设置单稳态 PWM 吗?

        距脉冲下降沿2.1s 间隔。  

    [/报价]

    不可以、您无法进行一次性 PWM。 您可以执行单次触发计时器模式。 有关详细信息、请参阅数据表。  

    您基本上要设置一个32位计时器和另一个16位计时器。 假设将 Timer0_A 和 Timer0_B 组合到一个32位计时器中、以创建周期。 您将设置另一个计时器、如 Timer1_A、用于生成占空比。  

    当 Timer0到期时(例如1秒)、您将在 ISR 中执行两项操作。  

     1.设置 GPIO 引脚。

     2. Launchpad Timer1_A 处于单次触发模式。  

    当 Timer1_A 到期(例如20us)时、您将清除 GPIO 引脚。  

    这只是一个想法。 您可以细化此概念或提出最适合您的应用的不同方法。