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.

关于HVLLC示例程序里各种Q值的疑问

Other Parts Discussed in Thread: CONTROLSUITE, POWERSUITE

我是TI DSP的初学者,请教一下大家几个问题,这是在controlSuite的HVLLC工程下的例程,控制芯片是F2802x,有些地方我不是很明白

// Monitor ("Get") // Display as:

int16 Gui_Vout;    // Q9

int16 Gui_Ipri;    // Q9  

int16 Gui_V_SR1;   // Q9

int16 Gui_V_SR2;   // Q9

int16 Gui_I_SR1;   // Q8

int16 Gui_I_SR2;   // Q8

// Configure ("Set")

int16 Gui_Vset;    // Q9

这里的Gui_Vset 是Q9格式,假如我在watch窗口Gui_Vset变量下设置为12,也就是想让输出电压为12V,那么在程序里Gui_Vset是12*2^9吗?

这里为什么设置为Q9,还有其他的一些Q值是怎么确定的,比如这里的PID三个参数,为什么是Q10,这些问题挺困扰我的

Pgain = 200;       // Q10

Igain = 1;         // Q10

Dgain = 5;         // Q10

这里的一段程序

//Multiply with longs to get proper result then shift by 14 to turn it back into an int16

Vset = ((long)Gui_Vset*(long)iK_Vset) >> 5;

其中iK_Vset = 27618;   // 1.686 (Q14),Vset是PID控制的反馈值(CNTL_2P2Z_Ref1 = &Vset;)

Vset为什么要走这样处理?感觉都是跟Q值有很大关系

  • Hitaowei,

    你理解的对的,GUI_Cset的实际数值是12*2^9;采用IQ格式的目的是利用定点的CPU可以实现浮点数值的计算,如计算0.5*0.5等,具体采用IQ多少的格式是由客户自己确定,需要注意的是计算过程中数值是否会溢出,精度是否能满足等;Vset具体采用IQ几请查找程序中CNTL_2P2Z_Ref1的IQ格式,两个IQ格式数据相乘,则记过是IQ格式相加的,如 IQ(10) * IQ(10),则结果是IQ(20)的。

  • 关于IQ格式的使用,建议看下TI的IQMath的手册:

    C:\ti\controlSUITE\libs\math\IQmath\v160\doc

  • 嗯,谢谢你,我还有些疑问,controlSUITE的powerSUITE下有个Digital Power BoosterPack工程,分为了Buck_VMC_F28069M和Buck_VMC_F28377S两个版本,这两个版本功能是一样的。28069这个的控制循环中断处理(PID/2P2Z)用汇编写的,小数用了Q格式,而28377S的控制循环中断处理(PID/2P2Z)用的C语言写的,小数是直接用浮点形式的。我有些困惑的是28069也是浮点DSP,为什么不像28377那样小数直接也是浮点数形式处理呢?

    另外在Buck_VMC_F2837xS这个工程里:

    // Configure PWM for 200Khz (default) switching Frequency

    // Period Count= 100Mhz/200Khz = 500

    PWM_1ch_UpCntDB_ActivHIC_CNF(BUCK_PWM_NO, BUCK_PWM_PERIOD,1,0);   // Master mode

    这个用的是F28377S芯片,主频是200MHz,配置时却是按照100MHz算的(#define CPU_SYS_CLOCK 100000    #define BUCK_PWM_SWITCHING_FREQUENCY 200),感觉这里有点问题,还有其他一些例程里面注释和程序对不上的地方也有。但是这些是TI官方程序,所以不太确定。

  • Martin你好,能不能继续回答下帖子下面的问题呢,谢谢了

  • Hitaowei,

    不好意思,白天出差,回复晚了。

    先回答第一个问题:

    是的,F28069也是浮点型的,也可以像F28377那样直接采用浮点运算;我估计美国BU那边这样做的目的是要演示定点和浮点运算两种例程,但我们的硬件板子决定了只能采用F28069和F28377的控制板能配合下面的电源板进行试验(其他的F2803X等都是采用插卡形式的),其实这个EVM采用的是F28069M的板子(点击控制套件中的)。

  • Hitaowei,

    第二个问题:

    看了程序,系统时钟是配置成200MHz, 而PWM模块的时钟按照默认配置的,是系统时钟的一半100MHz, 这个部分是因为F28377采用的type4的PWM,时钟不是直接采用系统时钟的,有预分频处理:

    Note: The Type 4 EPWM clocking varies from previous EPWM types. Prior to the Type 4 EPWM, the
    time-base submodule was clocked directly by the system clock (SYSCLKOUT). On this version of the
    ePWM, there is a divider (EPWMCLKDIV) of the system clock which defaults to EPWMCLK =
    SYSCLKOUT / 2

  • 嗯嗯,那我明白了,谢谢你的耐心解答。