程序中有一句 _iq SpeedRef =_IQ(0.15),其中全局的Q格式是24,可不可以这样理解,speedref的十进制的数值就是0.15*2^24的值?
求助ti人,1.怎样理解IQ的计算?
2,程序中的iq值可以看作是标幺值吗
ZENGZHEN XING:
回复 Martin Yu:
您好,还是有点疑惑,比如说我想将一个数2516582转化成_IQ24格式,应该怎样计算。
还有就是怎样实现将一个变量转化成IQ格式,比如说iq i= iq(x*y),其中x,y都是变量,我在程序中写,总是报错,说expression must has a constant value.
程序中有一句 _iq SpeedRef =_IQ(0.15),其中全局的Q格式是24,可不可以这样理解,speedref的十进制的数值就是0.15*2^24的值?
求助ti人,1.怎样理解IQ的计算?
2,程序中的iq值可以看作是标幺值吗
ZENGZHEN XING:
回复 Jay:
恩,那您觉得
1、我想在程序中将浮点型转换为Iq格式,是不是应该这样_iq i = x / 2^24,
2、_IQ12toIQ(x)这种语句又是什么意思
程序中有一句 _iq SpeedRef =_IQ(0.15),其中全局的Q格式是24,可不可以这样理解,speedref的十进制的数值就是0.15*2^24的值?
求助ti人,1.怎样理解IQ的计算?
2,程序中的iq值可以看作是标幺值吗
Martin Yu:
回复 ZENGZHEN XING:
ZengZhen,
两种方法:
1. 先将x和y分别先转换成IQ格式的,再相乘:i = _IQmpy(_IQmtoIQ(x), _IQmtoIQ(y)),其中m指你的x和y的IQ格式,如IQ15或IQ0等;
2. 先计算x*y的值,然后再转换为IQ格式:i = _IQmtoIQ(_IQmpy(x*y)); 前提是x和y都是同样IQ格式的,m的含义如上;
注意几点:
1. IQ格式的数据相乘需要调用_IQmpy(A,B)函数;
2. IQ相乘的结果是两个IQ数的叠加,如两个IQ15的数相乘的结果是IQ30格式的,需要后面转换成你想要的IQ格式。
具体的细节可以去查下TI的IQ manth库的文档
程序中有一句 _iq SpeedRef =_IQ(0.15),其中全局的Q格式是24,可不可以这样理解,speedref的十进制的数值就是0.15*2^24的值?
求助ti人,1.怎样理解IQ的计算?
2,程序中的iq值可以看作是标幺值吗
Martin Yu:
回复 ZENGZHEN XING:
ZengZhen,
_IQ12toIQ(x)的含义是将IQ12格式的x转换成你软件系统中定义的IQ格式,
你查下你的 GLOBAL_Q是多少,如TI的很多例程中在
<IQmathLib.h> 定义:#define GLOBAL_Q 24
因此针对你的语句就成x转换成IQ24格式的,即x左移12位。