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.

[参考译文] TMS320F2812:DPWM0、DPWM1、DPWM2、GDPWM、UDPWM 实现

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/586420/tms320f2812-dpwm0-dpwm1-dpwm2-gdpwm-udpwm-implementation

器件型号:TMS320F2812
Thread 中讨论的其他器件: controlSUITE

是否有任何限制因素限制 TMS320F2812处理器上 DPWM0、DPWM1、DPWM2 (也称为 GDPWM、也称为 UDPWM)的实现? 如果是、哪些处理器可以实现这些调制方案? 后续 C2000芯片中的 ePWM 外设是否修复了此问题?

由于 PWM 驱动器和/或 PWM 外设、我很难实现这些方案。 似乎我不能有0%的占空比(钳位到负总线)。 当我将比较寄存器 CMPR1..3限制为计时器1周期 T1PR 时、我能够钳制到负总线、但电流波形失真。 如果我将比较寄存器 CMPR1..3限制为计时器1周期(T1PR - 1)、则电流波形是令人满意的、但当输出应钳位到负总线时、会以与开关频率一致的间隔出现脉冲、表示死区时间的宽度。

我发现这 篇论文 声称 TMS320F2812不支持某些 PWM 方法。  见第226/286页。 以下陈述是否准确?

"将比较寄存器与特定相位桥臂的占空比加载涉及 DSP 的一个指令周期。 在 TMS320F2812中、最大时钟周期为150MHz、对应于6.67ns 指令周期。 这种6.67ns 的延迟会导致各种 PWM 方法的实现出现问题。 当计算出的占空比在周期瞬间加载到计数器、并且其先前的值不是100%、但计算出的值是100%时、就会产生问题。 在执行不连续 PWM 方法期间会遇到这种情况、特别是在加载单个更新速率和周期点时、或者在加载双更新速率和周期点时。 由于在周期瞬间加载期间存在一个6.67ns 的延迟199、将正确占空比加载到比较寄存器的机会被错过、并且生成一个错误信号、此信号失真 PWM 波形并干扰输出电压/电流。'

以下测试是在三相电压源逆变器、60Hz 基频、2.5kHz 开关频率和380V (l-l rms)额定电机电压下执行的。 实现了伏/赫兹模式。 PWM 方案是 DPWM2。

当我实现以下 PWM 驱动器时、我得到令人满意的以下电流波形、但负总线钳位周期(60度)内的脉冲会产生一个 PWM 方案、但该方案并未完全实现 DPWM0、DPWM1和/或 DPWM2开关损耗降低的优势。

(注1:由于 PWM1是顶部 IGBT、PWM2是底部 IGBT、对 PWM 外设的限制要求 PWM1为低电平有效、PWM2为高电平有效、以产生适当的死区时间、 这意味着 SVGEN 模块的输出将产生相反的结果(1 = 0%和-1 = 100%)。 因此,我的 PWM 驱动程序中的 One_Q24 -_IQdiv2 (p->MfuncCx + One_Q24)考虑了这种反转。

(注2:MfuncC1采用 Q24格式、范围从-1到1、其中-1为0%、1为100%)

#define Oe_Q24 16777216 //_IQ24 (1)

void F281x_EV1_DutyCycleUpdate (F281x_PWMGEN_ST * p)
{
int32 Tmp1、Tmp2、Tmp3;

//从周期调制输入
EvaRegs.T1PR = p->PeriodMax 设置计时器周期;

//计算 PWM 1和2占空比(Q24)的比较1 (Q0)
Tmp1 = one_Q24 -_diviQ2 (p->Mfunc1 + Q24);//从-1转换为1到0到1比例
Tmp1 =_IQsat (_IQ24mp1、(Int32) EvaRegs.T1PR)、(Int32)(EvaRegs.T1PR - 1)、0);

//计算 PWM 3和4占空比的比较2 (Q0)(Q24>DIQ24_2
)//从-1转换为1到0到1比例
Tmp2 =_IQsat (_IQ24mp2、(Int32) EvaRegs.T1PR)、(Int32)(EvaRegs.T1PR - 1)、0);

//计算 PWM 5&6占空比的比较3 (Q0)(Q24_DIC3+Q24>1)
//从-1转换为1到0到1的比例
Tmp3 =_IQsat (_IQ24mp3、(Int32) EvaRegs.T1PR)、(Int32)(EvaRegs.T1PR - 1)、0);

