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.

[参考译文] TM4C123GH6PM:在引脚 PB6、PB7上使用不同的 PWM 发生器

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1209781/tm4c123gh6pm-using-different-pwm-generators-for-pin-pb6-pb7

器件型号:TM4C123GH6PM
主题中讨论的其他器件:TM4C123

您好!

目前、我使用单个 PWM 发生器从引脚 PB6和 PB7获取2个独立的 PWM 信号、例如:

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
MAP_SysCtlPWMClockSet(SYSCTL_PWMDIV_8);
ui32PWMClock = ui32SysClkFreq / PWM_DIV;
ui32Load = (ui32PWMClock / PWM_FRQ) - 1;
MAP_SysCtlPeripheralEnable(SYSCTL_PERIPH_PWM0);
MAP_GPIOPinConfigure(GPIO_PB6_M0PWM0);
MAP_GPIOPinConfigure(GPIO_PB7_M0PWM1);
MAP_GPIOPinTypePWM(GPIO_PORTB_BASE, GPIO_PIN_6);
MAP_GPIOPinTypePWM(GPIO_PORTB_BASE, GPIO_PIN_7);
MAP_PWMGenConfigure(PWM0_BASE, PWM_GEN_0, PWM_GEN_MODE_UP_DOWN | PWM_GEN_MODE_NO_SYNC);
MAP_PWMGenPeriodSet(PWM0_BASE, PWM_GEN_0, ui32Load);
MAP_PWMGenEnable(PWM0_BASE, PWM_GEN_0);
MAP_PWMOutputState(PWM0_BASE, PWM_OUT_0_BIT | PWM_OUT_1_BIT, true);
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

现在、我使用倒计数策略来获取2个不同的 PWM 信号、这两个信号来自单个发生器。

我是否可以在引脚 PB6和 PB7上使用不同的 PWM 发生器? 以便我可以利用 PWM 同步和其他功能? 或者我是否必须重新接线电路板、并为第二个 PWM 发生器使用不同的引脚。

此致、

电流

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

    您好 CAN、

    [quote userid="91011" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1209781/tm4c123gh6pm-using-different-pwm-generators-for-pin-pb6-pb7可否在引脚 PB6和 PB7上使用不同的 PWM 发生器? 以便我可以利用 PWM 同步和其他功能? 或者我是否必须重新接线电路板、并为第二个 PWM 发生器使用不同的引脚。

     这是不可能的。 如您所见、只有发生器0与 PB6/PB7相关。 没有其他发生器与这两个引脚相关联。 您需要为第二个 PWM 发生器使用不同的引脚。  

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

    查尔斯·蔡、您好!

    是的、我注意到 PB6和 PB7与发生器0相关、并尝试使用 D0作为次级 PWM 输出。 下面是我的代码的相关部分:

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    uint32_t ui32SysClkFreq = MAP_SysCtlClockGet();
    uint8_t PWM_DIV = 8;
    uint16_t PWM_FRQ_A = 10;
    uint16_t PWM_FRQ_B = 10;
    MAP_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);
    MAP_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD);
    MAP_SysCtlPWMClockSet(SYSCTL_PWMDIV_8);
    uint32_t ui32PWMClock = ui32SysClkFreq / PWM_DIV;
    uint32_t ui32LoadA = (ui32PWMClock / PWM_FRQ_A) - 1;
    uint32_t ui32LoadB = (ui32PWMClock / PWM_FRQ_B) - 1;
    MAP_SysCtlPeripheralEnable(SYSCTL_PERIPH_PWM0);
    MAP_SysCtlPeripheralEnable(SYSCTL_PERIPH_PWM1);
    MAP_GPIOPinConfigure(GPIO_PB6_M0PWM0);
    MAP_GPIOPinConfigure(GPIO_PD0_M1PWM0);
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    但是、我没有获得独立的 PWM 信号、实际上、我从引脚 PB6和 PD0获得相同的输出、PWM 信号是重叠的。 如果我改变第二个 PWM 发生器的占空比、PWM 信号顶部的器件会改变占空比、几乎就像我对它们求和一样。

    那么、我的问题归纳为:如何在 tm4c123上使用2个不同的模块产生2个独立的 PWM 信号。

    此致、

    电流

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

    回答我自己的问题:PD0和 PB6与 Launchpad 上的0欧姆电阻器相连、这就是 PWM 重叠的原因。 移除电阻器使我具有两个以不同频率运行的不同发生器。

    最棒的酒店

    电流