DSP开发入门
的概念最早出现在20世纪60年代,最初指的只是一种数字信号处理技术(Digital Signal Processing),直到20世纪80年代,有些公司陆续设计出适合于数字信号处理技术的处理器,于是DSP也开始成为一种高性能处理器的名称,即数字信号处理器DSP(Digital SignalProcessor)。本文提到的DSP指的就是数字信号处理器,它是在模拟信号变换成数字信号以后进行高速实时处理的专用处理器。
DSP发展历程大致分为三个阶段70年代理论阶段,80年代产品化阶段,90年代飞速发展阶段。在数字信号处理技术发展的初期(20世纪50-60年代),人们只能在上完成数字信号的处理。直到70年代,有人才提出了DSP的理论和算法基础。随着大规模技术的发展,1982年美国德州仪器TI(Texas InstrLlments)公司开发出了第一颗商用DSP芯片TMS32010,标志着实时数字信号处理领域的重大突破,DSP也从概念走向了产品。之后的20几年中,第二代、第三代、第四代、第五代以及目前的第六代DSP芯片都相继推出,芯片的体积越来越小,集成的功能越来越多,存储容量和运算速度也都得到成倍的提高。
经过20多年的发展,DSP芯片得到了突飞猛进的发展,DSP芯片的应用越来越广泛,尤其近几年来,随着DSP芯片产品价格的不断下滑,DSP芯片的应用已经从军事、航空航天领域迅速拓展到民用领域,主要应用有:
信号处理、通信、语音、图形/图像、军事、仪器仪表、自动控制、医疗、家用电器等。目前,对DSP爆炸性需求的时代已经来临,前景十分可观。
DSP与的区别使用DSP和单片机的目的是一样的,就是使硬件软件化。与单片机相比,DSP器件具有较高的集成度,具有更快的CPU,更大容量的。不太严谨的可以说DSP是单片机加上很多外设的集合,与单片机很相似,但功能更强,而且由于把很多外围设备集成在一起,用起来很方便。随着信息化的进程和计算机科学与技术、信号处理理论的迅速发展,需要处理的数据量越来越大,对实时性和精度的要求越来越高,低档单片机已不再能满足要求。近年来,各种集成化的单片DSP的性能得到很大改善,软件和开发工具也越来越多,越来越好,价格却大幅度下滑,从而使得DSP及技术更容易使用,价格也能够为广大用户接受,因此越来越多的单片机用户开始选用DSP来提高产品性能,DSP器件大有取代高档单片机的趋势。
DSP的开发环
一、选择DSP的型号
设计DSP应用系统时,DSP芯片选型是非常重要的一个环节。在DSP系统硬件设计中只有选定了DSP芯片,才能进一步设计其外围电路及系统的其他电路。因此说,DSP芯片的选择应根据应用系统的实际需要而确定,做到既能满足使用要求,又不浪费资源,从而也达到成本最小化的目的。
目前主要DSP芯片厂商有TI公司、AD公司和Motorola公司等。其中TI公司的DSP产品应用最为广泛,TI公司在市场上主要有三大系列产品:(1)面向数字控制、运动控制的TMS320C2OOO系列,主要包括TMS320C24x/F24x,TMS320LC240x/LF240x,TMS320C24xA/LF240xA,TMS320C28xx等。(2)面向低功耗、手持设备、无线终端应用的TMS320C5OOO系列,主要包括TMS320C54x,TMS320C54xx,TMS320C55x等。(3)面向高性能、多功能、复杂应用领域的TMS320C6000系列,主要包括TMS320C62xx、TMS320C64IIII、TMS320C67xx等。
以我做的项目为例,我的项目需求是高频的输出的精确控制,并能实现的并联运行,结合需求我选择了TI公司的TMS320F28l2,它是一款专门面向数字控制系统进行优化的通用可编程微处理器,不仅具有低功耗和代码保密的特点,而且它集成了圾强的数字信号处理能力,又集成了数字控制系统所必需的串行通信接口模块(SCI)、串行外设接口(SPI)模块、事件管理器模块(EVA/B)、e总线模块、多通道缓冲串行口、模数转换模块 (ADC)等外设,其时钟高达 l50M,采用改进的哈佛结构和流水线技术,在一个指令内可以执行几条指令。另外,目前它的价格是每片120元,性价比完全符合我的要求。
二、硬件配直
1.开发板选择好了DSP的型号,但仅仅一片DSP芯片是工作不起来的,我们需要通过设计一些外围器件和它一起搭建一个最小系统(包括外扩内存空间、电源复位系统、各控制信号管脚的连按、口的连接等)。现在很多公司都在做现成的DSP开发板,对于初学者来说,直接选购有相应功能的开发板无疑是最好的选择,选择开发板的主要原则是板子的扩展功能是否满足你的需要。当然如果有能力自己做个开发板,那是比较省钱的。
以我做项目开发的开发板为例,作一简单介绍。开发初级阶段我选择的是北京瑞泰生产的ETEK-2812一B开发板,如右图所示。它具备一些基本的外扩功能,较简单,每块价格300元,可以满足简单的开发。如果需要的功能更多,比如串口通信、CAN总线等,可以选择外扩功能更完善的开发板。我在后期开发时选择的是长沙明伟电子生产的DSP2812开发板,如下图所示。它具备串口、CAN总线接口、以太网接口、USB接口、接口等,外扩功能十分完善,使用非常方便,价格是每块1000元左右。选择开发板可以直接查阅做开发板的公司网站,板子的功能、价格都在网站上有详细说明,选择起来很方便。
2.DSP仿真器选好了开发板,接下来就是选择仿真器,开发板上都有JTAG接口,直接和仿真器相连。这一点同单片机的不同,一般单片机的仿真器中没有DSP,而DSP的仿真器提供IEEE标准的JTAG口对DSP进行仿真调试,所以仿真器必须有仿真对象及目标系统。
目标系统就是你的产品,上面必须有DSP。仿真器提供JTAG同目标系统的DSP相接,通过DSP实现对整个目标系统的调试。DSP仿真器主要有并口和USB口两种。我用的是闻亭的仿真器,一种是井口仿真器EPPXDS510,如左图所示,价格500元左右;一种是USB口仿真器,如下图所示,价格700元左右。一般来说,买个并口的EPP就够了,价格便宜又稳定。
另外,最好选购同一家公司的仿真器和开发坂,这样会省去很多不必要的麻烦,而且价格也会优惠一些。
选择好仿真器,还需要一台计算机,计算机要有井口或者USB口,一般的计算机都能满足要求。仿真口端连接开发板,并口(USB口)端连接计算机的并口(USB口),如下图所示,至此硬件的开发环境就搭建好了。
![]() |
![]() |
三、软件开发
1.开发环境S(o
mposerStudio)是TI公司开发的一个完整的DSP集成开发环境。由于TI的DSP使用非常广泛,使得CCS也就成为使用最为广泛的DSP开发软件之一。现在,所有TI公司的DSP都可以在该环境里进行开发,可实现全空间透明仿真,不占用用户任何资源,软件配有汇编/链接、C编译器、C源码调试器等。不同的系统有不同版本的CCS开发环境,TMS320F28l2的集成开发环境是CCS2000。在购买开发板时都会免费赠送CCS开发软件,另外也可以在TI的网站上免费下载该软件,开发环境的安装使用一般在DSP开发板的使用说明书中有详尽的叙述,在此不做赞述。开发软件的界面如下图所示。
CCS开发软件环境界面图
2.编程语言CCS开发环境支持两种语言:汇编语言和C语言。TI的每个DSP系列都有对应的一套汇编指令,如果采用汇编语言编程,需要熟悉这些指令,难度和效率可想而知。现在TI的工程师在不断改进CCS的C程序优化编译器,目前C优化的效率可达到手工汇编的90%甚至更高。当然有的时候如果计算能力和内存资源是瓶颈,ASM还是有优势,比如G.729编。但是针对一般的应用开发,C语言是最好的选择,只要有一定的C语言的基础,就完全可以进行DSP的开发编程。
应用实例及开发流程
1.实例介绍400Hz的逆变电源的控制部分实现的主要功能有:(1)AD转换,(2)S生成,(3)与显示单片机的串口通信,(4)与其他并联电源的CAN总线通信;(5)捕捉同步信号。妥实现以上这些功能,显然普通的单片机是无法完成的,因此我们选择了专门用作控制的数字信号处理器TMS320F2812。在此仪对TMS320F28l2生成SPWM波的开发过程作详细介绍。
PWM(PulseWidthModulation)控制就是对脉冲的宽度进行的技术,即通过对一系列脉冲的宽度进行调制,来等效地获得所需要波形。
SPWM波形(SinudalPWM)就是脉冲的宽度按正弦规律变化而和正弦波等效的PWM波形,在逆变电路中的应用最为广泛。在此例中SPWM的功能是给三相逆变电路的6个(绝缘栅双极)提供触发脉冲,从而使直流电逆变为400Hz的正弦交流电。
2.开发流程(1)编写软件SPWM的生成主要是应用TMS320F28l2的事件管理器模块(EVA/B),所以编写程序前要做的主要工作就是了解熟悉这一模块的结构和工作原理,至于其他用不到的模块可暂时不作了解。程序编写的第一步就是要对用到的模块的各种寄存器进行设置,第二步就是算法的设计编写。
本文末尾是笔者编写的已经通过编译的一段生成SPWM(正弦脉宽调制波)的主程序。
(2)调试程序编写完程序后,就要在仿真环境下进行调试,先编译再运行,通过示波器可以直接观察DSP引脚上输出的SPWM波形,直到与要求的波形相符为止。
(3)烧写程序在仿真环境下调试好程序后,需要把程序烧写到DSP的片上FLASH存储器中。烧写时必须先安装专门的烧写软件,安装后就可以直接在CCS环境下操作烧写。烧写完成后就可以脱离仿真器,开发板就可以上电独立运行,并和其他的外围电路相连而实现它的功能。
习方法知参考资源一、习方法初学DSP常常会感觉到技术文档太多,无从下手。根据我的自学经历,这时最应该弄明白的就是DSP芯片的内部硬件工作原理,如果有微机原理和单片机基础的话,这应该是很容易掌握的,如果没有这方面的基础,建议先去找一本微机原理的书看,看明白后再来看DSP的原理。另外,DSP的外设模块有很多,这时没有必要都去了解,只是了解你所用到的模块就可以了。
了解了DSP的工作原理之后,就要去看关于软件开发环境的书,包括软件的安装和使用。然后就找几个完整的工程(购买开发板时都会赠送各模块的完整工程)来看,在似懂非懂的大体了解了一个完整工程的创建及结构后,就可以开始分析和你所用到的模块相关的程序。现在有大量现成的例程和算法可以参考,切忌自己闷头摸索,一定要去找相关的程序来参考,这会起到事半功倍的效果。
二、参考资源
1.一定要买几本好的参考资料,比如《TMS320F2812原理与开发》、《电动机的DSP控制——TI公司DSP应用》等。TI公司提供的DSP芯片资料都是英文的,读起来可能会有一些困难,但实在查找不到资料时,一定要去这个里面搜索相关资料。
2.到有关DSP的网站查询资料,比较好的网站有WWW.ti.com、WWW.61ic.com、老古开发网等。
3.到论坛DSP版块发问,比较好的论坛有:合众达论坛、研学论坛、北京瑞泰论坛(www.realtimedsp.com.cn,有问必答)等。
4.可以参加几个DSP开发的QQ群,大家可以相互交流学习。
5.遇到问题时直接找开发板公司的技术支持。
结束语
本人现在公司主要做DSP控制方面的研发工作,并且已经做出一些成果,对于DSP我是一点点自学起来的,以上内容部是在平时的学习研发过程中的一点积累,这只是关键的几个人门知识点,给刚刚接触DSP的朋友一些指点。以我个人的学习经历作参考,感觉只要人了门,学习速度会突飞猛进。
主程序
void main(void)
{
//step1:初始化系统控制寄存
器、、看门狗、时钟等
工nitSysl();
EALLOW;//设置时钟75MHz
SY SCtrlRegs.HI SPCP.
a11=0x0000;
EDIS;
EALLOW;//使能PWM引脚
GPi OMuXRegs.GPAMUX.
all=0x00FF;//EVA PWM1-6引脚,
T1PWM,T2PWM
EDIS ;
DINT;
IER=0x0000;
IFR=0x0000 ;//禁止和清除所
有CPU中断
InitpieCtrl();//始化Pie
控制寄存器位默认状态
InitPieVectTable();//2始
化PIE中断向量表vector table;
//step2:设置EVA模块
EvaRegs.T1PR=(int)(TC/
2);//6194个计数周期,即0X1832.
(TC为一全局函数)
EvaRegs.TICNT=0X0000;
EvaRegs.CMPR1=(int)(TC/
2);
EvaRegs.CMPR2=(int)(TC/
2);
EvaRegs.CMPR3=(int)(TC/
2);
E V a R e g s.A C T R A.
ali=0x0666;//1,3,5高有效。2,
4,6低有效
E v a R e g s.D B T C O N A.
alI=0XOFF8;//死区时间1.6微秒
E v a R e g S.C 0 M C O N A.
alI=0XAA00;//使能比较,下溢重载
E V a R e g s.T 1 C O N.
all=0X0842;//连续增减计数模式
//step3:设置中断
E v a R e g s.E V A I F R A.
a11=0XFFFF:
E v a R e g s.E V A I F R B.
a11=0XFFFF:
E V a R e g s。E V A I F R C.
alI=0XFFFF;//清EVA所有中断标
志住
E V a R e g s.E V A I M R A.
all=0X0200;//使能T1定时器下溢
中断
E V a R e g s.E V A I M R B.
a11=0X0000 ;
E V a R e g s.E V A I M R C.
a11=OX0000;
EALLOW;//更新中断向量
pievectTable.T1UFINT
=&TIUFINT_IS;
EDIS;
p i e C t r 1.PIEI E R 2.
alI=M_INT6j//开2.6级中断,即
T1定时器下溢中断
IERㄧ=M_INT2 ;//开总中断
EINT;
ERTM;
for(;;);
}
- 上一篇:学校路由器的维护与管理
- 下一篇:小信号平方律检波器电路原理介绍