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.

[参考译文] LAUNCHXL-F2.8377万S:带跳闸区单元的零电流切换

Guru**** 2540720 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/619438/launchxl-f28377s-zero-current-switching-with-trip-zone-unit

部件号:LAUNCHXL-F2.8377万S

您好,TI社区。

我的目标是为MOSFET器件实施零电流切换。

如果比较器检测到通过开关的电流已降至阈值以下,则开关必须打开。

此外,我想在以后的一段时间内忽略比较器,以便电流在下一个切换期间再次上升。 换言之,我只想从比较器津贴的那一刻起直到这段时间结束才打开开关。

要对应实现此机制的Launchpad进行编程,我使用的是用于Simulink的TI支持包。 为了使第一个测试尽可能简单,我没有使用外部信号,而是让电路板生成两个同步的PWM。 电源通过USB供电。

一个PWM (PWM2A)用作静态切换信号,定期关闭开关足够长的时间。 另一个(PWM3A)对确定何时再次打开比较器信号进行建模。

如果比较器信号较高,则PWM2A应夹紧至较低(下图右侧的绿色曲线)。

当将比较器信号馈入TZ引脚时,可通过跳闸区单元执行此夹紧操作(侧向:由于TZ为低活动状态,信号必须反转)。 但这不能满足忽略信号下降边缘的附加目标。

我偶然发现,当通过数字比较事件触发跳闸区单元时,我可以使用空白窗口。 Simulink硬件支持包GUI中的选定选项可在下图中看到。 "数字比较输出事件2"的选择与仅使用TZ1基本相同,因为TZ2 "不在乎"。 过滤器应在周期的前200个周期内阻止任何操作。 只有在这之后才能生成事件。

跳闸区域模块在"每个周期"的基础上使用这些事件来强制PWM2A输出为低。

问题是PWM2A与PWM3A保持不变。

我检查了是否使用了启动板上的正确引脚进行PWM输出。 在配置参数对话框中定义的用于TZ1/2 I的引脚。

ePWM3A当然连接到TZ1。

