Part Number:TMS320F28027
PWM2中断是50us一次,IQ就是简单的乘法与加法运算,且IQ程序已做验证可以正常运行
问题如下:
1.使能PWM2的时候即enablePWMCLKCounting();发现串口printf打印速度慢几乎一秒一个字符但串口输出内容是对的,并且IQ程序也慢
2.当屏蔽函数enablePWMCLKCounting();串口printf与IQ计算正常,串口打印速度非常快?
请教下这是什么问题?谢谢!
Green Deng:
额,这个还得升级一下,有回复了明天会更新哈。
,
Inver:
您好!这个英文论坛答复没?能否帮忙催下?谢谢!
,
Green Deng:
额,并没有:e2e.ti.com/…/tms320f28027-question-about-pwm-interrupt-and-iqmath
,
Inver:
IQ问题如下(F28027 时钟60MHZ):
1.单独的_IQ(A), _IQrmpy(A,B),_IQmpy( A,B),_IQdiv(A,B),_IQsin(A),_IQcos(A)
这些常用函数运行指令周期是多少?
2._IQsin(_IQmpy(_IQ(PI),_IQdiv(_IQ(1),_IQ(6))))这条语句的运行周期是多少?
,
Green Deng:
额,还是提醒一下啊,真的别让工程师去算运行周期了,计算起来很麻烦的。
我这边的建议是你自己CCS运行一下,调用一下CCS的clock功能看一下运行整个中断需要多少个clock,这样更直观,也更方便。
,
Green Deng:
然后E2E那边,建议1是提供一下串口打印的代码,2是提供一下是否有其他中断占用时间,有的话占用了多久?
,
Inver:
问题找到了 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中运行代码的搬运?
谢谢!
,
Green Deng:
要不你发布一个关于提升IQmath运行速度的新帖吧,这边会安排工程师专门给你处理或者升级一下。这个帖子我就先关闭了。
,
Inver:
好的 谢谢
,
Green Deng:
客气了,感谢一直以来对论坛的关注。