tianyaxtutianya 发表于 2014-10-19 15:41:05

如何提升DSP28335的程序运行效率

最近在用DSP28335做控制大功率电源的模块,整个环节需要先ADC采用4路信号,再进行计算输出。计算一次花费了0.2MS时间,这个时间太长了,严重影响了PID的调节效果,如何提升程序运行效率?

tianyaxtutianya 发表于 2014-10-19 15:44:38

这个是PID算法的程序:   fKvDuk = Pid_PaMt_pst->f_KvKp * fDE1 + Pid_PaMt_pst->f_KvKi * ( Pid_PaMt_pst->f_KvError + fKvKi * Pid_PaMt_pst->f_KvError- g_fKvKiLast * Pid_PaMt_pst->f_KvError1 )+ Pid_PaMt_pst->f_KvKd * ( fDE1 - fDE2 );      //PID计算

这种写法是否有可以改进的地方,怎么才能提高程序运行的效率,是采用汇编语句进行,还是从数据结构上去优化,望各位大侠指教!!!

823032003 发表于 2014-10-19 16:20:21

用定点会不会快点?

823032003 发表于 2014-10-19 16:20:43

关键代码放入RAM执行

tianyaxtutianya 发表于 2014-10-19 16:44:00

823032003 发表于 2014-10-19 16:20
用定点会不会快点?

用定点的话,得把所有的数据的先翻倍放大

tianyaxtutianya 发表于 2014-10-19 16:44:38

823032003 发表于 2014-10-19 16:20
关键代码放入RAM执行

这个倒是个好办法,还没有试过将代码放入RAM里面,得好好研究下了

ahuang227 发表于 2014-10-19 19:28:51

28335是浮点的。


这个是个标准长度的尾巴,你能看到这个尾巴说明你的浏览器是正常的。欢迎光临我的淘宝店。

ispex13 发表于 2014-10-19 20:19:06

以上计算绝对花不了0.2ms,提升一下AD转换的效率。

syflash 发表于 2014-10-19 22:09:00

ADC采用一次采集4次产生一次中断的方式可以降低AD的整体采集时间

summarize 发表于 2014-10-20 00:00:54

做什么电源啊?

596142041 发表于 2014-10-20 11:55:04

时间也太长了吧!

wzq3 发表于 2014-10-20 19:39:55

建议AD采用DMA方式,如果不需要数字滤波,AD采样的数据一定要存在内部RAM中。

zhandouji 发表于 2014-10-21 19:42:58

你用的是内部的AD还是外扩的?我们外扩的做APF,一个周期是60us,0.2ms感觉你的算法很复杂啊!

mdd 发表于 2014-10-21 19:49:36

823032003 发表于 2014-10-19 16:20
用定点会不会快点?

到底定点dsp快还是浮点快?

Ticl4 发表于 2014-10-25 09:15:01

tianyaxtutianya 发表于 2014-10-19 16:44
这个倒是个好办法,还没有试过将代码放入RAM里面,得好好研究下了

这样速度应该可以提升几倍,速度应该够了吧

EngKing 发表于 2014-10-26 10:37:50

放到RAM中运行,同时运算中不要有除法

tianyaxtutianya 发表于 2014-10-27 11:53:12

zhandouji 发表于 2014-10-21 19:42
你用的是内部的AD还是外扩的?我们外扩的做APF,一个周期是60us,0.2ms感觉你的算法很复杂啊! ...

算法不复杂,就用了一个PID算法,还有很多错误判断,主要还有4路ADC采样,其他就是一些常规程序了

tianyaxtutianya 发表于 2014-10-27 11:53:57

EngKing 发表于 2014-10-26 10:37
放到RAM中运行,同时运算中不要有除法

除法是不是很占用时间?能否解释下

tianyaxtutianya 发表于 2014-10-27 11:55:05

syflash 发表于 2014-10-19 22:09
ADC采用一次采集4次产生一次中断的方式可以降低AD的整体采集时间

我已经这么做了,但是整个下来还是得几十个US用于采样

tianyaxtutianya 发表于 2014-10-27 11:55:25

summarize 发表于 2014-10-20 00:00
做什么电源啊?

高压发生器

tkloveyang 发表于 2015-9-27 20:39:18

本帖最后由 tkloveyang 于 2015-9-27 20:40 编辑

tianyaxtutianya 发表于 2014-10-27 11:55
我已经这么做了,但是整个下来还是得几十个US用于采样

采样本身是硬件执行的,不会占用cpu的时间啊,是不是采样频率太高,你使能了采样中断,占cpu资源太多了。
看过网上测试报告,28335,计算100次乘法用时好像是14us左右。
页: [1]
查看完整版本: 如何提升DSP28335的程序运行效率