EvaRegs.CMPR1 =(Int16) Tmp2;EvaRegs.Tmp3
=
(Int16

) TMPR2;IntCMPR3 = TMP16 

   

当我执行以下代码(EvaRegs.T1PR - 1进入 EvaRegs.T1PR)时、到负总线的钳位被实现、但是电流波形失真:

void F281x_EV1_DutyCycleUpdate (F281x_PWMGEN_ST * p)
{
int32 Tmp1、Tmp2、Tmp3;

//从周期调制输入
EvaRegs.T1PR = p->PeriodMax 设置计时器周期;

//计算 PWM 1和2占空比(Q24)的比较1 (Q0)
Tmp1 = one_Q24 -_diviQ2 (p->Mfunc1 + Q24);//从-1转换为1到0到1比例
Tmp1 =_IQsat (_IQ24mp1、(Int32) EvaRegs.T1PR)、(Int32)(EvaRegs.T1PR)、0);

//计算 PWM 3和4占空比的比较2 (Q0)(Q24>DIQ24-
1 + IQ24>2//从-1转换为1到0到1比例
Tmp2 =_IQsat (_IQ24mp2、(Int32) EvaRegs.T1PR)、(Int32)(EvaRegs.T1PR)、0);

//计算 PWM 5&6占空比的比较3 (Q0)(Q24_DIC3+Q24=1)
//从-1转换为1到0到1的比例
Tmp3 =_IQsat (_IQ24mp3、(Int32) EvaRegs.T1PR)、(Int32)(EvaRegs.T1PR)、0);

EvaRegs.CMPR1 =(Int16) Tmp1;EvaRegs.TMP3
= TMP16


;IntCMPR3 = TMP16 

     

此第二版本的 PWM 驱动程序存在另一个问题。 如果调制方案从 UDPWM (设置为 DPWM2)更改为 SVPWM (也称为连续 PWM)、并且施加的总线电压不足以提供380V (VDC <= 537V)的额定电机电压、则调制因子(SQRT (Vd^2 + VQ^2或 SVGENMF 模块的 svgenMF.Gain) 变为100%、当占空比应为0%时、存在200us 的杂散脉冲。 这在以下示波器捕获中显示。 请注意、200us 是开关周期的1/2 (400us = 2.5kHz)

      

恢复到第一个 PWM 驱动器不会显示以下现象:

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

    很抱歉、您的帖子需要很长时间才能得到回复。 我们过去在 C2000上实施过 DPWM、但是从事该工作的人员已经离开 TI、其他人也不熟悉该工作。

    关于你提到的师父的论文的引述,我们想知道作者是否知道那个时期的寄存器在 F2812上被阴影了? 听起来好像他是直接写入比较寄存器并将写入与周期事件对齐。 我不知道。 您可能可以跟踪作者的评论。

    据我所知、DPWM 涉及保持底部或顶部开关打开60或120度。 一个可能的问题是、如果顶部开关持续保持打开60度、并且栅极驱动器基于带电容器的自举电源、那么它可能会耗尽电荷并可能导致顶部开关关闭。 这种影响可能会导致您的问题、但这只是一种猜测。

    我很遗憾不能在这一问题上提供进一步的帮助。 感谢您的理解。

    此致、

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

    Richard、

    感谢您的回答。 有多种 DPWM 技术。 我认为 这份文件 是一个很好的解释。 DPWM0、DPWM1和 DPWM2钳位到顶部和底部电源轨、每次交替60度。 DPWMmin 和 DPWMmax 分别钳位至负电源轨和正电源轨120度交替。  

    我还没有尝试实现 DPWMmin。 TI controlSUITE 中的代码"svgen_DPwM.h"可以是 DPWMmin 或 DPWMmax、具体取决于 PWM 对如何路由到功率部分。 因此、我无法确定您的同事是否注意到了我所指出的、他们是否在 F281x 处理器上使用 DPWMmax。

    自举可能是一个问题、您很想提出它。 谢谢你。 该模型实际上采用了自举。 但是、虽然我的示波器图片显示了经过电源部分的电压、但直接在 F2812之外进行的测量表明、这些可疑的信号是由处理器生成的。 我可以很快用这些数据报告。 也许这会引起更多的关注。