IQmath基本使用方法(2812为例子)
define的基本用法
一. 配置CMD

PRAMH0        : origin = 0x100000, length = 0x008000   
BOOT_ROM      : origin = 0x3ff000, length = 0x000fc0
IQmathTables  : > BOOT_ROM, type = NOLOAD, PAGE = 0
IQmath        : > PRAMH0,  PAGE = 0

二. 载入gel文件,加入IQmath库和头文件
l
IQmath.lib
IQmathLib.h

三.定义全局Q格式,和调试Q格式
#define GLOBAL_Q    20 //全局为Q20格式,默认为Q24格式
long GlobalQ = GLOBAL    //调试用为Q20格式(这样可以使用_IQ(x)在监视器中查看)

//-----------------------------
IQmath中常用的变量和字符
QN    16bitQ格式
IQN  32bitQ格式 N表示Q多少
int 16bit
long 32bit
_iq = _iqN = long
F 浮点数输入
S 浮点字符串
P 正数最大值
N 负数最大值

格式转化函数
一般情况下IQ都有IQN版本的函数
float _IQtoF(A)        //_iq浮点转成正常浮点
float _IQNtoF(A)
int _IQtoQN(A)          //iq和q(16bit)的转化
long _IQint(A)          //提取iq的整数部分
_IQ(float F)            //浮点转化成iq
_IQN(float F)
_atoIQ(char *s)        //字符串转化成iq
_IQfrac(A)              //提取iq的小数部分
_IQtoIQN(A)            //全局iq和普通iq的转化     
_IQNtoIQ(A)
_QNtoIQ(int A)

算术函数
long _IQmpyI32int(A, B) //N*long IQ乘long 返回整数部分
long _IQmpyI32frac(A, B)//N*long IQ乘long 返回小数部分
_IQmpy(A, B)            //N*N乘法
_IQrmpy(A, B)          //N*N四舍五入的乘法最后保存结果前(四舍五入)
_IQrsmpy(A, B)          //N*N四舍五入的饱和处理乘法(如果Q26[-32,+32],如果相乘结果超过也会限制到这个范围)
_IQmpyI32(A, B)        //N*long IQ乘long
_IQmpyIQX(A, A1, B, B1) //N1*N2两个不同的Q格式乘法,返回全局Q格式
_IQdiv(A, B)            // N/N iq除法

三角函数
_IQsin(A)
_IQsinPU(A)            //正弦函数(标幺值),你占这个圆周的几分之几为单位如果sin((0.25*PI)/(2*PI))
_IQcos(A)
_IQcosPU(A)
_IQatan2(A, B)          //第四象限反正切 tan-1(sin, cos)
_IQatan2PU(A, B)        //第四象限反正切 tan-1(sin, cos)
_IQatan(A, B)          //定点反正切    tan-1(1),,1=sin/cos

_IQNsin(A)
_IQNsinPU(A)            //正弦函数(标幺值),你占这个圆周的几分之几为单位如果sin((0.25*PI)/(2*PI))
_IQNcos(A)
_IQNcosPU(A)
_IQNatan2(_iqA, B)      //第四象限反正切 tan-1(sin, cos)
_IQNatan2PU(_iqA, B)    //第四象限反正切 tan-1(sin, cos)
_IQNatan(A, B)          //定点反正切    tan-1(1),,1=sin/cos

数学函数
_IQNsqrt(A)            //平方根        a^0.5
_IQNisqrt(A)            //平方根倒数    1/a^0.5
_IQNmag(A, B)          //求模运算(sqrt(A^2 + B^2)

_IQsqrt(A)              //平方根        a^0.5
_IQisqrt(A)            //平方根倒数    1/a^0.5
_IQmag(A, B)            //求模运算(sqrt(A^2 + B^2)

其它函数
_IQsat(A, long P, long N)//IQ数值的限幅函数 把A限制到[N P]之间
_IQNabs(A)              //IQ数据的绝对值    |A|
_IQabs(A)              //IQ数据的绝对值    |A|

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。