Part Number:TMS320F28035
我们用DSP的PWM1A,PWM1B,PWM2A,PWM2B控制A全桥电路,PWM3A,PWM3B,PWM4A,PWM4B控制B全桥电路。A全桥和B全桥同一时刻只开启一个。DSP中的PWM可以指定主从,当我开启A全桥工作时,将PWM1设置成主模式,PWM2设置成从模式,可以获得我们需要的PWM输出。但是我的问题是如果我要开启B全桥,PWM3,PWM4如何设置主从,比如PWM3为主,PWM4为从,如何将PWM4的从指向PWM3,而不是PWM1.
Yale Li:
Hi sulin su,
看一下ePWM模块TB子模块的同步原理:
(sprui10a_TMS320F2803x Microcontrollers Technical Reference Manual (Rev. A)第243页)
您将EPWM3的同步输入信号关闭,或者将EPWM1或EPWM2的同步信号输出关闭即可。
,
sulin su:
感谢你的回复,对我有价值,我先看下!
,
sulin su:
能否提供一段示例代码?原理我知道了,所有PWM用外设时钟同步,但是具体如何写代码还不太清楚
,
Yale Li:
Hi sulin su,
不光是外设时钟同步,还有同步移相。外设时钟同步只保证所有ePWM模块的计数器在同一时刻增/减计数;而同步移相可以使得从PWM按照期望的移相值相对于主PWM移相。
TI提供的例程都在–>C2000WARE<–中。没有针对这个系列的同步移相例程。
但是这一功能配置并不困难。在您阅读上述TRM中的相关部分了解清楚相关模块(TB)的工作原理后,在例程的基础上修改相应寄存器即可。
简单来说需要配置两个部分:一个是配置需要用到的模块的同步输入/输出信号;另一个是配置移相值。当然相应的使能位需要使能。
,
sulin su:
如果我要独立启动B全桥EPWM3,EPWM4两个PWM 其中PWM3为主,PWM4为从,那么这样设置是否可以:
EPwm2Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_DISABLE; //关闭PWM2的同步输出信号
EPwm3Regs.TBCTL.bit.PHSEN = TB_DISABLE; //启用PWM3为主,屏蔽PWM3输入同步信号
EPwm4Regs.TBCTL.bit.PHSEN = TB_ENABLE; //将PWM3的输出同步信号作为PWM4 的输入同步信号
,
Yale Li:
可以,最好再指定一下EPWM3的输出同步信号源:
如果不配置的话默认是主EPWM的输入同步信号或软件触发:
另外在sprui10a_TMS320F2803x Microcontrollers Technical Reference Manual (Rev. A)中是有参考代码的,从第297页的Example 3-9开始到Example 3-15都配置了移相,您可以参考一下。