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.

[参考译文] TMS320F28379D:如何实现 PWM 同步?

Guru**** 2826755 points

Other Parts Discussed in Thread: C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1598778/tms320f28379d-how-pwm-synchronisation-is-achieved

部件号: TMS320F28379D
主题: C2000WARE 中讨论的其他器件

尊敬的先生/女士:
您能在下面的代码中解释一下如何实现同步吗? 因为我想更改 PWM 的同步顺序。
什么是功能的作用  
1) SysCtl_setSyncInputConfig
2) ePWM_setSyncOutPulseMode
 
我尝试遵循 C:\ti\c2000\C2000Ware_6_00_01_00\driverlib\f2837xd\examples\cpu1\epwm
EPWM_ex3_synchronization 示例。 以下代码 也来自同一文件。
 
 
initEPWM (myEPWM1_BASE); //1

  //
  //初始化具有 300 TBCLK 相移的 PWM2
  //
  initEPWM (myEPWM2_base);   //2
  ePWM_selectPeriodLoadEvent (myEPWM2_base、ePWM_shadow_load_mode_sync);
  EPWM_setPhaseShift (myEPWM2_base、150);  //300
  EPWM_setTimeBaseCounter (myEPWM2_base、150);

  //
  //通过 600 TBCLK 的相移初始化 PWM3
  //
  initEPWM (myEPWM3_base); //3
  ePWM_selectPeriodLoadEvent (myEPWM3_base、ePWM_shadow_load_mode_sync);
  EPWM_setPhaseShift (myEPWM3_base、300); //600
  EPWM_setTimeBaseCounter (myEPWM3_BASE、300);

  //
  //使用 900 TBCLK 的相移初始化 PWM4
  //
  initEPWM (myEPWM4_BASE); //4
  ePWM_selectPeriodLoadEvent (myEPWM4_BASE、ePWM_shadow_load_mode_sync);
  EPWM_setPhaseShift (myEPWM4_BASE、450);
  EPWM_setTimeBaseCounter (myEPWM4_BASE、450);

  //
  //在 CTR =0 时生成 ePWM1 SYNCO
  //
  ePWM_setSyncOutPulseMode (EPWM1_BASE、ePWM_SYNC_OUT_PULSE_ON_COUNTER_ZERO);

  //
  // ePWM2 使用 ePWM 1 SYNCO 作为其 SYNCIN。
  // ePWM2 SYNCO 是从其 SYNCIN 生成的、即 ePWM1 SYNCO
  //
  EPWM_setSyncOutPulseMode (myEPWM2_BASE、EPWM_SYNC_OUT_PULSE_ON_EPWMxSYNCIN);

  //
  // ePWM4 使用 ePWM 1 SYNCO 作为其 SYNCIN。
  //
  SysCtl_setSyncInputConfig (SysCtl_SYNC_IN_EPWM4、SysCtl_SYNC_IN_SRC_EPWM1SYNCOUT);
  //
  //启用所有相移。
  //
  EPWM_enablePhaseShiftLoad (myEPWM2_base);
  EPWM_enablePhaseShiftLoad (myEPWM3_base);
  EPWM_enablePhaseShiftLoad (myEPWM4_BASE);

  //
  //启用到 PWM 的 SYNC 和时钟
  //
  SysCtl_enablePeripheral (SYSCTL_PERIPH_CLK_TBCLKSYNC);
 
谢谢。此致、
Prashant Gugle