您好!
是否可以使用 DSP 生成低于1Hz 的浮点 PWM 信号? (例如0.575Hz)
谢谢、
Sinan、
此致。
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.
您好!
是否可以使用 DSP 生成低于1Hz 的浮点 PWM 信号? (例如0.575Hz)
谢谢、
Sinan、
此致。
您好、Sinan、
您可以尝试以下示例:
在向上/向下计数模式下、
TPWM = 2 (TBPRD)(TTBCLK)
TTBCLK = 1/(EPWMCLK/(HSPCLKDIV * CLKDIV))
EPWMCLK 可通过 EPWMCLKDIV 位配置为 SYSCLKOUT/2。 如果您的 SYSCLKOUT 为200Mz、则 EPWMCLK 将为100MHz。
HSPCLKDIV 的最大值可以是14、对于 CLKDIV、它可以是128。
HSPCLKDIV * CLKDIV = 1792
TBCLK = EPWMCLK /(HSPCLKDIV * CLKDIV)= 100M/1792 = 55803.6
TTBCLK = 1/TBCLK = 1/55803.6 =.000018
您所需的频率为0.575Hz、因此 TPWM = 1/.575 = 1.73913
我们可以使用第一个公式[TPWM = 2 (TBPRD)(TTBCLK)]来立即求解 TBPRD
TBPRD = TPWM /(2*TTBCLK)= 1.73913 /(2*.000018)= 48309
这是上述代码:
// Set EPWMCLK to SYSCLKOUT/2. If SYSCLKOUT is 200MHz, EPWMCLK will be 100MHz
SysCtl_setEPWMClockDivider(SYSCTL_EPWMCLK_DIV_2);
// Within EPWM Initialization: Setup HSPCLKDIV and CLKDIV
EPWM_setClockPrescaler(myEPWM1_BASE,
EPWM_CLOCK_DIVIDER_128,
EPWM_HSCLOCK_DIVIDER_14);
// Within EPWM Initialization: Setup Count mode and TBPRD
EPWM_setTimeBaseCounterMode(myEPWM1_BASE, EPWM_COUNTER_MODE_UP_DOWN);
EPWM_setTimeBasePeriod(myEPWM1_BASE, 48309);
此致、
Marlyn