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.

[参考译文] CCS/TMS320F28054F:使用 CTrip 的过流保护、ePWM TZ

Guru**** 2546650 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/916590/ccs-tms320f28054f-over-current-protection-using-ctrip-epwm-tz

器件型号:TMS320F28054F

工具/软件:Code Composer Studio

我正在尝试使用我的3个电流感应 ADC 输入(A1、A3、B1)来实现过流保护(当电流变得过高时关闭 PWM)。 我想使用 CTRIPM1作为数字比较子模块的输入、然后在 TZ 中生成跳闸并将所有 ePWM 信号设置为低电平。 我可以强制跳闸并使 PWM 成功关闭、但无法从 ADC 引脚上的模拟比较器生成跳闸。 有关此主题的信息似乎非常分散、因此我们非常感谢您的任何帮助。 谢谢。

以下是我的相关代码(出于简单起见、现在仅在 ePWM 1上工作):

AnalogSubsysRegs.ADCINSWITCH.bit.ADCINA1SEL = 0;//设置开关以将 A1连接到 A1
AnalogSubsysRegs.ADCINSWITCH.bit.ADCINB1SEL = 0;//设置开关以将 B1连接到 B1

AnalogSubsysRegs.PGAEN.bit.AMPA1EN = 1;//在 A1上启用增益放大器
AnalogSubsysRegs.PGAEN.bit.AMPA3EN = 1;//在 A3上启用增益放大器
AnalogSubsysRegs.PGAEN.bit.AMPB1EN = 1;//在 B1上启用增益放大器

AnalogSubsysRegs.AMPM1_Gain.all = 0;//在 A1、A3、B1上设置增益放大器(增益3 = 0、6 = 1、11 = 2)

// DAC 的设置
AnalogSubsysRegs.DACEN.bit.DAC1EN = 1; //启用 DAC
AnalogSubsysRegs.DAC1CTL.bit.DACVAL = 32;// 6位(/64)

//模拟比较器的设置
AnalogueSubsysRegs.COMPEN.bit.COMPA1EN = 1;
AnalogueSubsysRegs.COMPEN.bit.COMPA3EN = 1;
AnalogueSubsysRegs.COMPEN.bit.COMPB1EN = 1;

// Ctrip
AnalogueSubsysRegs.CTRIPA1ICTL.bit.COMPHINPEN = 1;
AnalogueSubsysRegs.CTRIPA1ICTL.bit.COMPLINPEN = 1;
AnalogueSubsysRegs.CTRIPA3ICTL.bit.COMPHINPEN = 1;
AnalogueSubsysRegs.CTRIPA3ICTL.bit.COMPLINPEN = 1;
AnalogueSubsysRegs.CTRIPB1ICTL.bit.COMPHINPEN = 1;
AnalogueSubsysRegs.CTRIPB1ICTL.bit.COMPLINPEN = 1;

AnalogSubsysRegs.CTRIPM1OCTL.bit.CTRIPA1EN = 1;
AnalogSubsysRegs.CTRIPM1OCTL.bit.CTRIPA3EN = 1;
AnalogSubsysRegs.CTRIPM1OCTL.bit.CTRIPB1EN = 1;

//跳闸区域的设置
EPwm1Regs.TZSEL.bit.DCAEVT1 = 1;//启用直流事件触发
EPwm1Regs.TZSEL.bit.DCBEVT1 = 1;

EPwm1Regs.TZCTL.bit.DCAEVT1 = 2;//跳闸时设置为低电平
EPwm1Regs.TZCTL.bit.DCBEVT1 = 2;

EPwm1Regs.TZEINT.BIT.DCAEVT1 = 1;//在 TZ 中启用直流强制
EPwm1Regs.TZEINT.BIT.DCBEVT1 = 1;

EPwm1Regs.DCTRIPSEL.bit.DCAHCOMPSEL = 8;// CTRIPM1输入
EPwm1Regs.DCTRIPSEL.bit.DCALCOMPSEL = 8;
EPwm1Regs.DCTRIPSEL.bit.DCBHCOMPSEL = 8;
EPwm1Regs.DCTRIPSEL.bit.DCBLCOMPSEL = 8;

EPwm1Regs.DCACTL.bit.EVT1SRCSEL = 1;//已过滤
EPwm1Regs.DCACTL.bit.EVT1FRCSYNCSEL = 1;//异步
EPwm1Regs.DCBCTL.bit.EVT1SRCSEL = 1;
EPwm1Regs.DCBCTL.bit.EVT1FRCSYNCSEL = 1; 

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

    布拉登

    我建议启用从比较器到 GPIO 引脚(如 GPIO12)的 CTRIPM1OUT 路径、以便您可以使用所需的配置直接观察 CTRIPM1状态。 这将有助于调试大多数比较器问题:

    由于您只配置了 DAC1、我建议禁用 compl 路径:

    由于您没有配置数字滤波器、我建议使用滤波器旁路路径:

    Tommy

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

    谢谢、很抱歉我迟到了、这个项目的优先级低了一段时间。

    我现在可以正常工作、但我有一个问题。 我是否能够使用数字比较结果将 GPIO 引脚设置为低电平(与触发 PWM 相同)? 我在任何地方都看不到它的记录、但在我的实施中、将它作为同一过程的一部分来执行是很有用的。

    再次感谢

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

    布拉登

    无法直接"跳闸"引脚与分配给 GPIO 多路复用器功能的硬件。  如果是静态信号、您可以将其分配给 ePWM 或比较器输出、如过零检测器。  另一种选择是在触发直流条件时生成 ePWM 中断、并使用 CPU 或 CLA 将 ISR 或任务的 GPIO 驱动为低电平。

    Tommy