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.

[参考译文] TMS320F28377D:使用高电平有效互补模式时使 PWMxA 和 PWMxB 信号跳闸

Guru**** 2532620 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/994051/tms320f28377d-tripping-pwmxa-and-pwmxb-signals-when-using-active-high-complimentary-mode

器件型号:TMS320F28377D

您好!

我正在对 DSP 的数字比较子模块进行编程、并希望根据我生成的某些 CMPSS 信号触发 PWMA 和 PWMB 信号。

对 DCAHTRIPSEL 和 DCBHTRIPSEL 寄存器进行编程是否重要?或者、您是否可以假设、如果使用 AHC 模式、当触发 PWMA 时、PWMB 也会自动跳闸?

即使在 AHC 模式下、也可以将 PWMA 和 PWMB 跳闸以确保安全吗? 当 PWMA 和 PWMB 跳闸/恢复时、死区子模块是否会始终确保不存在交叉?

此致、
Joel

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

    DCAH 仅用于使 PWMA 输出跳闸、而 DCBH 用于使 PWMB 输出跳闸、如果用户希望同时使二者跳闸、则会使用单次触发模式吗? 执行以下操作的最佳方法是什么:

    是否对两个 CMPSS 信号进行逐周期电流限制、并对第三个 CMPSS 信号进行单次触发限制?  

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

    您好、Joel、

    [引用 userid="420268" URL"~/support/microcontrollers/c2000/f/c2000-microcontrollers-forum/994051/tms320f28377d-tripping-pwmxa-and-pwmxb-signals-when-using-active-high-complimentary-mode/3671798 #3671798"]2个 CMPSS 信号具有逐周期电流限制、第三个 CMPSS 信号具有单次触发限制操作?  [/报价]

    有四种可能导致跳闸的数字比较输出事件:DCAEVT1/2和 DCBEVT1/2。 这些是根据 TZDCSEL 寄存器选择的 DCAH/DCAL 和 DCBH/DCBL 信号的组合生成的。 您可以让模拟比较器 CMPSSx 信号 为 DCAH/DCAL 和 DCBH/DCBL 信号供源(通过 DCTRIPSEL 寄存器选择)。

    只有 DCAEVT2/DCBEVT2可以导致逐周期跳闸、而 DCAEVT1/DCBEVT1可以导致单次触发事件。 因此、您可以根据所需的 CMPSSx 信号配置 DCAH/DCAL 和 DCBH/DCBL 信号、然后利用相应的 CBC 和 OST 事件。

    [引用 userid="420268" URL"~/support/microcontrollers/c2000/f/c2000-microcontrollers-forum/994051/tms320f28377d-tripping-pwmxa-and-pwmxb-signals-when-using-active-high-complimentary-mode/3671798 #3671798"] DCAH 仅用于跳闸 PWMA 输出,而 DCBH 用于跳闸 PWMB 输出[/quot]

    DCAEVT1/2来自 DCAH/DCAL 信号。 DCBEVT1/2来自 DCBH/DCBL 信号。 但是、如果您看 一下 TRM 中的跳闸区域子模块模式控制逻辑图、您会发现 CBC 和 OST 信号进行了 OR 运算并馈送到 EPWMxA 和 EPWMxB 中。  

    [引用 userid="420268" URL"~/support/microcontrollers/c2000/f/c2000-microcontrollers-forum/994051/tms320f28377d-tripping-pwmxa-and-pwmxb-signals-when-using-active-high-complimentary-mode ]即使在 AHC 模式下、也可以将 PWMA 和 PWMB 跳闸以确保安全吗? 死区子模块是否会在 PWMA 和 PWMB 跳闸/恢复时始终确保不存在交叉?[/引述]

    是的、即使使用了 AHC 模式、也最好仍然定义 EPWMxA 和 EPWMxB 的跳闸输出状态。 当跳闸被清零时、EPWMxA/B 输出将返回其正常状态。

    此致、

    Marlyn

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

    非常感谢 Marlyn 的这一非常有帮助的回答。

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

    只是为了澄清;

    尽管  DCAEVT1/2来自 DCAH/DCAL 信号。 DCBEVT1/2来自 DCBH/DCBL 信号、因为它们一起进行或运算并发送到 PWM 模块的 A 和 B 输出、 所以 DCBEVT1/2和 DCAEVT1/2信号在 PWM 模块的两个输出上都起作用?

    如果我们的跳闸决定根据数字比较跳闸信号的任意组合来跳闸 PWM 模块的 A 和 B 输出、那么在定义 A 和 B 输出的跳闸时、还有什么意义呢? 只要有任何错误信号跳闸 PWMA 就有意义、因为这些信号也会跳闸 PWMB、除非我弄错了。  

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

    您能否确认以下代码是否正确、以便根据跳闸信号触发 PWMxA 和 PWMxB?  

    EALLOW;

    //数字比较(DC)子模块
    //从跳闸组合输入生成 DCAH 信号
    EPwm1Regs.DCTRIPSEL.bit.DCAHCOMPSEL = 15;//或全部由 DCALTRIPSEL 寄存器选择的触发组合-> DCAH
    EPwm1Regs.DCTRIPSEL.bit.DCBHCOMPSEL = 15;//或全部由 DCALTRIPSEL 寄存器选择的触发组合-> DCBH

    // DCAH/DCAEVT1/2用于单次触发故障
    // DCBH/DCBEVT1/2用于逐周期故障
    //单独选择哪些跳闸信号被传递到块中一起进行 OR 运算
    EPwm1Regs.DCAHTRIPSEL.bit.TRIPINPUT5 = 1;//输入过压跳闸单次触发故障
    EPwm1Regs.DCAHTRIPSEL.bit.TRIPINPUT7 = 1;// 输出电压1过压跳闸单次触发故障
    EPwm1Regs.DCBHTRIPSEL.bit.TRIPINPUT4 = 1;// 过流逐周期触发故障

    //事件 A 操作限定符块
    //根据 DCAH 和 DCBH 生成 DCAEVT1/DCBEVT1跳闸事件
    //只有 EVT1可用于 OST、而 EVT2可用于 CBC
    //需要启用这些寄存器的 A 和 B 来触发两个 PWMx 输出
    EPwm1Regs.TZDCSEL.bit.DCAEVT1 = 2;// DCAEVT1:DCAH =高电平、DCAL =无关
    EPwm1Regs.TZDCSEL.bit.DCAEVT2 = 2;// DCAEVT2:DCAH =高电平、DCAL =无关
    EPwm1Regs.TZDCSEL.bit.DCBEVT1 = 2;// DCBEVT1:DCBH =高电平、DCBL =无关
    EPwm1Regs.TZDCSEL.bit.DCBEVT2 = 2;// DCBEVT2:DCBH =高电平、DCBL =无关

    //事件触发块-生成 DCAEVT1.FORCE 和 DCBEVT1.FORCE 信号(单触发源)
    EPwm1Regs.DCACTL.bit.EVT1SRCSEL = 0;//选择 DCAEVT1作为输入信号
    EPwm1Regs.DCACTL.bit.EVT1FRCSYNCSEL = 1;//选择异步
    EPwm1Regs.TZFRC.bit.DCAEVT1 = 0;//启用 DCAEVT1.force 输出信号
    EPwm1Regs.DCBCTL.bit.EVT1SRCSEL = 0;//选择 DCBEVT1作为输入信号
    EPwm1Regs.DCBCTL.bit.EVT1FRCSYNCSEL = 1;//选择异步
    EPwm1Regs.TZFRC.bit.DCBEVT1 = 0;//启用 DCBEVT1.force 输出信号

    //事件触发块-生成的 DCAEVT2.FORCE 和 DCBEVT2.FORCE 信号(逐周期源)
    EPwm1Regs.DCACTL.bit.EVT2SRCSEL = 0;//选择 DCAEVT2作为输入信号
    EPwm1Regs.DCACTL.bit.EVT2FRCSYNCSEL = 1;//选择异步
    EPwm1Regs.TZFRC.bit.DCAEVT2 = 0;//启用 DCAEVT2.force 输出信号
    EPwm1Regs.DCBCTL.bit.EVT2SRCSEL = 0;//选择 DCBEVT2作为输入信号
    EPwm1Regs.DCBCTL.bit.EVT2FRCSYNCSEL = 1;//选择异步
    EPwm1Regs.TZFRC.bit.DCBEVT2 = 0;//启用 DCBEVT2.force 输出信号

    //跳闸区域子模块-跳闸逻辑块
    //仅使用 TZCTL 和 EVT1
    EPwm1Regs.TZCTL2.bit.ETZE = 0;//仅使用 TZCTL 寄存器,禁用 TSCTL2

    EPwm1Regs.TZCTL.bit.DCAEVT1 = 0x10;//跳闸时、强制 EPWM1A 进入低电平状态
    EPwm1Regs.TZCTL.bit.DCBEVT1 = 0x10;//跳闸时、强制 EPWM1B 处于低电平状态
    EPwm1Regs.TZCTL.bit.DCAEVT2 = 0x10;//跳闸时、强制 EPWM1A 进入低电平状态
    EPwm1Regs.TZCTL.bit.DCBEVT2 = 0x10;//跳闸时、强制 EPWM1B 处于低电平状态
    EPwm1Regs.TZCTL.bit.TZA = 0x10;//跳闸时、强制 EPWM1A 进入低电平状态
    EPwm1Regs.TZCTL.bit.TSB = 0x10;//跳闸时、强制 EPWM1B 处于低电平状态

    //跳闸区域子模块-选择 OSHT 和 CBC 源
    EPwm1Regs.TZSEL.bit.DCAEVT1 = 1;//为此 ePWM 模块启用 DCAEVT1作为单触发源
    EPwm1Regs.TZSEL.bit.DCBEVT1 = 1;//为此 ePWM 模块启用 DCBEVT1作为单触发源
    EPwm1Regs.TZSEL.bit.DCAEVT2 = 1;//启用 DCAEVT2作为此 ePWM 模块的 CBC 跳闸源
    EPwm1Regs.TZSEL.bit.DCBEVT2 = 1;//启用 DCBEVT2作为此 ePWM 模块的 CBC 跳闸源

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

    您好、Joel、

    [引用 userid="420268" URL"~/support/microcontrollers/c2000/f/c2000-microcontrollers-forum/994051/tms320f28377d-tripping-pwmxa-and-pwmxb-signals-when-using-active-high-complimentary-mode/3674824 #3674824"]您能否确认以下代码是否正确、以便根据跳闸信号触发 PWMxA 和 PWMxB?

    我在您提供的代码中没有看到错误、您是否对其进行了测试?

    [引用 userid="420268" URL"~/support/microcontrollers/c2000/f/c2000-microcontrollers-forum/994051/tms320f28377d-tripping-pwmxa-and-pwmxb-signals-when-using-active-high-complimentary-mode/3674565 #3674565"]

    尽管  DCAEVT1/2来自 DCAH/DCAL 信号。 DCBEVT1/2来自 DCBH/DCBL 信号、因为它们一起进行或运算并发送到 PWM 模块的 A 和 B 输出、 所以 DCBEVT1/2和 DCAEVT1/2信号在 PWM 模块的两个输出上都起作用?

    如果我们的跳闸决定根据数字比较跳闸信号的任意组合来跳闸 PWM 模块的 A 和 B 输出、那么在定义 A 和 B 输出的跳闸时、还有什么意义呢? 只要有任何错误信号跳闸 PWMA 就有意义、因为这些信号也会跳闸 PWMB、除非我弄错了。

    [/报价]

    是的、因为您希望配置单次触发和逐周期事件。  

    这样做是为了进行配置。 某些应用要求在每个输出中进行不同的更改、并非所有配置都具有依赖于输出 A 的输出 B

    此致、

    Marlyn