matlab生成DSP可执行算法研究.docx
《matlab生成DSP可执行算法研究.docx》由会员分享,可在线阅读,更多相关《matlab生成DSP可执行算法研究.docx(11页珍藏版)》请在冰豆网上搜索。
matlab生成DSP可执行算法研究
matlab生成DSP可执行算法的研究
编写:
徐鹏
利用RTW-EC(Real-Time WorkshopEmbeddedCode)等工具为用户算法自动生成嵌入式代码,这是一种高效、实用的方法,他的核心思想是让工程师把主要精力集中于算法的研究上,把枯燥、困难的代码编写工作留给计算机自动完成,这样可以大大缩短产品的开发周期,降低市场风险。
目前matlab主要支持的处理器有:
TI几乎全系列的DSP、X86架构等处理器,提供几乎全部的驱动,使得开发DSP不需要在CCS中编代码,非常方便做算法。
下面我以2阶倒立摆的LQR(最优化控制)为例子,介绍一下matlab自动生成dsp全部代码、工程的过程:
第一步:
安装CCS v3.3,usb100仿真器驱动,配置CCS等,见附件视频。
第二步:
安装matlab,最好安装2008b及以上版本,这里我用的是matlab2010b。
第三步:
建立simulink模型,我们知道,倒立摆有两个角度,分别为主动臂和从动臂,这两个角度用位置式编码器来采集,而主动臂由一个直流电机驱动,直流电机驱动器输入需要-10伏到+10伏,以控制电机的正转、反转。
点击
打开simulink。
新建一个model。
在simulink库中找到
,选中其中的
然后看右边的框,选择
,添加到model中。
配置
,双击此图标,出现
配置如上,因为我们使用的是Tms320F2812这款DSP。
这是配置模块生成代码的目标dsp的型号,以便生成相应的DSP代码,它本身无连接线,放在model中即可。
下面我们使用DSP的QEP及通用IO来获取我们想要的通道及数据,QEP是DSP中可以计算电机转子转的脉冲数,只要将它取到,除以转一周的总脉冲数,再乘以π,就转换成角度了。
下面我们把SIMULINK中打包好的dsp外设模块拿进来,在simulink库中刚才位置找到
看到有c2812,双击可以看到很多2812的外设,这些都可以直接使用。
我们需要用QEP和数字输出,选择QEP模块和DigitOutput模块,添加到model中。
这些模块需要进行配置一下,具体可以看matlab的help文件,我只介绍所需模块如何配置,如QEP模块,EVA和EVB各有一个,我们使用了两路QEP,设置如下:
这样配置两个QEP和12个IO输出,因为外接的DA是12位的,中间的算法不再赘述,本文主要介绍一种DSP做算法的比较省力的步骤,但首先必须对DSP相关东西熟悉。
最后做出的整体模块如下所示,这时候我们就可以生成代码了。
首先要打开ccs,确定ccs能够连上dsp。
点击model中simulation的ConfigurationParameters,配置Solver
再配置Real-time workshop,看是否如图所示,一般配置好目标期间,这里也相应配置好了。
现在可以生成代码了,点击model中的
,开始生成C代码及DSP工程,这个过程完全是自动的。
生成过程一定要保持dsp与ccs上位机连接,一旦断开或异常就会终止生成。
可以重新进行生成过程。
可以看到matlab主界面生成过程
可以看到生成的project文件夹目录路径。
这时候看到ccs里已经有一个工程文件了,编译一下没有错误。
这样这个工程就可以用了,非常简便,不需要写任何DSP代码,只要编好算法即可,省去了大量麻烦。