基于Matlab的TMS320LF2407程序快速设计

2011-08-09 14:59:40来源: 互联网

TMS320LF2407是TI公司主推的一种高性能、低价格DSP处理器,其处理速度达到30 MIPS,片内处理集成RAM、Flash及定时器外,还集成了A/D转换器、PWM控制器及CAN总线控制器等模块,特别适合于电机、电源变换等实时要求高的控制系统。但是通常设计DSP程序的方法是,在DSP的集成开发环境CCS中用C语言设计,需要花费大量的时间用来编写和输入程序代码。在Matlab中用图形化的方式设计DSP的程序,能够缩短产品的开发时间。

    1 Embedded Target for T1 C2000 DSP介绍

    目前,新版本的Matlab软件(Matlab7.O)已经集成了TI公司C2000、C5000、C6000系列DSP的开发工具包,可在Matlab/Simulink环境中用图形化的方式进行DSP的设计及仿真验证。并能将设计的图形文件(.mdl)直接转换成C语言程序。其中C2000系列的开发工具是EmbeddedTarget for TI C2000 DSP。该工具包

 
是TI公司与Math—Works公司共同开发的产品,在Matlab/Simulink中嵌入了eXpressDSP工具箱,支持C24x及C28x系列的DSP处理器。在C24x系列DSP工具箱中,包含DSP处理器中的模/数转换(ADC)、CAN发送及接收、PWM控制等模块。用户可以在Matlab中调用这些图形化的功能模块及Simulik中的其他模块建立数字信号处理的模型,并可以对模型进行仿真验证,然后生成TMS320C2000的C语言代码及CCS的工程项目文件,在CCS中经修改、编译后就可以下载到DSP目标板中运行。

    2 ADC转换及FIR滤波处理程序的设计

    以下是用Embedded target for TI C2000工具包设计ADC转换及FIR滤波的步骤。

    步骤1,在新建的Simulink文件(.mdl)中,放入C2000 Target Preferences中的LF2407 eZdsp功能块,用于参数的初始化设置。对话框设置如图1所示。其中DSP定时器的时钟比例因子(Timer Clock Prescaler),可以选择I~128,则相应的定时器采样时间为:
     公式

点击看原图


 

 

    式中Timer Period是DSP的最大时钟计数周期,LF2407是16位定点处理器,所以Timer Period数是216-1。图1中设定的Timer Clock Prescaler数值是2,当LF2407的工作频率(CPU Clock Speed)为40MHz时,由上式计算出的定数器的采样时间是0.003 2 S。由于数据处理需要占用一定的运行时间,所以要通过试验选择适当的定时器采样时间。

       

点击看原图

 

 


    实现A/D转换的功能块是C24x ADC,其参数设置如图2所示。A/D转换通道可以选择模块A、B中的任一个通道,也可以选择多个通道,A/D转换的采样时间设置为64/80 000。

     ADC设计对话框

点击看原图

 

 

    步骤2,设计FIR滤波器。在Simulink的信号处理工具箱(Signal Processing Bloekset)中,将滤波器设计专用工具(FDAToo1)放入文件中,双击图符,弹出图3所示的滤波器设计对话框。

    在图3中,选择滤波器类型为FIR低通滤波器,采样频率为6kHz,低通频率为1kHz,截至频率为2 kHz。先点击对话框中的Design Filter,然后再点击图3中实现模型(Realize Model)图标进入模型实现对话框,选择Over-write generated“filter”block,则在设计框图中生成一个名称为“Filter”的FIR滤波器的功能框图,再将原先放入的FDATool图标删除,将Filter连接到图中,完成的设计如图4所示。

滤波器设计对话框

点击看原图

 

 


    图4中添加的增益模块(Gain)是为了实现数据类型的转换。由于ADC转换输出的是16位整型数据,而滤波器的输入需要双精度浮点数据,因此Gain的数据类型参数(Signal datatypes)设为float(“double”)。Gainl是将浮点数转换为整型数,因此数据类型参数设为uint(16)。图4中添加寄存器(C24x To Memory)模块是为了使设计完整。在生成的C程序中,增益模块Gainl的输出是rth-Gainl,可被其他应用程序调用。

步骤3,将图形文件生成C程序。在图4中,运行Simulation菜单下的Configuration Parameters项,弹出配置对话框,选择其中的Real-Time WorkShop项,点击Build按钮,则将图4的框图转化为TI C2000DSP的C语言代码,并自动调用CCS2软件编译运行该程序。生成的C语言程序包括:中断向量文件vectors.asm、中断服务程序MW_c24xx_csl.C、ADC转换控制testADC.c、主程序TestADC_main.c等。

   3 修改及完善程序

    由Matlab直接生成的程序能够实现ADC转换及数字滤波功能,但是由于程序中使用了许多缺省设置,在运行过程中还存在一些问题。用上述方法生成的程序中,中断处理程序中只对定时器中断进行处理。当由于干扰信号引起其他中断时,会造成DSP停机,因此要在中断向量定义无效中断(_nothing),并在中断响应程序中添加中断服务程序。修改后的程序中,斜体部分是修改的代码。修改程序如下:

    中断向量文件vectors.asm:

    中断向量文件vectors

点击看原图

 


   

点击看原图

 

 

    在ADC转换处理程序中,每次ADC转换结束后没有复位DSP的排序器指针。虽然程序中设定的是只进行一个通道的A/D转换,但结果却是16个通道的循环转换,造成数字滤波器的输人数据不正确,因此程序要作修改,在testadc_c中添加:

    TestADC_B.C24xADC=MMREGS[RESULT0]>>6;/*A/D转换结果右移6位*/
    MMREGS[ArN2TRL2]=MMREGS[ADCTRL2]l0X4242;/*复位排序器指针并清除A/D中断标志*/

    如果需要通过t/o端口输出结果,则可以在testadc_c中定义一个I/o(portl00),然后将FIR滤波后的数据rtb-Gainl输出,程序如下:

    将FIR滤波后的数据rtb

点击看原图

 

 

 


    4 试验结果及结论

    由上述方法设计的程序在TMS3201LF2407A处理器上能正常运行。试验结果证明,采用FIR滤波后,ADC转换的抗干扰能力有了明显的提高。用Matlab快速建立TI DSP模型及直接生成C语言程序的方法,简化了DSP软件的开发。在Embedded target for TI C2000工具箱中还包含其他工具,如PWM控制、CAN总线控制及通用I/O控制等。利用这些工具与Simulink中的其他工具相结合,能够完成复杂功能的DSP程序设计,并且只需进行少量的修改,就可以实现功能正确的C语言程序的设计,节省程序的编写及输入时间。

 

关键字:程序  快速  设计

编辑:eeleader 引用地址:http://www.eeworld.com.cn/gykz/2011/0809/article_7957.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
论坛活动 E手掌握
微信扫一扫加关注
论坛活动 E手掌握
芯片资讯 锐利解读
微信扫一扫加关注
芯片资讯 锐利解读
推荐阅读
全部
程序
快速
设计

小广播

独家专题更多

富士通铁电随机存储器FRAM主题展馆
富士通铁电随机存储器FRAM主题展馆
馆内包含了 纵览FRAM、独立FRAM存储器专区、FRAM内置LSI专区三大部分内容。 
走,跟Molex一起去看《中国电子消费品趋势》!
走,跟Molex一起去看《中国电子消费品趋势》!
 
带你走进LED王国——Microchip LED应用专题
带你走进LED王国——Microchip LED应用专题
 
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2016 EEWORLD.com.cn, Inc. All rights reserved