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.
您好!
目前、我使用单个 PWM 发生器从引脚 PB6和 PB7获取2个独立的 PWM 信号、例如:
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);
现在、我使用倒计数策略来获取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 输出。 下面是我的代码的相关部分:
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); MAP_GPIOPinTypePWM(GPIO_PORTB_BASE, GPIO_PIN_6); MAP_GPIOPinTypePWM(GPIO_PORTD_BASE, GPIO_PIN_0); MAP_PWMGenConfigure(PWM0_BASE, PWM_GEN_0, PWM_GEN_MODE_DOWN | PWM_GEN_MODE_NO_SYNC); MAP_PWMGenPeriodSet(PWM0_BASE, PWM_GEN_0, ui32LoadA); MAP_PWMGenConfigure(PWM1_BASE, PWM_GEN_0, PWM_GEN_MODE_DOWN | PWM_GEN_MODE_NO_SYNC); MAP_PWMGenPeriodSet(PWM1_BASE, PWM_GEN_0, ui32LoadB); MAP_PWMGenEnable(PWM0_BASE, PWM_GEN_0); MAP_PWMOutputState(PWM0_BASE, PWM_OUT_0_BIT, true); MAP_PWMGenEnable(PWM1_BASE, PWM_GEN_0); MAP_PWMOutputState(PWM1_BASE, PWM_OUT_0_BIT, true); // send zero pwm MAP_PWMPulseWidthSet(PWM0_BASE, PWM_OUT_0, 6000); MAP_PWMPulseWidthSet(PWM1_BASE, PWM_OUT_0, 3000);
但是、我没有获得独立的 PWM 信号、实际上、我从引脚 PB6和 PD0获得相同的输出、PWM 信号是重叠的。 如果我改变第二个 PWM 发生器的占空比、PWM 信号顶部的器件会改变占空比、几乎就像我对它们求和一样。
那么、我的问题归纳为:如何在 tm4c123上使用2个不同的模块产生2个独立的 PWM 信号。
此致、
电流
回答我自己的问题:PD0和 PB6与 Launchpad 上的0欧姆电阻器相连、这就是 PWM 重叠的原因。 移除电阻器使我具有两个以不同频率运行的不同发生器。
最棒的酒店
电流