“其他部件”(在“螺纹:Tida-010054”中讨论)
您好,
我想确认一点,TIDA-010054:
寄存器 CMPAHR,CMMPBHR,DBREDHR,DBFEDHR 和 TBPHSHR 是否已启用? 是否仅禁用 TBPRDHR?
我认为对吗? 谢谢
济济会语
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.
您好,
我想确认一点,TIDA-010054:
寄存器 CMPAHR,CMMPBHR,DBREDHR,DBFEDHR 和 TBPHSHR 是否已启用? 是否仅禁用 TBPRDHR?
我认为对吗? 谢谢
济济会语
上-下计数模式用于为双主动桥的主支腿和辅助支腿生成 PWM。 要使用高分辨率 PWM,Prim_LEG1_H PWM 脉冲以周期事件为中心,且时间基准配置为向上-向下计数。 然后为辅助开关生成具有高分辨率死机时间的互补脉冲。 在 LEG1和 LEG2之间,全桥操作需要180度相移。 这是通过使用 PWM 模块上的功能交换 XA 和 XB 输出来实现的。 此应用的 PWM 频率为100kHz。 TBPRD 寄存器在上-下计数模式下设置为值500。
占空比值加载在 ePWM 基座的 CMPA 寄存器中,并配置为生成50%占空比。 操作限定符模块输出在比较事件上控制 PWM 输出所需的操作。 类型4 PWM 上的全局链路机制用于减少更新寄存器所需的周期数并启用高频操作。 例如,DAI_HAL_setupPWM()函数中的以下代码链接所有 PWM 分支的 TBPRD 寄存器。
使用此链接,对 Prim_LEG1 TBPRD 寄存器的单个写入将值写入 Prim_LEF2,SEC_LEG1和 SEC_LEG2。
使用的高分辨率功能:
次级侧的 PWM 脉冲相对于主侧的 PWM 脉冲进行相移。 控制相移可在主和次电源之间实现电源转换,反之亦然。 传输的最大功率对双主动桥中的相移值非常敏感。 小型系列电感器可以在相位偏移的小值下实现最大功率传输。 由于相移的变化范围很小,准确的控制需要 相位的精细增量/递减步骤。 使用 F28004x 的高分辨率(高分辨率)功能实施相位控制。 ISR1内的 DAI_AND_AND_AND_MODENTYPeriodPhaseShiftTicks()函数计算电压和电流模式控制所需的高分辨率相位控制。 这有助于平稳处理突然的负载变化,而不会在电流波形中产生巨大的过载/瞬变。
对于正相位和负相位偏移,计算方法略有不同,以适应 HRPWM 的硬件实施。
static inline void DAB_calculatePWMDutyPeriodPhaseShiftTicks( void ) { ... // // first the phase shift in pu is converter to ns // this is done for better debug and user friendliness // DAB_pwmPhaseShiftPrimSec_ns = DAB_pwmPhaseShiftPrimSec_pu * ((float32_t) 1.0 / DAB_pwmFrequency_Hz) * ( 1 / ONE_NANO_SEC); // // next this ns is simply converted to ticks // DAB_pwmPhaseShiftPrimSec_ticks = (int32_t)((float32_t)DAB_pwmPhaseShiftPrimSec_ns * DAB_PWMSYSCLOCK_FREQ_HZ * ONE_NANO_SEC * TWO_RAISED_TO_THE_POWER_SIXTEEN) - ((int32_t) 2 << 16 ); // // due to the delay line implementation depending on whether it is // a phase delay or an advance we need to adjust the // HR phase shift ticks calculations // if (DAB_pwmPhaseShiftPrimSec_ticks >= 0 ) { DAB_phaseSyncPrimToSecCountDirection = EPWM_COUNT_MODE_DOWN_AFTER_SYNC; // // DAB_pwmPhaseShiftPrimSec_ticks has the correct value already // } else { DAB_phaseSyncPrimToSecCountDirection = EPWM_COUNT_MODE_UP_AFTER_SYNC; DAB_pwmPhaseShiftPrimSec_ticks = DAB_pwmPhaseShiftPrimSec_ticks * - 1 ; DAB_pwmPhaseShiftPrimSec_HiResticks = ((uint16_t) 0xFF - ((uint16_t) (DAB_pwmPhaseShiftPrimSec_ticks & 0x0000FFFF )>> 8 )); DAB_pwmPhaseShiftPrimSec_ticks = ((DAB_pwmPhaseShiftPrimSec_ticks & 0xFFFF0000 ) + 0x10000 ) + (DAB_pwmPhaseShiftPrimSec_HiResticks << 8 ); } } |
static inline void DAB_HAL_updatePWMDutyPeriodPhaseShift(uint32_t period_ticks, uint32_t dutyAPrim_ticks, uint32_t dutyASec_ticks, uint32_t phaseShiftPrimSec_ticks, uint16_t phaseShiftPrimSec_direction) { ... EALLOW; HWREG(DAB_SEC_LEG1_PWM_BASE + HRPWM_O_TBPHS) = phaseShiftPrimSec_ticks; HWREG(DAB_SEC_LEG2_PWM_BASE + HRPWM_O_TBPHS) = phaseShiftPrimSec_ticks; EDIS; } |
变量“AB_phaseSyncPrimToSecCountDirection ”已更新,以控制电源流的正向模式或反向模式。
以下是对代码进行验证的装置测试
频率/周期 →固定,不能是 HRPWM,即 TBPRD 只是常规分辨率位
主相位和辅相位的切换可以通过高分辨率进行更改
死区可以使用高分辨率进行更改
占空比固定在50%
连接 PWM1A (Q1),PWM1B (Q2),PWM3A (Q5)和 PWM3B (Q6)上的探头
1A 和1B 将是互补对3A 将与1A 与指定相移同步,现在相移由变量 DAI_pwmPhaseShiftPrimSecRef_PU 控制,
检查
小心:不建议在超过0.45pu 的情况下操作相移
接下来,将 PWM 探头更改为 PWM1A,PWM1B,PWM2A 和 PWM2B
确认 PWM1A 和2B 处于同步和相位
确认 PWM1B 和2A 处于同步和相位
5.确认它们在秒侧 PWM 的相移改变时保持同步和相位。
6.死时间验证
通过修改 dab_settings.h 中以下变量的值,可以调整死时间的值
#define DAM_Prim_PWM_dutband _red_NS (((float32_t) 300)
#define DAM_Prim_PWM_dutband _fed_NS (((浮动32_t) 300)
#define DAB_SEC_PWM_dutband _red_NS ((浮动32_t) 300)
#define DAB_SEC_PWM_dutband _fed_NS ((浮动32_t) 300)
300ns 停机时间(上升和下降边缘)