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