TI的C2000平台使用IQmathLib示例
1 配置IQmathLib
1.1 添加Lib
在TI的SDK库中根据上述路径找到IQmath的lib文件,根据自己的需求拷贝到工程目录中。如下:
其中有一个IQmathLib.h文件在以下路径:
根据自己的需要选择头文件(其中IQmathCPP.h为C++工程使用的):
1.2 编译工程
/* 添加头文件 */
#include "IQmathLib.h"
/* 添加变量 */
volatile float data1;
volatile _iq Output;
/* 添加测试代码 */
data1 = 1.1245;
Output = _IQ24(data1);// 浮点转Q24定点
代码测试结果如下所示:
计算器计算结果如下所示:
显然结果基本吻合,但存在转换误差,符合预期。
2 IQmathLib介绍
IQmathLib支持以下5类函数,即:三角函数、数学运算函数、算术函数、格式转换函数、其他函数。
以运算所需的周期数来看(实测),浮点转定点、定点转String、String转定点的转换时间与输入得值有关。
2.1 基本介绍
IQmathLib中的函数支持两种调用,即GLOBAL_Q Function——使用全局定义,所有函数接口均为统一的定点位数(在IQmathLib.h中修改),Q Specific Function——指定定点位数(修改“N”的值即可,如_IQ24()接口是将浮点转换成Q24的定点值)。
定点数据格式对应的数值最大范围以及精度
2.2 模块思维使用定点
在一个应用工程中,会使用到不同的功能模块,往往不同的功能模块对数据的范围、精度需求不甚一致,不免在工程框架中出现数据转换的情况(在不考虑Q指定位数时,可以在模块代码部分通过全局覆盖,使得该部分全部支持覆盖后的指定位数,而无需在调用接口时一一指定),根据以下方式即可解决。