TI中文支持网
TI专业的中文技术问题搜集分享网站

TMS320F28027: IQ在中断PWM2中运行的时候,会导致中断很慢

Part Number:TMS320F28027

PWM2中断里面IQ运算多了 影响中断 导致大循环while里面的执行很慢或者不执行 PWM2 50us中断 给我感觉IQ运算太耗时间 没文档说的那么速度快

PWM2中断里面我就用这两句IQ运算就导致我所提问的问题出现,语句如下

spwmiqvar.sinvale = _IQsin(_IQmpy( (_IQ(spwmiqvar.spwm_cnt)+_IQ(0.75)),_IQ(SIN_B) ) ) ;
spwmiqvar.sina =_IQmpy(spwmiqvar.sinvale,_IQ(spwm_factor)) ;

其中 spwmiqvar.spwm_cnt是uint16_t类型,SIN_B是宏定义浮点数0.02456,spwm_factor是浮点数float,spwmiqvar.sinvale 和spwmiqvar.sina均是_iq类型

请问IQ类型运算怎么才能提高运算速度?顺便提下 我的程序是下载到flash,main函数开头采用的MemCopy函数,实现了实现在RAM中运行代码的搬运,但未对IQ类型这种操作 ,请问IQ类型怎么实现在RAM中运行代码的搬运?

Yale Li:

您好,我向资深工程师咨询后回复您

,

Yale Li:

Inver 说:spwmiqvar.sinvale = _IQsin(_IQmpy( (_IQ(spwmiqvar.spwm_cnt)+_IQ(0.75)),_IQ(SIN_B) ) ) ;spwmiqvar.sina =_IQmpy(spwmiqvar.sinvale,_IQ(spwm_factor)) ;

两个乘法和正弦函数的组合运算应该只有约 314 个执行周期(不计算转换,转换可以忽略不计)。

Inver 说:请问IQ类型运算怎么才能提高运算速度?顺便提下 我的程序是下载到flash,main函数开头采用的MemCopy函数,实现了实现在RAM中运行代码的搬运,但未对IQ类型这种操作 ,请问IQ类型怎么实现在RAM中运行代码的搬运?

这个问题我还在与相关工程师沟通。

,

Inver:

Yale Li 说:

两个乘法和正弦函数的组合运算应该只有约 314 个执行周期(不计算转换,转换可以忽略不计)。

314个周期在加上转换的周期按400个周期计算的话,时间为400*16.7ns=6.68us 我一个中断里面没多少程序 其他就是简单的整数类型赋值之类 按道理不应该运行速度慢的 

,

Inver:

在此表示感谢!期待您的回答!

,

Yale Li:

您能否在调试时通过查看反汇编来确定它们是从RAM中运行的?查看用于 IQmath 的头文件,大部分代码都经过优化,没有实际的函数调用,因为它们使用宏,并且宏并不太复杂。 您是否可以对这些代码行计时来查看它们需要多少个周期? 此链接提供有关如何查看周期的说明:https://software-dl.ti.com/ccs/esd/documents/ccs_counting_cycles.html

赞(0)
未经允许不得转载:TI中文支持网 » TMS320F28027: IQ在中断PWM2中运行的时候,会导致中断很慢
分享到: 更多 (0)