搜索
bottom↓
回复: 20

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

[复制链接]

出0入0汤圆

发表于 2014-10-19 15:41:05 | 显示全部楼层 |阅读模式
最近在用DSP28335做控制大功率电源的模块,整个环节需要先ADC采用4路信号,再进行计算输出。计算一次花费了0.2MS时间,这个时间太长了,严重影响了PID的调节效果,如何提升程序运行效率?

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

 楼主| 发表于 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计算

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

出0入0汤圆

发表于 2014-10-19 16:20:21 | 显示全部楼层
用定点会不会快点?

出0入0汤圆

发表于 2014-10-19 16:20:43 | 显示全部楼层
关键代码放入RAM执行

出0入0汤圆

 楼主| 发表于 2014-10-19 16:44:00 | 显示全部楼层
823032003 发表于 2014-10-19 16:20
用定点会不会快点?

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

出0入0汤圆

 楼主| 发表于 2014-10-19 16:44:38 | 显示全部楼层
823032003 发表于 2014-10-19 16:20
关键代码放入RAM执行

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

出0入0汤圆

发表于 2014-10-19 19:28:51 | 显示全部楼层
28335是浮点的。


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

出0入0汤圆

发表于 2014-10-19 20:19:06 | 显示全部楼层
以上计算绝对花不了0.2ms,提升一下AD转换的效率。

出0入0汤圆

发表于 2014-10-19 22:09:00 | 显示全部楼层
ADC采用一次采集4次产生一次中断的方式可以降低AD的整体采集时间

出0入0汤圆

发表于 2014-10-20 00:00:54 来自手机 | 显示全部楼层
做什么电源啊?

出0入0汤圆

发表于 2014-10-20 11:55:04 | 显示全部楼层
时间也太长了吧!

出0入0汤圆

发表于 2014-10-20 19:39:55 | 显示全部楼层
建议AD采用DMA方式,如果不需要数字滤波,AD采样的数据一定要存在内部RAM中。

出0入0汤圆

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

出0入0汤圆

发表于 2014-10-21 19:49:36 | 显示全部楼层
823032003 发表于 2014-10-19 16:20
用定点会不会快点?

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

出0入0汤圆

发表于 2014-10-25 09:15:01 | 显示全部楼层
tianyaxtutianya 发表于 2014-10-19 16:44
这个倒是个好办法,还没有试过将代码放入RAM里面,得好好研究下了

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

出0入0汤圆

发表于 2014-10-26 10:37:50 | 显示全部楼层
放到RAM中运行,同时运算中不要有除法

出0入0汤圆

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

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

出0入0汤圆

 楼主| 发表于 2014-10-27 11:53:57 | 显示全部楼层
EngKing 发表于 2014-10-26 10:37
放到RAM中运行,同时运算中不要有除法

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

出0入0汤圆

 楼主| 发表于 2014-10-27 11:55:05 | 显示全部楼层
syflash 发表于 2014-10-19 22:09
ADC采用一次采集4次产生一次中断的方式可以降低AD的整体采集时间

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

出0入0汤圆

 楼主| 发表于 2014-10-27 11:55:25 | 显示全部楼层

高压发生器

出0入0汤圆

发表于 2015-9-27 20:39:18 | 显示全部楼层
本帖最后由 tkloveyang 于 2015-9-27 20:40 编辑
tianyaxtutianya 发表于 2014-10-27 11:55
我已经这么做了,但是整个下来还是得几十个US用于采样


采样本身是硬件执行的,不会占用cpu的时间啊,是不是采样频率太高,你使能了采样中断,占cpu资源太多了。
看过网上测试报告,28335,计算100次乘法用时好像是14us左右。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-25 08:13

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表