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.

TMS320F280049C: 利用CMPSS,EPWM的DC和TZ模块配置CBC功能 理论与实际输出不一致的原因

Part Number: TMS320F280049C

前几天提过一个问题,cmpss口无输出,那个问题最后定位到是配置问题。

现在已经出来CBC的波形,但是和理论分析不完全一致。

波形1:1通道为PFC驱动3通道为进中断(高电平)和出中断(低电平)4通道为电感电流波形

我用的是TRIP5触发DCAEVT2做CBC。

不一致的地方在于,我配置的是在计数过零的时候清除CBC锁存,理论上下一周期应该直接打出驱动,而实际测试多封了一个中断的驱动。

理论分析逻辑:

然后我做了对比试验,把 过零清除CBC锁存 改为 PRD清除CBC锁存,实际测试的波形却又是符合分析的

实际测试波形(由于重新打驱动后电感电流未触发到CBC,所以不是连续封波:

理论分析:

从示波器图片里可以看出重新打驱动时确实是只打了一半驱动。

想请教一下TI的工程师,出现这种情况的原因是为什么?和什么寄存器配置相关?

还有想问一下,datasheet中的这张图,左边的Trip事件触发后产生DCAEVT2.force,然后CBC latch模块会产生锁存标志位。由于此时封了驱动,电感电流直接下降,那么CMPSS模块的输出CTRIPH/L 会改变(这个自动清除也有相应函数配置),随之TRIP事件消除,DCAEVT2.force也消除,直到TZCLR(CBCPULSE)配置的ZERO或PRD起作用,自动清除CBC锁存恢复驱动。

那么是不是有可能CMPSS的CTRIPH/L的自动清除会影响到最后的驱动打出。

程序里使能了CMPSS的自动清除,CMPSS_enableLatchResetOnPWMSYNCLow(base);

base用的是EPWM5,那也就是说是EPWM5的同步脉冲到来才会去清,而EPWM5的同步脉冲又恰好是过零点,有没有可能是这个原因呢?

  • 验证了一下最后我提出的猜想,发现确实可以修改清除CMPSS锁存的同步脉冲触发时刻,但并未解决我上述提出的问题。

    我在程序EPWM5初始化配置里加了相关配置,但是对结果没有改变。

  • 这个问题TI的工程师可以看下么

  • 1. 触发CBC的时刻是怎么得到的?很大的可能是由于触发CBC的时刻实际上跨过了CTR=0导致;

    2. 是会有影响的,

    当DCAEVT2.force信号进来以后,黄色的那一路异步信号经过或门后会触发TZ保护;绿色的那一路则会锁存触发状态;

    所以CMPSS是会影响CBC Latch的清除的,即就算是在CTR=0清除了CBC Latch,但是CMPSS还会紧接着继续触发TZ以及CBC Latch。

    base用的是EPWM5,那也就是说是EPWM5的同步脉冲到来才会去清,而EPWM5的同步脉冲又恰好是过零点,有没有可能是这个原因呢?

    所以有这个可能。

  • 关键在于清CBC Latch的时机以及清CMPSS的时机,要保证在下一个周期之前清除掉,所以着重关注一下同步脉冲发出的时刻

  • 1. 触发CBC的时刻是怎么得到的?很大的可能是由于触发CBC的时刻实际上跨过了CTR=0导致;

    这个触发时刻我之前的理解是:电感电流采样对应的模拟电压值超过设定的DAC对应的模拟电压值时会触发,那么对应到我实际电路里(三相维也纳PFC拓扑),以正半周为例,从过零点到过零点半周期时间内,电感电流从小到大,再到小,对应的占空比是先大再小再到大。所以电流越大越可能触发CBC(靠近半周期的中心,实测波形符合)。  和我之前调试的CBC驱动波形逻辑不一样的是,之前驱动是SPWM的方式打出,所以越往电流峰值方向走,占空比越来越大,那么触发CBC时可能前一个占空比可能是70%,下个时刻触发CBC占空比可能只有40%,从驱动上可以很明显地看出。

    但是现在从实际测试波形看触发时刻的前后两个驱动占空比基本无差,但是按你说的实际CBC触发时刻过了CTR=0,我觉得也不符合逻辑吧。因为驱动为高电平,电感电流在上升都没触发CBC,那么电感电流开始下降了还有可能触发CBC么。

    关键在于清CBC Latch的时机以及清CMPSS的时机,要保证在下一个周期之前清除掉,所以着重关注一下同步脉冲发出的时刻

    清CBC Latch的时机是由TZCLR[CBCPULSE]控制的,理论上配置过零就应该在过零清除了。

    CMPSS的输出自动清除我的第一条回复里已经做了初步验证,似乎没有效果,我把同步脉冲提前了1us(100*10ns);

    这样来看可能需要确认的是

    1. CBC到底是何时触发的?有没有可能在电流上升的时候未触发,反而在下降的时候触发了。

    2. 同步脉冲是否确实提前了?

    想问一下可以通过什么方式具体看到CBC触发时刻和同步脉冲打出的时刻呢?

    感谢Yale Li的回复。

  • 1. 从C2000器件的角度来讲,CBC在何时触发确实不是很方便观测;

    2. ePWM的周期以及比较值设置的是多少?可以更改一下ePWM5的同步脉冲发出的时间,看一下不同效果;

    根据上传的第一张波形图来看,这个问题似乎是有一定概率出现;

    并且根据波形的总览来看,这个问题是出现在电流极大值附近,从局部来看电流是在下降,但是整体仍然高于比较器的触发值,所以在CTR=0处清CBC latch以后,又触发了比较器导致封锁;但是电流继续下降并且在CTR=PRD之前下降到比较器触发值以下,然后在CTR=PRD处清CBC latch,TZ封锁结束,可以继续输出:

    (比较器外部的采样电路放电可能不充分等因素(外围采样电路和C2000输入端口都有可能),也会进一步加剧这个问题。但是这一点要结合频率来看。)

    另外由于需要同步脉冲来清比较器的输出,所以选择的这条信号链路径是最长的,延时也是最高的:

    关于比较器的输出部分,可以看一下我之前的分析:

    TMS320F280025: CMPSS框图逻辑设计是不是有问题? - C2000Tm︎ 微控制器论坛 - C2000 微控制器 - E2ETm 设计支持

  • Yale Li,你好,

    经过我最新的调试,发现了你这个猜想是正确的

    1. 触发CBC的时刻是怎么得到的?很大的可能是由于触发CBC的时刻实际上跨过了CTR=0导致;

    今天检测了电感电流的AD口电压波形,发现实际电感电流波形和采样口的波形有较大出入,具体表现为:驱动为高,电感电流直线上升,但AD口电压波形是呈锯齿波上升,同理下降也是。这就导致触发CBC后 即使电感电流在下降,很有可能会再次触发CBC。由于硬件同事失误(采样滤波延时未调小),所以一旦在计数过零点之后又触发了CMPSS和TZ事件,就导致TZCLR[CBCPULSE]失效了。

    并且我用CTRIPOUTH连接到OUTPUT-XBAR输出到IO口观察,确实能观察到有连续翻转的现象。

    后续硬件排查原因发现是电感电流采样的霍尔芯片的供电电源纹波较大 导致 实际采样输出的波形纹波较大,增加滤波电容后采样纹波明显减小,后续测试正常。(有偶发停一个驱动现象,还是定性为硬件原因,软件配置上应该没啥问题)。

    最后,你说的这个清除CMPSS的锁存的同步脉冲问题。

    我想问一下 CTRIPH/L的输出可以有四个选择应该是只有在CTRIPH/L采用 锁存输出 去触发CBC的时候才需要去使能这个同步脉冲清除这个锁存,而使用 滤波输出 的话其实没有必要去清除CMPSS的锁存。 TZ模块的CBC已经有锁存功能,所以没必要在前级继续加一个锁存,就让CMPSS只作为一个带滤波的比较器即可。

  • 我想问一下 CTRIPH/L的输出可以有四个选择应该是只有在CTRIPH/L采用 锁存输出 去触发CBC的时候才需要去使能这个同步脉冲清除这个锁存,而使用 滤波输出 的话其实没有必要去清除CMPSS的锁存。 TZ模块的CBC已经有锁存功能,所以没必要在前级继续加一个锁存,就让CMPSS只作为一个带滤波的比较器即可。

    是的

    问题解决就好~