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.

[参考译文] TM4C129XNCZAD:PWM 发生器代码不生成 PWM 信号。

Guru**** 2399305 points
Other Parts Discussed in Thread: TM4C129XNCZAD

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1075904/tm4c129xnczad-pwm-generator-code-does-not-generate-pwm-signal

部件号:TM4C129XNCZAD

大家好,我有一个全桥 MOSFET 驱动器,我正尝试用 TM4C129XNCZAD 发出的2PWM 信号来控制它。 我已经遵循了外设驱动程序库中的示例代码,但我正在使用的两个 PWM 针脚上获得高信号。 下面是连接示意图。

启用信号来自 PF4

全桥 MOSFET 驱动器

我的代码使 TEC +和 TEC 都保持在高位。

       SysCtlPeripheralEnable( SYSCTL_PERIPH_GPIOF );

       while(!SysCtlPeripheralReady(SYSCTL_PERIPH_GPIOF))
       {
       }

       
       GPIOPinTypeGPIOOutput( PF_PWM_PORT, PF4_OPTICAL_AMP_TEC_ENABLE_PIN);
       
       GPIOPinWrite( PF_PWM_PORT,
                     PF4_OPTICAL_AMP_TEC_ENABLE_PIN,
                     PF4_OPTICAL_AMP_TEC_ENABLE_PIN );

       SysCtlPeripheralEnable(SYSCTL_PERIPH_PWM0);

       while(!SysCtlPeripheralReady(SYSCTL_PERIPH_PWM0))
       {
       }

       GPIOPinConfigure( GPIO_PF0_M0PWM0 );
       GPIOPinConfigure( GPIO_PF1_M0PWM1 );

       PWMGenConfigure(PWM0_BASE, PWM_GEN_0, (PWM_GEN_MODE_DOWN | PWM_GEN_MODE_NO_SYNC));

       PWMDeadBandDisable(PWM0_BASE, PWM_GEN_0);

       PWMGenPeriodSet(PWM0_BASE, PWM_GEN_0, 50000u);

       PWMPulseWidthSet(PWM0_BASE, PWM_OUT_0, 25000u);
       PWMPulseWidthSet(PWM0_BASE, PWM_OUT_0, 0u);
       PWMIntDisable(PWM0_BASE, PWM_GEN_0 | PWM_INT_FAULT0);

       PWMGenEnable(PWM0_BASE, PWM_GEN_0);

       PWMOutputState(PWM0_BASE, PWM_OUT_0_BIT, true);
       PWMOutputState(PWM0_BASE, PWM_OUT_1_BIT, false);

while(1){

}

我需要一个用于一个 TEC +或 TEC 的 PWM 信号,而另一个总是低的。 当前代码尝试 通过 TEC+发送 PWM,同时保持 TEC-关闭,但它们 都使用此代码打开。  

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

    您好,

     我认为您错过了以下两行来配置 PWM 使用的引脚,除非您没有显示完整的代码。  

    MAP_GPIOPinTypePWM (GPIO _PORTF_BASE,GPIO _PIN_2);
    MAP_GPIOPinTypePWM (GPIO _PORTF_BASE,GPIO _PIN_3);

    下面还有两行,第二行覆盖脉冲宽度配置的前一行。

    PWMPulseWidthSet (PWM0_BASE,PWM_OUT,25000 u);
    PWMPulseWidthSet (PWM0_BASE,PWM_OUT,0U);

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

    所以我会添加这两行,但为什么它是 PIN2和 PIN3,在我发送的图片上,信号连接到 PIN0和 PIN1,这只是一个示例来显示我丢失了什么?

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

    很抱歉,我从另一个示例中复制并粘贴。 是的,您需要更改旧 PIN。  

    GPIOPinTypePWM (GPIO _PORTF_BASE,GPIO _PIN_0);
    GPIOPinTypePWM (GPIO _PORTF_BASE,GPIO _PIN_1);

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

    另外,添加 PIN1和 PIN0也没有帮助。

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

    您好,

     我似乎无法再现您的问题。 我在一个启动板上运行它,该启动板上的代码与您拥有的代码相同,另外还有 两个引脚的 GPIOPinTypePWM()。 正如您所看到的第二个信号(PF1),它是0V。 您能否检查您的示意图并查看您是否有外部上拉杆以提高线路性能? 对于实验,您能否切断至 MOSEFET 的导线并直接测量 PF1引脚?

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

    好的,实际上,添加这两条线解决了 PWM 的生成,我现在遇到了连接硬件的问题。 谢谢你们的帮助,我不知道我是如何错过这么简单的东西的