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.

[参考译文] 编译器/EK-TM4C123GXL:EK-TM4C123GXL 问题 PWM 死区

Guru**** 2460850 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/650173/compiler-ek-tm4c123gxl-ek-tm4c123gxl-problem-pwm-deadband

器件型号:EK-TM4C123GXL

工具/软件:TI C/C++编译器

您好!

我想产生的死区时间将是周期的2%、但我没有在示波器中得到结果、  我在哪里犯错?

我也 无法反转 PWM,为什么 PDO 输出不反转?

#include
#include
#include "inc/hw_memmap.h"
#include "inc/hw_types.h"
#include "driverlib/sysctl.h"
#include "driverlib/gpio.h"
#include "driverlib/debug.h"
#include "driverlib/pwm.h"
#include "driverlib/pin_map.h"
#include "inc/hw_gpio.h"
#include "driverlib/rom.h"


int main (空)

uint32_t cycle;
uint32_t pwmfrequency;
uint32_t 死区;
uint32_t pwmperiod;
pwmperiod=50;
pwmfrequency = SysCtlPWMClockGet ()/pwmPeriod;
死区=pwmperiod*2/100;
cycle=pwmperiod*50/100;

SysCtlClockSet (SYSCTL_SYSDIV_1_SYSCTL_USE_PLL|SYSCTL_OSC_MAIN|
SYSCTL_XTAL_16MHz);
SysCtlPWMClockSet (SYSCTL_SYSDIV_8);
SysCtlPeripheralEnable (SYSCTL_Periph_PWM1);
SysCtlPeripheralEnable (SYSCTL_Periph_PWM0);

while (!SysCtlPeripheralReady (SYSCTL_Periph_PWM0))

SysCtlPeripheralEnable (SYSCTL_Periph_GPIOD);
SysCtlPeripheralEnable (SYSCTL_Periph_GPIOE);
GPIOPinTypePWM (GPIO_PORTD_BASE、GPIO_PIN_0);
GPIOPinTypePWM (GPIO_Porte _BASE、GPIO_PIN_5);

GPIOPinConfigure (GPIO_PD0_M1PWM0);
GPIOPinConfigure (GPIO_PE5_M0PWM5);
PWMGenConfigure (PWM1_base、PWM_GEN_0、PWM_GEN_MODE_DOWN);
PWMGenConfigure (PWM0_BASE、PWM_GEN_2、PWM_GEN_MODE_DOWN);

PWMGenPeriodSet (PWM1_base、PWM_GEN_0、pwmperiod);
PWMGenPeriodSet (PWM0_BASE、PWM_GEN_2、pwmPeriod);

PWMDeadBandEnable (PWM1_base、PWM_GEN_0、死区、0);
PWMDeadBandEnable (PWM0_BASE、PWM_GEN_2、死区、0);

// PWMOutputInvert (PWM1_base、PWM_OUT_0、false);

PWMOutputState (PWM1_base、PWM_OUT_0_bit、true);
PWMOutputState (PWM0_BASE、PWM_OUT_5_BIT、TRUE);
PWMGenEnable (PWM1_base、PWM_GEN_0);
PWMGenEnable (PWM0_BASE、PWM_GEN_2);

while (1)


PWMPulseWidthSet (PWM1_base、PWM_OUT_0、cycle);
PWMPulseWidthSet (PWM0_BASE、PWM_OUT_4、cycle);


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

    您应该注意、"死区"(仅限)应用于具有(相同) PWM 发生器的两个 PWM 输出之间。    您的代码显示您选择了"尝试"在 两个 PWM 输出之间应用"死区"、但与以下不同:

    • PWM 基础!   您已选择 PWM1_base 和 PWM0_BASE
    • PWM 发生器!    您已选择 PWM_GEN_0和 PWM_GEN_2

    如您所述、这注定会失败!

    另请注意、您选择的"PD0"直接连接到另一个 MCU GPIO (PB6)-因此问题肯定会在等待...   (一旦您将 PB6配置为输出)

    我建议您找到供应商的简单 PWM 发生器示例之一-实施(正确)代码-如果您(仍然)需要"死区"帮助、则返回。

    您正处于"学习曲线"的中间-这一切都面临-首先阅读-然后再浏览许多代码示例-将快速建立您的能力和信心...

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我找不到解决方案、代码中似乎没有问题、但我无法获得结果
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    原谅-我得问-您"不"阅读或理解我的写作?
    请特别注意两个要点-它们可以完全/完全/精确地识别您的错误!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    只能从给定的发生器生成死区对。 您好像正在尝试使 M1PWM0和 M0PWM5成为一个死区对、对吧? 这不奏效。 请参阅中的死区取样 \examples\peripherals\PWM\Dead 带.c.
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 CB1、
    不知道您已经回答了。 谢谢!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    查尔斯

    原谅-是否未报告确切的信息-早已报告?

    请注意、"海报的犯罪行为"更糟糕-两个不同的 PWM 发生器两个不同的 PWM 模块!     并选择(始终)"iffy" PD0!   (直接与 PB6绑定-等待其"号召邪恶!")

    (静止(非常)-我的"死区缺失"心脏...)

    (应该张贴海报-一旦/如果返回-奖励"绿色对你"-我别无选择、只能选择"割断我自己的手腕!")

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 CB1、
    我点击了"发布"按钮、并意识到您已经多次与海报交换了。

    除了您的详细解释之外、我认为 TivaWare 示例还能提供良好的指导。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢你查尔斯-请注意(仍然)... (笑声) 我在擦手腕...
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    正确,ı 现在已调整,
    此外,我无法反转 PWM 的输出,您能帮我吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    "我无法反转 PWM 输出、这意味着什么?"    您知道、或者应该知道、存在"PWMOutputInvert"函数-您不知道吗?  

    您是否提到在"死区"限制下运行的" PWM 对"(来自同一 PWM 发生器)?

    请注意、您已获得两项验证-但您的结果"正确、调整"几乎不能深入了解您的"成功程度"。

    更详细的描述-而不是更少-极大地帮助了您的指导和帮助...

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 CB1、
    感谢您在海报上指出 PWMOutputInvert()函数。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Charles、

    有些人可能会注意到我的手腕“轻微损伤”——但不会被割伤。 很好...