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.

[参考译文] TMS320F2800157:计时器和 PWM 设置

Guru**** 2460850 points
Other Parts Discussed in Thread: TMS320F2800157

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1504856/tms320f2800157-timer-and-pwm-settings

器件型号:TMS320F2800157

工具/软件:

您好:

我对 TMS320F2800157的计时器和 PWM 有三个问题。

1.

以下代码用于配置1ms 计时器:


void myCPUTIMER0_init (){
CPUTimer_setEmulationMode (myCPUTIMER0_BASE、CPUTIMER_EMULATIONMODE_STOPAFTERNEXTDECREENT);
CPUTimer_setPreScaler (myCPUTIMER0_BASE、119U);
CPUTimer_setPeriod (myCPUTIMER0_BASE、1000U);
CPUTimer_enableInterrupt (myCPUTIMER0_BASE);
CPUTimer_STOPTimer (myCPUTIMER0_BASE);

CPUTimer_reloadTimerCounter (myCPUTIMER0_BASE);
CPUTimer_startTimer (myCPUTIMER0_BASE);
}
controlCARD 使用20 MHz 晶体振荡器作为 PLL 源。


#define DEVICE_OSCSRC_FREQ 20000000U

//时钟配置:
// PLLSYSCLK = 20 MHz (XTAL_OSC)* 48 (IMULT)/(2 (REFDIV)* 4 (ODIV)* 1 (SYSDIV)
#define DEVICE_setCLOCK_CFG (SYSCTL_OSCSRC_XTAL | SYSCTL_IMULT (48)|\
SysCtl_REFDIV (2)| SysCtl_ODIV (4)|\
SysCtl_SYSDIV (1)| SysCtl_PLL_ENABLE |\
SysCtl_DCC_BASE_0)

//产生的 SYSCLK =基于 DEVICE_setCLOCK_CFG 的120 MHz
#define DEVICE_SYSCLK_FREQ ((DEVICE_OSCSRC_FREQ * 48)/(2 * 4 * 1))
在该配置中、预分频器设置为119、它将120 MHz 时钟分频到1 MHz。 但是、文档没有明确说明 CPUTimer_setPeriod ()函数如何处理周期值。 若要实现1ms 计时器间隔、我们是否应该使用:

CPUTimer_setPeriod (myCPUTIMER0_BASE、1000U);


或者应该是:


CPUTimer_setPeriod (myCPUTIMER0_BASE、999U);
(换句话说、周期值应该是1000还是1000 - 1)?

我们希望对此作出澄清。

2.

另外、对于 PWM、我们需要驱动 LED 以调节亮度。

我以  epwm_ex11_configure_signal.c 示例为参考。

EPWM_setCounterCompareValue (myEPWM0_BASE、EPWM_COUNTER_COMPARE_A、(val));

 

   //
   //启用此示例所需的中断
   //
   INTERRUPT_ENABLE (INT_EPWM1);

 中断已启用、但没有处理功能。 该函数正常工作是否需要中断? 它在示例中已启用。

3.

当我们为 PWM 生成代码时,也会生成 sync_init()函数:


void sync_init (){
SysCtl_setSyncOutputConfig (SysCtl_SYNC_OUT_SRC_EPWM1SYNCOUT);
//
// SOCA
//
SysCtl_enableExtADCSOCSsource (0);
//
// SOCB
//
SysCtl_enableExtADCSOCSsource (0);
}


但是、我们的应用不需要 SYNC。
要禁用 SYNC、我是否应该按照下图中所示的步骤操作?

此致、

Egemen

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

    尊敬的 Egemen:

    [引述 userid="544752" url="~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1504856/tms320f2800157-timer-and-pwm-settings

    (换句话说、周期值应该是1000还是1000 - 1)?

    [/报价]

    周期值应为1000。  

    [引述 userid="544752" url="~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1504856/tms320f2800157-timer-and-pwm-settings

     中断已启用、但没有处理功能。 该函数正常工作是否需要中断? 它在示例中已启用。

    [/报价]

    该示例不需要中断即可正常工作。  

    [引述 userid="544752" url="~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1504856/tms320f2800157-timer-and-pwm-settings

    要禁用 SYNC、我是否应该按照下图中所示的步骤操作?

    [/报价]

    正确! 禁用 SYNC-IN。

    此致、

    Ryan Ma