您好!
我正在对 DSP 的数字比较子模块进行编程、并希望根据我生成的某些 CMPSS 信号触发 PWMA 和 PWMB 信号。
对 DCAHTRIPSEL 和 DCBHTRIPSEL 寄存器进行编程是否重要?或者、您是否可以假设、如果使用 AHC 模式、当触发 PWMA 时、PWMB 也会自动跳闸?
即使在 AHC 模式下、也可以将 PWMA 和 PWMB 跳闸以确保安全吗? 当 PWMA 和 PWMB 跳闸/恢复时、死区子模块是否会始终确保不存在交叉?
此致、
Joel
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.
您好!
我正在对 DSP 的数字比较子模块进行编程、并希望根据我生成的某些 CMPSS 信号触发 PWMA 和 PWMB 信号。
对 DCAHTRIPSEL 和 DCBHTRIPSEL 寄存器进行编程是否重要?或者、您是否可以假设、如果使用 AHC 模式、当触发 PWMA 时、PWMB 也会自动跳闸?
即使在 AHC 模式下、也可以将 PWMA 和 PWMB 跳闸以确保安全吗? 当 PWMA 和 PWMB 跳闸/恢复时、死区子模块是否会始终确保不存在交叉?
此致、
Joel
您好、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
只是为了澄清;
尽管 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