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.

[参考译文] TMS320F28027:当两相 PFC 使用闭环控制时、PWM 波形异常

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1197514/tms320f28027-pwm-waveform-is-abnormal-when-2-phase-pfc-is-using-closed-loop-control

器件型号:TMS320F28027

大家好、

参考设计: 两相交错 PFC 套件

硬件:定制 PCB、输入直流150V、  使用 IIC 设置 PFCcmd 电流测试控制环路。

软件:定制程序、参考 TI 设计。

使用 EPWM1A 和 EPWM2A 来控制两相 PFC。 频率为200kHz。 相位差为180°。 启用 HRPWM。

模拟输入(电流信号)和 DAC 比较输出到 TZ 模块、保护模式为循环。

以下是配置

e2e.ti.com/.../Thread_5F00_540555.c

PWMDRV_PFC2PhiL 的某些部分 经过修改:

PWMDRV_PFC2PHIL .macro n
;======================
;说明
;PWM工作在UpDowm模式
;计数器增大匹配时产生上升沿,计数器减小匹配时产生下降升沿
;Temp(Q32) = (Period(Q16) * Duty(Q24)
;CMPA = Period - Temp取整数部份
;使用HRPWM时,EdgeMode选择PWM_HrEdgeMode_Falling,下降沿后移(以180 ps步进),占空比变大
;CMPAHR = Temp取小数部份 * MEP_ScaleFactor * 2 (UpDowm模式,得乘以2)
;2023.02.15 为解决运算错误,改回在此处计算PWMDRV_PFC2PhiL_MEP * 2
.ref _VpfcOut
.ref _VpfcMax
.ref _MEP_ScaleFactor
; MOVW DP,#_VpfcOut

MOVW DP, #_PWMDRV_PFC2PhiL_Duty:n: ; load DP for net pointer
MOVL XAR0, @_PWMDRV_PFC2PhiL_Duty:n: ; XAR0 = PWMDRV_PFC2PhiL_Duty = &PFCDuty
; MOVL XAR1, @_PWMDRV_PFC2PhiL_MEP:n: ; XAR1 = MEP_ScaleFactor * 2
MOVL XT, @_PWMDRV_PFC2PhiL_Period:n: ; XT = Period (I16Q16)

MOVW DP, #_MEP_ScaleFactor ; load DP for net pointer
MOV ACC, @_MEP_ScaleFactor<<1 ;
MOVL XAR1, ACC ; XAR1 = MEP_ScaleFactor * 2

; MOV 16位数据移动
; MOVL 32位数据移动
MOVW DP, #_VpfcOut ; load DP for net pointer
MOVL ACC,@_VpfcOut
CMPL ACC,@_VpfcMax
B SKIP_LT,LT
SKIP_GT:
MOVL ACC,@XAR0
LSL ACC,#16
; MOV ACC,@XAR0<<16
B SKIP_CMPA,UNC
SKIP_LT:


IMPYL P,XT,*XAR0 ; P = low 32−bits of (M32*X32)
QMPYL ACC,XT,*XAR0 ; ACC = high 32−bits of (M32*X32)
; ACC:P = Period(Q16) * Duty(Q24) = I24Q40
LSL64 ACC:P,#8 ; ACC:P(I16Q48) ACC(I16Q16)
SUB @T,AH
MOV AR3,T ; AR3 = Period - 整数部份(Period * Duty)

MOVW AH, #0 ;
MOVL XT,ACC ; XT = 小数部份
IMPYL ACC,XT,@XAR1 ; ACC = low 32−bits of (M32*X32)
; IMPYL ACC,XT,*XAR1 ; ACC = low 32−bits of (M32*X32)
; ACC = MEP *2 * 小数部份 = Q0 * I16Q16 = I16Q16
ASR64 ACC:P,#8
ADD AL, #80H ; AL = MEP部份
AND ACC, #0xFF00<<0
MOV AH, @AR3

SKIP_CMPA:
MOVW DP, #_EPwm1Regs.CMPA
MOVL @_EPwm1Regs.CMPA,ACC ; CMPA = Duty * Period
MOVW DP, #_EPwm1Regs.CMPB
MOV @_EPwm1Regs.CMPB,AH ; CMPB = Duty * Period
MOVW DP, #_EPwm2Regs.CMPA
MOVL @_EPwm2Regs.CMPA,ACC ; CMPA = Duty * Period
.endm


以下是两个问题:

 生成的脉冲非常窄。 窄脉冲位于两个正常脉冲的中间。 为什么会有该信号?

2. 当比较器有输出跳闸信号时、为什么脉冲的下降沿不陡? 下降沿旁边有时会出现尖锐的脉冲、为什么会这样?

(这些波形直接通过 C2000器件的 GPIO 进行测量。)

--

谢谢、此致、

耶鲁李

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

    您好、Yale、

    很抱歉耽误你的回答。  

    [引用 userid="514648" url="~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1197514/tms320f28027-pwm-waveform-is-abnormal-when-2-phase-pfc-is-using-closed-loop-control ]2.  当比较器有输出跳闸信号时、为什么脉冲的下降沿不陡? 下降沿旁边有时会出现尖锐的脉冲、这是为什么?[/引述]

    图片中的信号到底是什么? 是 CMPSS 输出吗? 如果它是 CMPSS 或 PWM 模块中的中间信号、您能否共享它的名称。 如果是、您是否通过 Xbar 和 GPIO 获取了该信号?

    [引用 userid="514648" url="~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1197514/tms320f28027-pwm-waveform-is-abnormal-when-2-phase-pfc-is-using-closed-loop-control ]1.  会产生极窄的脉冲。 窄脉冲位于两个正常脉冲的中间。 为什么有此信号?[/quot]

    这很难调试、因为它与代码的详细信息有关。 周期是否符合预期(意味着仅占空比不正确)? 需要更多信息

    此致、

    陈