感谢您的任何帮助。 提前感谢您的回答。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    确保输入信号设置为连接到输入X-bar中的TZ1。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    输入引脚与TZ1的连接似乎由寄存器INPUT1SELECT确定。 它是input_xbar_regs的子寄存器,在微控制器参考手册的第7.3 2章中介绍(文档SPRUHX5D–2014年8月–2016年12月修订)。

    将我的Simulink块转换为代码后,它应显示分配给寄存器INPUT1SELECT的GPIO编号。
    但我找不到作业。 这是否意味着输入信号和TZ单元之间没有连接?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我没有使用Simulink获取代码。 也许您可以在CCS中直接使用TI的示例项目。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,

    当TZ信号通过直流模块进行路由时,我们似乎没有配置INPUT1SELECT寄存器。 我们注意到这一缺点。 作为解决方法,可以使用系统初始化块,并且可以将GPIO引脚分配给与ePWM3A,"InputXbarRegs.INPUT1SELECT = xx"对应的INPUT1SELECT;系统初始化块可在Simulink编码器->自定义代码->系统初始化下找到。

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

    感谢您的建议。 我将在星期一进行测试。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    延迟更新:"系统初始化块"完成其工作,并使我能够轻松分配
    注册(向可能阅读此内容的其他人提示:不要忘记EALLOW)。 尽管如此,我仍然没有
    观察所需功能。 这意味着Venkatesh Chilapur确实帮助了我,但是
    我可能对如何配置和连接的模块有错误的理解
    微控制器。

    在检查每个寄存器的PIN,操作限定器模块,跳闸区域单元和之后
    因此,我可以发现我添加了更多代码。 我试着写下每一条指令
    我需要。 下面是我的当前代码。

    EALLOW;
    gpioCtrlRegs.GPAQSEL2.bit.GPIO21 =3;/*异步输入*/
    gpioCtrlRegs.GPBQSEL1.bit.GPIO42 =3;/*异步输入*/
    InputXbarRegs.INPUT1SELECT = 21;/*GPIO用于Input1 = TZ1*/
    InputXbarRegs.INPUT2SELECT = 42;/*GPIO用于Input2 = TZ2*/

    EPwm2Regs.TZsel.bit.DCAEVT2 = 1;/*DCAEVT2是CBC跳闸源*/
    EPwm2Regs.TZCLL.bit.CBCPULSE =0;/*PWM-计数器=0清除CBC锁*/
    EPwm2Regs.TZDCSEL.bit.DCAEVT2 = 2;/*DCAEVT2:DCAH (TZ1)=高,DCAL (TZ2)=不在乎*/
    EPwm2Regs.TZCTL.bit.DCAEVT2 = 2;/*DCAEVT2强制EPWMxA LOW */

    EPwm2Regs.TZCTL2.bit.ETZE =0;/*停用第二个TZCTL*/
    EPwm2Regs.DCTRIPSEL.bit.DCALCOMPSEL= 1;/*TZ2为DCAL Input*/
    EPwm2Regs.DCTRIPSEL.bit.DCAHCOMPsel= 0;/*TZ1是DCAH输入*/
    EPwm2Regs.DCACTL.bit.EVT2SRCSEL = 1;/*DCAEVT2源为DCEVTFILT*/
    EPwm2Regs.DCFCTL.bit.PULSESEL =1;/*空白窗口对齐TBCTR =0*/
    EPwm2Regs.DCFCTL.bit.Blanke =1;/*启用空白窗口*/
    EPwm2Regs.DCFCTL.bit.SRCSEL =1;/*DCAEVT2是过滤器源*/
    EPwm2Regs.DCFWINDOW =500;/*以CLK周期表示的窗口长度*/
    EDIS;


    除了我的问题,从TZ1到DC和行车模块的信号应该如何
    已连接我还想知道:
    -信号T2是在跳闸区域操作中播放还是独立? (请参见第一张图
    (在参考手册的"跳闸区域"章节中)
    -为什么有EPwm2Regs选项。 TZCTL.TZA,当.DCAEVT2和其他可以时
    是否单独配置?
    - EPwm2Regs.DCACTL.bit.EVT2FRCSYNCSEL的作用是什么?

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

    您好,

    我们可以看到同样的行为。 DC事件不会跳闸输出信号ePWM2A。 在直流块周围是否有TI示例,并使用它跳闸输出? 请注意,仅从"行程区域"工作时,行程操作工作正常。 TI的示例将帮助我们更好地了解配置中缺少的链接。

    此致,

    Venkatesh C

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

    首先,我们删除启用空白窗口的行,以确保这不是导致错过事件的原因。 查看配置后,我认为没有什么是不正确的,所以让我们看看是否可以生成DC跳闸,而无需为调试目的设置空白,因为模块的该部分更高级。

    几个问题:
    ——你说过你用TZ测试了这个,它很有效。 由于TZ事件处于活动低电平状态,您如何反转信号? 我只是想确保您删除了反转的线,因为您的DC事件被配置为活动高电压。
    -您使用哪种GPIO来模拟比较器? 42还是21? 看起来,当GPIO21较高时,您被配置为跳闸。 只是确认这就是您的意图。

    其他问题的一些答案:
    - TZCTL可以同时选择TZA和DCEVT2,因为它们是独立的事件。 任何已配置的跳闸区域(DC或非DC)都将执行TZA中指定的操作。 这是比DCEVT2优先级更高的事件。 DCEVT可以更改PWM的状态,而不会使其跳闸。
    - T2与您尝试执行的操作没有任何关系。 此信号适用于您根据比较器切换PWM (但不跳闸)的情况。 这适用于峰值电流模式控制类型应用。 您可能可以将其用于您的,但设置会有所不同。

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

    感谢您在帖子末尾提供这些答案。 这似乎让我走上了正确的轨道。
    我已经怀疑您所描述的TZA的用途,但仍然对选择感到困惑
    TZCTL寄存器中的TZA或DCAEVT。 了解T2的独立性
    帮助。 这似乎帮助了很多,因为我现在已经找到了解决方案。

    Venkatesh已经提到,仅通过TZ输入的跳闸就能工作。 我注意到了
    低激活行为和模拟比较器信号的简单反转PWM。
    过滤器设置的行已被删除。 对于行程输入,我使用GPIO21作为您的身份
    说。 比较器信号由EPWMA3输出,并通过电线连接到GPIO21。

    在我确认我尝试了事件参数之后,直到我获得
    右组合。 我不需要参数EPwm2Regs.TZCTL.bit.DCAEVT2,我发现了这一点
    EPwm2Regs.TZsel.bit.CBC1仅用于"直接"跳闸(无直流模块)。
    完成的代码如下所示。

    EALLOW;

    InputXbarRegs.INPUT1SELECT = 21; //Input1=TZ1=GPIO21
    GpioCtrlRegs.GPAQSEL2.bit.GPIO21 = 3; //异步输入

    EPwm2Regs.DCTRIPSEL.bit.DCAHCOMPsel= 0; //DCAH输入为TZ1
    EPwm2Regs.TZDCSEL.bit.DCAEVT2 = 2; //DCAEVT2:DCAH=HIGH和DCAL=X
    EPwm2Regs.TZsel.bit.DCAEVT2 = 1; //DCAEVT2是CBC跳闸源
    EPwm2Regs.TZCTL.bit.TZA = 2; //事件强制EPWM2A过低

    EPwm2Regs.DCACTL.bit.EVT2FRCSYNCSEL = 1; //事件信号采用异步路径
    EPwm2Regs.DCACTL.bit.EVT2SRCSEL = 1; //过滤器激活
    EPwm2Regs.DCFCTL.bit.PULSESEL = 1; //引用TBCTR =0的空白
    EPwm2Regs.DCFCTL.bit.Blanke = 1; //启用空白窗口
    EPwm2Regs.DCFCTL.bit.SRCSEL = 1; //将DCAEVT2送入过滤器
    EPwm2Regs.DCFWINDW = 650; //以CLK周期表示的窗口长度
    //确保窗口在句点之前结束;或者在第一部分结束
    下一个时间段的//似乎被"覆盖"。 确保窗口长度
    //适合您使用的每个周期长度!

    EPwm2Regs.DCFOFFSET = 200; // CLK周期中的窗口偏移
    EPwm2Regs.DCFCTL.bit.BLANKINV = 1; //反转窗口
    //反转窗口使事件仅在窗口长度期间有效,
    //从偏移开始

    EDIS;

    我的应用程序现在可以正常工作,我已经使用实际交换机和比较器对其进行了测试。

    此致,

    曼努埃尔