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.

TMS320F280025: 关于up-down计数模式下的HRPRD问题

Part Number: TMS320F280025


引用一下类似的帖子,并基于此展开讨论。 虽然是基于F280025 TRM和测试的,原理相同,ePWM Type应该也是完全相同的。

https://e2echina.ti.com/support/microcontrollers/c2000/f/c2000-microcontrollers-forum/201190/f28379d-hrpwm-up-down

1、赞同关于原贴作者关于demo code bug的观点,在up-down计数时,TBPRD是不需要减1的,见F280025 TRM 17.4.3 Calculating PWM period and Frequency 章节描述,这个bug在最新的CCS ware上都没有消除。

2、原贴内容:

       【TI的HRPWM真是一个好功能,解决了我面临的一个大问题。但目前遇到一个关于HRPWM配置的问题:

           EPWM1和EPWM2计数器工作于UP-DOWN模式,来产生对称的PWM波。在UP-DOWN模式下,HRCNFG的EDGMODE应为both edges模式。如Handbook所述,在HRPWM的both edges模式下,

           TBCTL的PHASEN必须设定为1(实验中也发现设定为1之后PWM的精度最高)。对于EPWM2,PHASEN设定为1没问题,但EPWM1就不行了,因为EPWM1需工作为MASTER。

           请问TI:这种情况下到底该如何配置EPWM1,使其可产生高精度PWM呢?

           目前想到2个解决方案:

           1)让EPWM1和EPWM工作与UP 模式,然后让HRPWM工作于falling edge模式。但这会产生不对称PWM波形,影响控制性能;

           2)改变电路设计,让EPWM2和EPWM3产生HRPWM,EPWM1作为同步用的MASTER。改板的时间较长。

          有没有别的方法解决这个问题呢?】

           【上面的问题我后来解决了,解决方案供其他人参考:在设置EPWM为UP-DOWN计数模式时,一定要根据数据手册设置PHSEN和TBPHSHRLOADE为1。然后启动EPWM,并施加SWFSYNC信号。

                施加完SWFSYNC信号后,再将Master EPWM的PHSEN设为0。这样产生的HRPWM的频率和占空比都跟期望值相同。

                采用上述方案,在500kHz的开关频率下,最终功率器件可以产生精度为0.2ns左右的斩波波形,十分接近F28379D的150ps理论值。】

            

             这里想表达2个观点。

            第1,在Type1 ePWM中,PWM sync信号是串联的,PWM1的SYNC.OUT连到PWM2的SYNC.IN 所有才有master-slave说法。在F280025上Sync信号有了很大的变化,由串联变成了并联。

                      比如PWM1可以发出Sync.OUT信号,而PWM2~PWMn都可以接收PWM1的Sync.OUT信号作为Sync.IN而产生SYNC动作,见EPWMSYNCINSEL和EPWMSYNCOUTEN寄存器描述。

                      我没有细读2837x的TRM,不知道是否也变成了这样。如果是,那就没有所谓的master-slave一说了,随便哪个PWM都可以作为发出SyncOUT信号,其余PWM以此同步即可。

             第2,同步是一个动态的过程,也就是只要PWM运行,就要主动进行同步。因为不同步的产生就是由于各PWM运行久了就会产生偏差所以才要同步。

                       按照原贴作者的解决办法,先进行一次软件同步,然后PHSEN=OFF,这是大聪明吗?TRM 17.15.1.5.4.1 第6点指出,如要TBPHSHR也完全同步,PHSEN要设置为1。我想这里

                       的描述应该是有些歧义?我的理解是说这个PWM要跟其他PWM同步,包括HRPRD也同步,那自然是要跟TBPRD一样要在某个时刻去同步加载。差别在于TBPRD是从TBPHS加载的,

                      而HRPRD则同时从shadow reg加载到active reg,与TBPRD从特定的TBPHS reg加载是有区别的。请TI确认一下是不是这样?

                      对于原贴作者用PWM1 和PWM2同步,其实完全就可以设置PWM1的PHSEN=FALSE,它就是你所说的master,它不需要SYNCIN源来做同步的。

                     hrpwm_ex3_prd_updown_sfo例子中,虽然用了5对PWM来进行测试,但并没有考虑同步的问题。包括上面说的关于PHSEN,所有PWM的PHSEN都没有开启。

 

  • 在TRM 3.13.18.1发现还有这样一个SYNCSEL寄存器,里面有EPWM1/4/7/10/13SYNCIN信号源选择,有点迷糊了:

    (1)哪里来的EPWM10 13这些啊?

    (2)EPWM的同步信号输入不是在EPWMSYNCINSEL寄存器中设置吗,见F280025 TRM 17.16.2.3。

  • 1.    是的,原贴提到的例程中,这个地方确实有误。我会尝试联系相关人员修改。

    2-1. 这两款器件的同步信号链确实不相同,帖出来供你参考一下:

    左面是F28002x的,右面是F2837xD的。

    (不同type的EPWM的区别你可以参考一下这个文档的spru566q_C2000 Real-Time Control Peripheral Reference Guide (Rev. Q)48页。)

    所以类似F28002x上的这种同步信号链确实不存在master-slave这种关系,可以更加灵活的配置同步。

    类似F2837xD则不是。

    2-2. 

    因为不同步的产生就是由于各PWM运行久了就会产生偏差所以才要同步

    你说的这一点是有可能存在的,所以最好保持同步使能。但大部分情况下,这么做是为了保证改变频率的时候也保持同步。

    因为对于EPWM模块来说,有两种不同的同步。一种是时钟(Clock)同步,另一种是相位同步。在理想的情况下,只要保证时钟同步,就不会产生你所说的偏差。

    你再仔细看一下原作者po出来的内容,人家是要解决畸变问题,所以才这么设置的。因为同步功能的MEP(微边沿定位)确实会在波形边沿产生轻微畸变。

    TRM 17.15.1.5.4.1 第6点指出,如要TBPHSHR也完全同步,PHSEN要设置为1。我想这里

                           的描述应该是有些歧义?

    不歧义。既然要移相,PHSEN移相使能当然要置1;更进一步要使用高精度移相,TBPSHRLOADE高精度移相装载使能就也要置1。

    对于原贴作者用PWM1 和PWM2同步,其实完全就可以设置PWM1的PHSEN=FALSE,它就是你所说的master,它不需要SYNCIN源来做同步的。

    原帖作者懂这些,你再仔细看看人家想要表述的是什么。

    hrpwm_ex3_prd_updown_sfo例子中,虽然用了5对PWM来进行测试,但并没有考虑同步的问题。包括上面说的关于PHSEN,所有PWM的PHSEN都没有开启。

    因为这个例程旨在展示高精度周期以及SFO的使用。

  • 觉得讨论不在一个点上。

    1、PWM间的同步,包括高精度同步,一定是要时时去做的,而不是说初始化同步一下就行了。这个观点没有问题吧?要不然也不用说有个master在CTR=ZRO或PRD时发syncOUT信号,作为其他pwm的syncIN来同步并自动从TBPHS加载移相值了(虽然这个TBPHS可能等于0)。

    2、TRM说要想高精度同步,那么PHSEN必须=1,那么问题来了:基于观点1,同步既然是要时时(或者说周期性)去做的,那么谁来产生同步事件,即谁来发syncOUT信号?原作者应是想用PWM1来发syncOUT信号,但是PWM1本身呢?肯定它应该是free-run的,它是主机,它自己发syncOUT信号就好了。它需要设置PHSEN=1吗?它接受谁的syncOUT信号?syncOUT不是由它自己发的吗?所以作者才说要是能修改硬件,让其他不相关的PWM作主机,PWM1和PWM2都设置PHSEN=1就满足TRM中的要求了。如果不设置PWM1的PSHEN=1,这又与TRM中要求的PHSEN=1的说法矛盾了。你觉得怎么解决这个问题。

    我的观点是TRM要求PHSEN=1是指针对“从机“的情况,“主机“根本不需要设置PHSEN=1,或者说,设置PSHEN=1对TBPRDHR有影响吗?逻辑是什么?除了这里提到了一下,其他关于寄存器描述的地方好像没提到PHSEN对TBPRDHR的影响。你看是不是这样?

  • 我下周回来之后回复你