基于Matlab的TMS320LF2407程序快速设计

基于matlab的tms320lf2407程序快速设计
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。
点击看原图
步骤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语言程序的设计,节省程序的编写及输入时间。
200多个matlab经典教程和matlab论文请查看:matlab教程

选对连接器很重要,应急保供电更迅速
供墨系统的使用注意事项
基于CompactRIO的高级可编程自动控制器
蓝牙耳机续航多久正常?2021强续航蓝牙耳机推荐
苹果全新MacBook型号曝光 发布会将会推出三款便携本
基于Matlab的TMS320LF2407程序快速设计
基于一个能监控文件变化的Python神器
平面拍照已过时,为什么说VR全景拍照是大势所趋?
智能手机推动 2017年软性显示器出货量增长率将达135%
显同电子超清显示LED小间距,遇见青岛海尔智慧生活
一个日本人的反思:日本家电全线溃败的原因所在
广州车展“秀肌肉”:对标特斯拉,极越01凭实力说到做到
Delfast正研发一款定位于中小型企业的电动三轮车 将搭载模块化货运平台
一文看懂喇叭阻抗4欧8欧区别
卢奇骏:决策权衡影响TD-SCDMA市场化进程
测量工作的原则及基本的测量工作
蔡奇:打造北京改革开放新高地
kafka相关命令详解
新型楼宇对讲机的分机各部分的设计与测试研究
协作机器人从概念化产品已成为工业自动化产业中增长最快的领域