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.

[参考译文] UCD3138A64:有关滤波器预设的查询

Guru**** 2379300 points
Other Parts Discussed in Thread: UCD3138A64, UCD3138FW-BIDI
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/1304161/ucd3138a64-query-regarding-filter-preset

器件型号:UCD3138A64
主题中讨论的其他器件: UCD3138FW-BIDI

在 UCD3138a64的方框图中、有3个基于 PID 的滤波器。
我们想知道、在理想情况下、滤波器1和滤波器2的初始预设值应该是多少。
如果这些滤波器未正确预设,结果会是什么。

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

    您好 Gouri:

    您不需要为滤波器设置预设值。 如果要为滤波器包含预设值、则"0"良好。 例如、如果您查看 UCD3138FW-bidi SDK (https://www.ti.com/tool/UCD3138FW-BIDI)、则 在文件中  BUCC.c  预设值仅在将滤波器清为"0"时使用。 通常不需要预设到另一个值、因为滤波器将在启动后刷新。

    void clear_filter0(void)
    {
    	Filter0Regs.FILTERCTRL.bit.FORCE_START =0;
    	Filter0Regs.FILTERCTRL.bit.FILTER_EN = 0;
    	Filter0Regs.FILTERPRESET.bit.PRESET_VALUE = 0;
    	Filter0Regs.FILTERPRESET.bit.PRESET_REG_SEL = 0;
    	Filter0Regs.FILTERPRESET.bit.PRESET_EN = 1;
    
    	while(Filter0Regs.FILTERPRESET.bit.PRESET_EN == 1)
    	 {
    	  //wait for previous preset to take effect
    	 }
    	Filter0Regs.FILTERPRESET.bit.PRESET_VALUE = 0;
    	Filter0Regs.FILTERPRESET.bit.PRESET_REG_SEL =1;
    	Filter0Regs.FILTERPRESET.bit.PRESET_EN = 1;
    	while(Filter0Regs.FILTERPRESET.bit.PRESET_EN == 1)
    	 {
    	  //wait for previous preset to take effect
    	 }
    	Filter0Regs.FILTERPRESET.bit.PRESET_VALUE = 0;
    	Filter0Regs.FILTERPRESET.bit.PRESET_REG_SEL = 2;
    	Filter0Regs.FILTERPRESET.bit.PRESET_EN = 1;
    
    	 while(Filter0Regs.FILTERPRESET.bit.PRESET_EN == 1)
    	 {
    	  //wait for previous preset to take effect
    	 }
    	Filter0Regs.FILTERPRESET.bit.PRESET_VALUE = 0;
    	Filter0Regs.FILTERPRESET.bit.PRESET_REG_SEL = 3;
    	Filter0Regs.FILTERPRESET.bit.PRESET_EN = 1;
    	Filter0Regs.CPUXN.bit.CPU_SAMPLE = 0;
    	Filter0Regs.FILTERCTRL.bit.USE_CPU_SAMPLE = 1;
    	Filter0Regs.FILTERCTRL.bit.FILTER_EN = 1;
    	Filter0Regs.FILTERCTRL.bit.FORCE_START = 1;
    }

    此致、

    乔纳森·王

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

    尊敬的 Jonathan:
    如果这些过滤器未正确预设,结果会是什么?
    在这种情况下观察到的行为是什么。

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

    您好 Gouri:

    结果可能取决于您何时输入预设值。 如果您的目标是预设特定的滤波器值、例如唯一的 Ki 值、则输出可能瞬间不稳定。 假设您输入一个不正确的预设值、使您的占空比从25%迅速增加到75%。  您将具有高得多的占空比。 但是、EADC 的采样速率高达16Msps。 因此、您的滤波器将在几个周期内刷新。 因此、如果环路是稳定的、那么它应该能够抵抗单个不正确的预设值。

    预设值通常用于将滤波器清为"0"、这就是上面的代码所实现的。 在 BIDI 拓扑中、当从"降压"拓扑切换到"升压"拓扑时、滤波器被清除、反之亦然。 拓扑之间的切换相对于环路而言缓慢发生。 所以, 应该不会有明显的效果。

    如果您不断错误地设置唯一值或清除滤波器(例如、每1us 一次)、则会看到输出不稳定。 但是、如果环路是稳定的、那么不合适的预设滤波器值不应显著影响性能。

    此致、

    乔纳森·王