关于 TI 演示代码:
CONFIG_UARGE_compensation (volatile filter_PMBus_regs *源)
volatile struct filter_regs *dest;
if (source =&filter1_PMBus_regs)
{
DEST =&Filter1Regs;
}
其他
{
DEST =&Filter0Regs;
}
dest->COEFCONFIG.all = 0;
//使用新的 bin 0系数配置 bin 1
dest->FILTERKPCOEF0.bit.KP_COEF_1 = source->FILTERKPCOEF0.bit.KP_COEF_0;
dest->FILTERKICOEF0.bit.KI_COEF_1 = SOURCE->FILTERKICOEF0.bit.KI_COEF_0;
dest->FILTERKDCOEF0.bit.KD_COEF_1 = source->FILTERKDCOEF0.bit.KD_COEF_0;
dest->FILTERKDALPHA.bit.KD_alpha_1 = source->FILTERKDALPHA.bit.KD_alpha_0;
//将筛选器配置为仅使用 bin 1系数
dest->COEFCONFIG.all = filter_config_BIN1;
//使用新的 bin 0系数配置 bin 0
dest->FILTERKPCOEF0.bit.KP_COEF_0 = source->FILTERKPCOEF0.bit.KP_COEF_0;
dest->FILTERKICOEF0.bit.KI_COEF_0 = SOURCE->FILTERKICOEF0.bit.KI_COEF_0;
dest->FILTERKDCOEF0.bit.KD_COEF_0 = source->FILTERKDCOEF0.bit.KD_COEF_0;
dest->FILTERKDALPHA.bit.KD_alpha_0 = source->FILTERKDALPHA.bit.KD_alpha_0;
//配置过滤器以仅使用 bin 0系数
dest->COEFCONFIG.all = 0;
//重新编程剩余的滤波器系数
dest->FILTERKPCOEF0.all = SOURCE->FILTERKPCOEF0.ALL;
dest->FILTERKPCOEF1.all = source->FILTERKPCOEF1.all;
dest->FILTERKICOEF0.ALL = SOURCE->FILTERKICOEF0.ALL;
dest->FILTERKICOEF1.all = SOURCE->FILTERKICOEF1.ALL;
dest->FILTERKDCOEF0.all = SOURCE->FILTERKDCOEF0.ALL;
dest->FILTERKDCOEF1.all = source->FILTERKDCOEF1.all;
dest->FILTERKDALPHA.ALL = SOURCE->FILTERKDALPHA.ALL;
//配置过滤器以使用定义的容器
dest->COEFCONFIG.all = source->COEFCONFIG.ALL;
将旧 PID 参数更改为新参数。
为什么首先配置“COEFCONFIG.ALL = 0”,然后配置“DESIG->COEFCONFIG.ALL = SOURCEEFCONFIG.ALL”? 为什么使用新的 Seta 系数 、然后更改为新的 SetA/B/C 系数?
为什么不直接使用“configure dest->COEFCONFIG.all = source->COEFCONFIG.all”? 只需 直接从旧的 SetA/B/C 系数更改新的 SetA/B/C 系数?