发 帖  
请问HVLLC示例程序里各种Q值是什么意思?怎么理解?
382 DSP
分享
本帖最后由 一只耳朵怪 于 2018-6-14 10:05 编辑

我是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值有很大关系
0
2018-6-14 06:17:00   评论 邀请回答
7个回答
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)的。
2018-6-14 06:27:42 评论

举报

广陵云峰 发表于 2018-6-14 06:27
Hitaowei,
你理解的对的,GUI_Cset的实际数值是12*2^9;采用IQ格式的目的是利用定点的CPU可以实现浮点数值的计算,如计算0.5*0.5等,具体采用IQ多少的格式是由客户自己确定,需要注意的是计算过程中数值是否会溢出,精度是否能满足等;Vset具体采用IQ几请查找程序中CNTL_2P2Z_Ref1的IQ格式,两个IQ格式数据相乘,则记过是IQ ...

关于IQ格式的使用,建议看下TI的IQMath的手册:
C:\ti\controlSUITE\libs\math\IQmath\v160\doc
2018-6-14 06:45:06 评论

举报

广陵云峰 发表于 2018-6-14 06:27
Hitaowei,
你理解的对的,GUI_Cset的实际数值是12*2^9;采用IQ格式的目的是利用定点的CPU可以实现浮点数值的计算,如计算0.5*0.5等,具体采用IQ多少的格式是由客户自己确定,需要注意的是计算过程中数值是否会溢出,精度是否能满足等;Vset具体采用IQ几请查找程序中CNTL_2P2Z_Ref1的IQ格式,两个IQ格式数据相乘,则记过是IQ ...

嗯,谢谢你,我还有些疑问,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官方程序,所以不太确定。
2018-6-14 07:02:37 评论

举报

广陵云峰 发表于 2018-6-14 06:27
Hitaowei,
你理解的对的,GUI_Cset的实际数值是12*2^9;采用IQ格式的目的是利用定点的CPU可以实现浮点数值的计算,如计算0.5*0.5等,具体采用IQ多少的格式是由客户自己确定,需要注意的是计算过程中数值是否会溢出,精度是否能满足等;Vset具体采用IQ几请查找程序中CNTL_2P2Z_Ref1的IQ格式,两个IQ格式数据相乘,则记过是IQ ...

Martin你好,能不能继续回答下帖子下面的问题呢,谢谢了
2018-6-14 07:22:36 评论

举报

guotong1984 发表于 2018-6-14 07:02
嗯,谢谢你,我还有些疑问,controlSUITE的powerSUITE下有个Digital Power BoosterPack工程,分为了Buck_VMC_F28069M和Buck_VMC_F28377S两个版本,这两个版本功能是一样的。28069这个的控制循环中断处理(PID/2P2Z)用汇编写的,小数用了Q格式,而28377S的控制循环中断处理(PID/2P2Z)用的C语言写的,小数是直接用浮点形式 ...

Hitaowei,
不好意思,白天出差,回复晚了。
先回答第一个问题:
是的,F28069也是浮点型的,也可以像F28377那样直接采用浮点运算;我估计美国BU那边这样做的目的是要演示定点和浮点运算两种例程,但我们的硬件板子决定了只能采用F28069和F28377的控制板能配合下面的电源板进行试验(其他的F2803X等都是采用插卡形式的),其实这个EVM采用的是F28069M的板子(点击控制套件中的)。
2018-6-14 07:27:36 评论

举报

guotong1984 发表于 2018-6-14 07:02
嗯,谢谢你,我还有些疑问,controlSUITE的powerSUITE下有个Digital Power BoosterPack工程,分为了Buck_VMC_F28069M和Buck_VMC_F28377S两个版本,这两个版本功能是一样的。28069这个的控制循环中断处理(PID/2P2Z)用汇编写的,小数用了Q格式,而28377S的控制循环中断处理(PID/2P2Z)用的C语言写的,小数是直接用浮点形式 ...

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
2018-6-14 07:46:45 评论

举报

广陵云峰 发表于 2018-6-14 07:46
Hitaowei,
第二个问题:
看了程序,系统时钟是配置成200MHz, 而PWM模块的时钟按照默认配置的,是系统时钟的一半100MHz, 这个部分是因为F28377采用的type4的PWM,时钟不是直接采用系统时钟的,有预分频处理:

嗯嗯,那我明白了,谢谢你的耐心解答。
2018-6-14 08:01:15 评论

举报

只有小组成员才能发言,加入小组>>

32个成员聚集在这个小组

加入小组

创建小组步骤

关闭

站长推荐 上一条 /7 下一条

快速回复 返回顶部 返回列表