工具/软件:Code Composer Studio
大家好、 我最近学习了 UCD3138HSFBEVM_029演示板、无法理解"DAC 斜坡"功能不符合要求。
我读取了代码:
内联 void handle_Vout_prebias 状态(void)
{
Vout = ADC_values.Vout;
vdac_prebias = Vout * 6.15;//6.26在 ADC 与 DAC 之间的比例更大
if (vdac_prebias > PMBus_DCDC_CONFIG_ENMODE[0].Vout_cmd)
{
vdac_prebias = PMBus_DCDC_CONFIG_ENMODE[0].Vout_cmd;
}
FeCtrl0Regs.EADCDAC.bit.DAC_value = vdac_prebias;
VOUT = ADC_Values.Vout * 6;//输出定标器的电压// Vout 的定标器= 0.101 (9.901)//6.29 = Vout*2.5*9.901/4096和10位左移
Vin =(VIN_EADC_SnS * 30);//输入定标器电压乘以 Vin 感测到的定标器
Duty_prebias =(unsigned int)(((((UINT64) Vout)<< 22)/(UINT64) VIN);// Duty *全标量10位+ 8位
preset_filter0 (Duty_prebias);
FeCtrl0Regs.RAMPCTRL.bit.firmware_start = 1;
MiscanalogRegs.GLBIOEN.ALL &= 0xFFFFFF00;//设置为 PWM 模式并启用 DPWM
Filter0Regs.FILTERCTRL.bit.USE_CPU_SAMPLE =0;
Filter1Regs.FILTERCTRL.bit.USE_CPU_SAMPLE =0;
SUPPLY_STATE = STATE_RAMP_UP;
}
内联 void handle_Vout_ram_up_state (void)
{
fault_handler ();
if (FeCtrl0Regs.RAMPSTAT.BIT.RAMP_COMP_INT_STATUS = 1)
{timer_interrupt_Temporary _1 = FeCtrl0Regs.RAMPDACEND.bit.RAMP_DAC_VALUE;
FeCtrl0Regs.EADCDAC.BIT.DAC_VALUE = TIMER_INTERRUPT_Temporary;
if (PMBus_DCDC_CONFIG[0].LL_EN)//如果启用轻负载、请勿打开同步 FET
{
// FeCtrl2Regs.RAMPCTRL.bit.firmware_start = 0;
supply_state = State_regated;
}
其他
{
// supply_state = State_SYNFET_RAMP_UP;
SUPPLY_STATE = STATE_FF_ENABLE;
// FeCtrl2Regs.RAMPCTRL.bit.firmware_start = 1;//启动同步 FET 软启动
}
FeCtrl0Regs.RAMPCTRL.bit.firmware_start = 0;
}
}
并通过设置 位 FeCtrl2Regs.RAMPCTRL.bit.firmware_start = 1来查找 Vout 斜坡软启动、但我 没有从 GUI 中发现它更改为1。
此外、根据程序的想法、当软启动完成时、FeCtrl0Regs.RAMPSTAT.bit.RAMP_COMP_INT_STATUS 位将设置为1。 但我发现该值 始终 等于0。
我对这个问题感到困惑、应该有一些我不理解的问题。 因此、我非常希望您能为我提供一些建议。
期待您的回复、 非常感谢!