TMS320F28377D库函数操作(IQMath移植及简单使用)

本文介绍了IQMath库在计算机中的作用,特别是其在浮点与定点类型转换上的功能,以及在STM32H7和TMS320F28377等平台上的移植步骤。作者提供了移植教程链接和使用示例,展示了如何设置位数和进行基本的浮点到定点转换。
摘要由CSDN通过智能技术生成

1.前言

我先介绍一下IQMath库,首先IQMath是干什么的?在计算机中,我们对于小数有两种使用方式,即定点与浮点类型,我们常用的float与double都属于浮点型。浮点型的好处是可以表示范围较大,但在计算中速度会慢;定点的范围比较固定,但是计算速度快。至于其他区别,大家可以到网上搜索,有非常全面的解答。而在28377里IQMath就可以进行浮点对定点的转换,定点转浮点,定点的各种计算函数。这样便可以加快我们计算的速度。同时,28377也支持将程序直接编译成定点的模式,加速计算。

 

在开始前先给发给大家一些IQMath使用教程,因为我对IQMath的具体函数没有进行大量的测试,因为我没有实际的应用场景,这里给大家一些链接,可以移植好后测试自己想要的函数。

TI的32位定点DSP库IQmath在H7和F4上的移植和使用 - STM32H7 - 硬汉嵌入式论坛 - Powered by Discuz! (armbbs.cn)

TMS320F28335使用IQmath库 - 知乎 (zhihu.com)

官方的文档也有,路径是这个C2000Ware_5_01_00_00\libraries\math\IQmath\c28\docs\IQmath_Quickstart.pdf

 

 2.移植

所有的文件在官方的SDK里有,路径是这个C2000Ware_5_01_00_00\libraries\math\IQmath\c28

文件夹是这样的,我们需要的东西主要在lib和include这两个文件夹里

73981483d24e4e098d311b649cb572c5.png

lib是这样的 

5a2e9b96361642819ac4e0f9d2425367.png

include文件夹是这样的 

ed08520173d6426f8cdec7e51ce8a4b1.png

将这些文件放到工程下,最后是这样的

7e6abc9556ec431ca40dfa0c65e7aeaf.png

我这里因为编译后选择是输出elf文件,所以将elf文件编译,其他文件跳过编译即可

b85fd0bcd5954a849b7574dab855eea7.png

 在cmd文件下我们也需要对IQMath预留空间,这部分没有固定要求,只需要是内存即可

e86eb6e4ada74c839c44c9250d405919.png

3.使用

首先在使用前我们需要将头文件包含进来,只需要包含一个IQmathLib.h这个文件即可

a116244c868b4b07aa02db9e212a8112.png

但是我们还不能使用,我们需要修改头文件里的东西。

最主要的是位数,其定义在这,我是将位数改为了16位。可以看到范围是从1-30

8c8fb5d9155a4291aafe6b632296ca03.png

这个是全局的位数,说到位数不得不说,浮点转定点的计算方式了

aec5d2adddd74023b340cff16741df23.png

正因如此,定点的位数越大,能确定小数点后的位数也就越高,即数字越精确。

但是于此同时,还有数字范围的问题,其表示范围如下图所示

f660f21319bf43c8b6e5a8e523dc0091.png

随着位数的减小,表示的范围在增加,但是会越来越不精确。具体的计算方式大家可以再上网搜索,这里不再进行过多的介绍。

等上述内容都修改好了,我们就可以写程序调试了。

我们对于定点数的定义有两种方式,一种是_iq16,一种是long

77ca2e5c3e0a4c96b17925d95816b044.png

8b1a80f85adb4721b98c496c410269f0.png

我个人推荐使用_iq16这种方式,因为在后续使用其他定点函数的时候可能会涉及到强制类型转换,警告之类的。

定义完成后我们就可以测试了,最基础的就是将浮点类型转换为定点类型,其函数是_IQ(...)

69d7dc21045f4334bfb09b1d9a6768de.png

我们进行仿真测试

e807b0e514cf48cb8fbaf0a5475e03cc.png

可以看到数值是32768,我们再笔算一下

0.5*2^16=32768

db7b0b41782c41aa8d10350bdf185aa7.png

没有问题,一切顺利。

4.结语

总的来说IQMath的移植还是非常方便的,毕竟是TI自己开发的东西,不可能移植非常困难。总的来说用起来还是非常方便的,不过我没有太多使用场景,大家如果测试其他函数也可以告诉我,说说测试效果。库里面好像还包括FFT,FIR这些复杂的运算,我还没有测试过,如果有测试也可以在评论区告诉我测试的结果啊。

顺带说一嘴编译器浮点与定点设置在这有一个relaxed(浮点)与strict(定点)这以选择,大家可以选择。

616af716f3dc456d8fe576df16dedb41.png

 

 

  • 24
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值