基于Matlab的TMS320LF2407程序快速设计

点击数: 【字体: 收藏 打印文章 查看评论
 


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

步骤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:




在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输出,程序如下:


4 试验结果及结论

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

共3页 您在第2页 首页 上一页 1 2 3 下一页 尾页 跳转到页 本页共有3179个字符
作者:佚名 来源:不详 发布时间:2009年06月24日
观后心情
感动 同情 无聊 愤怒 搞笑 难过 高兴 路过
用户信息中心
联系我们  |  广告合作  |  友情链接  |  网站帮助  |  版权声明  |  企业邮箱  |  管理登录
  Copyright © 2007-2012 China Research and Development Network, All Rights Reserved
举报邮箱:co@chnrd.com    鄂ICP备09003885号