IQMATH使用 冷眼心热.doc

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
IQMATH使用 冷眼心热

IQMATH使用冷眼心热作者:冷眼心热 ? 1?IQmath库 为了应用IQmath,首先要从TI官方网站下载IQmath库,文档名称为SPRC087。我们主要应用库里面的:IQmath.cmd,IQmathLib.h,IQmath.lib。新建一个工程,将IQmath.lib,IQmath.cmd添加到工程,同时在main()函数之前增加语句:#include “IQmathLib.h”。注意:rts2800.lib和DSP281x_Headers_nonBIOS.cmd也要加到工程里面。 当然也可以不用IQmath.cmd文件,而用自己的CMD文件,只要在你的CMD里面添加以下代码即可: MEMORY { ????PAGE 0: ????BOOTROM (RW) : origin = 0x3ff000 , length = 0x000fc0 ??RAMH0 (RW) : origin = 0x 3f8000 , length = 0x002000 } SECTIONS { ????IQmathTables : load = BOOTROM , type = NOLOAD , PAGE=0 ????IQmath : load =?RAMH0?, PAGE=0 ? } 以上代码的红色部分可以适当修改。IQmathTables段必须设置为NOLOAD型 (by:superchengmin) 2 IQ实例 注释:1 最后一句等效前面三句; ? ??????2 temp = AdcRegs.ADCRESULT0;此句中AdcRegs.ADCRESULT0类型为Uint16,此处插一句 // // For Portability, User Is Recommended To Use Following Data Type Size // Definitions For 16-bit and 32-Bit Signed/Unsigned Integers: // ????#ifndef DSP28_DATA_TYPES ????#define DSP28_DATA_TYPES ????typedef int int16; ????typedef long int32; ????typedef unsigned int Uint16; ????typedef unsigned long Uint32; ????typedef float float32; ????typedef long double float64; #endif ????这里看到typedef unsigned int Uint16在C语言中占16位,而_iq类型为typedef long _在C中占32位,赋值以后只改变temp低16位; ? ??????3 temp = _IQ16toIQ(temp); //#define _IQ16toIQ(A) ((GLOBAL_Q = 16) ? ((long) A (GLOBAL_Q - 16)):((long) A (16 - GLOBAL_Q))) ????Result = _IQmpy(AdcFsVoltage, temp); 3 IQ使用效率 建议如果对某一浮点变量使用IQ运算,中间不要再转换成浮点: 使用IQmath算正弦效率很高,其内部采用查表方式,例如正弦有512个Q30正弦值,这样在进行正弦计算时可以保证一个周期最多可以取512个点,相当于对频率为f的正弦信号使用频率为最高为fs=512*f的取样信号进行取样,根据采样定理,fs2f,即原信号每个周期采样两点以上,即可无失真恢复原信号,实际工程上要想恢复原信号每个周期应当多于两点以上,但是每周期最多可采512点完全可以无失真的恢复原信号。 ? ========================================================================== 【来自】/s/blog_6789d6e90100lauz.html 对程序中常出现的EINT、DINT、ERTM、DRTM的理解 作者:小世界 一、参考DSP281x_Device.h #define?EINT?asm( clrc INTM)?//INTM置0,开中断 #define?DINT?asm( setc INTM)?//INTM置1,关中断 #define?ERTM?asm( clrc DBGM)?//使能调试事件 #define?DRTM?asm( setc DBGM)?//禁止调试事件 二、参考《TMS320C28x DSP CPU和指令集参考指南》中对INTM和DBGM的解释(译的不好,凑合看吧。。。) 1、DBGM Bit 1:调

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档