DSP学习心得

时间:2019-05-12 11:57:07下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《DSP学习心得》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《DSP学习心得》。

第一篇:DSP学习心得

数字信号处理—DSP课程学习的认识

今年学习了DSP这门课程后,有了一些自己的认识和见解,并且体会到了它强大的功能和作用,它不但在高端的技术领域有很重要的地位,如通信、雷达、声纳、语音合成和识别、图像处理、高速控制等;而且在生活中有它不小的作用,如,影视、仪器仪表、医疗设备、家用电器等众多领域。

但是,由于DSP技术发展很快,生产DSP芯片的厂家又多,这既是它的优点同时又是缺点,因为这样会导致产品更新换代的周期越来越短,还有,每一种芯片,都有其独特的硬件结构和一套专门的指令系统与开发工具,这更加的带来了学习DSP技术的困难。在我自己的学习体系里,有自己的一点经验可以用来辅助的学习这门课程。古时候的一个习语说的是“窥一斑而知全豹”这个同时可以用来指导学习DSP,尽管它的更新换代很快,但也只是为了完善它而更好用和借助其它的技术为它添加一些别的功能而使其更强大,其实质的理论还没有变话,所以,我们可以就其某一个芯片的知识来指导其它的芯片的学习和利用。这里,以TMS320系列DSP芯片为例来进行知识的梳理。

x(t)→抗混叠滤波器→A/D→数字信号处理器→D/A→低通滤波器→y(t)

数字信号处理系统简化框图

这个作为基本的理论模型,然后开始主要内容:1.1,TMS320系列DSP芯片的概述﹑分类及应用、平台;1.2,主要特性有①CPU,②存储器,③指令系统,④在片外围电路,⑤电源,⑥在片仿真接口,⑦速度、组成框图;1.3,总线结构;

1.4,存储器空间分配、存储器(程序存储器、数据存储器);1.5,中央处理单元中,算术逻辑运算单元①ALU的输入,②ALU的输出,③溢出处理,④进位位,⑤双16位算术运算,累加器A和B(保存累加器的内容、累加器移位和循环移位、专用指令),桶形移位器乘法器/加法器单元,比较、选择和存储单元,指数编码器,CPU状态和控制寄存器;1.6,数据寻址方式①立即寻址,②绝对寻址,③累加器寻址,④直接寻址,⑤间接寻址;⑥存储器映像寄存器寻址,⑦堆栈寻址;1.7程序存储器地址生成方式,程序计数器,分支转移,调用与返回,条件操作,重复操作(重复执行单条指令、程序块重复操作),复位操作,中断(中断类型、中断标志寄存器和中断屏蔽寄存器、中断处理过程),省电方式;

1.8,流水线①流水线操作,②延迟分支转移,③条件执行,④双寻址存储器与流水线,⑤单寻址存储器与流水线,⑥流水线冲突和插入等待周期(流水线冲突、等待周期表);1.9,在片围电路①并行I/O口及通用I/O引脚,②定时器,③时钟发生器(硬件配置的PLL软件可编程PLL),④主机接口;1.10,串行口;串行口概述(标准串行口、缓冲串行口、时分多路串行口、多通道缓冲串行口);

1.11,DMA控制器①DMA控制器的基本特征,②子地址寻址方式,③DMA通道优先级和使能控制寄存器,④DMA通道现场寄存器,⑤DMA编程举例;1.12,外部总线①外部总线接口,②外部总线操作的优先级别,③等待状态发生器,④分区切换逻辑,⑤外部总线接口定时器(存储器寻址定时图、I/O寻址定时图);⑥复位和IDLE3省电工作方式(外部总线复位定时图、“唤醒”IDLE3省电方式的定时图);1.13,TMS320C54x引脚信号说明。

第二篇:dsp学习心得

一.我是已经从事DSP开发有几年了,看到许多朋友对DSP的开发非常感兴取,我结合这几年对DSP的开发写一写自己的感受,一家之言,欢迎指教。我上研究生的第一天起根据老板的安排就开始接触DSP,那时DSP开发在国内高校刚刚开始,一台DSP开发器接近一万还是ISA总线的,我从206开始240、2407A都作过产品,对5402、2812、5471在产品方案规划制定和论证时也研究过。由于方向所限对6X、8X系列没有接触。我发现在国内无论在公司或高校许多地方为了加快开发周期往往把一个产品开发分为硬件和软件两个相对独立部分,由不同的人完成。这在具有一定技术和管理基础的公司,由总设计师统一规划协调,分任务并行完成的情况下是可行的,也是符合现代产品开发规律的。但是在高校人员的流动很大,研究生的有效科研时间很短、基础差(许多研究生起步时对电熔、电阻、三极管的分类和选型都很困难,我也是这样过来的)更不用说系统规划设计了,况且许多老板自己也不太懂,师兄有自己的任务,他们搞明白时也毕业了。在许多高校做DSP就是找一个算法加到自己的主程序里,在板子上跑一下,基本达到效果就可以了,至于可靠性是次要的,产业化无从谈起,这已经算不错的了。其实我觉得一个系统的完成,系统的规划是最重要的,在规划时对硬件设计的知识和认识是决定性的,它可以让你知道什么是可行的,什么是不可行的,当你同时具有软件设计能力时,就可以合理的分配系统功能,完成使用VHDL进行系统行为描述-―系统功能划分―― 系统子结构设计这样的自顶向下的设计规划流程,成为系统设计专家、项目经理,否则只是硬件工程师、软件工程师。无论作51、196、还是DSP都是这样。下面分别谈谈我对硬件和软件设计的感受硬件设计是系统设计的关键,国内和国外产品的差距往往是硬件设计水平高低决定的,任何软件设计思想没有可靠的物理载体都是空中楼阁,纸上谈兵。学校的研究生很多都想避开硬件设计,对于一个全新的设计与其说不屑不如说不敢。试想一下烧几个片子的压力要比跑飞几段程序的压力大的多,尤其是功率器件,一旦烧掉,弄不好火光冲天,人的自信都没了。况且改一次板周期长,经费高,还不知行不行。其实在国外实力一般的公司也是尽量避免硬件的更新设计,产品一旦定型往往通过软件升级,这是公司的发展策略,对个人而言物以希为贵,培养一个硬件设计师往往要比软件设计师时间长花费多。在设计dsp硬件时,开始设计最小系统板,系统按功能分板设计调试,注意分板电路的稳定性可能不如整板电路,要多加入抗干扰环节,分板间的引线包括电源线地线要短,尽量在10公分以内,实在不行加入光耦隔离、采用隔离电源。切记电源线、地线的干扰远比信号干扰对系统的危害大得多,又常常被人忽视。电路板工作正常的先决条件就是电源正常!当分板电路正常后再更居情况设计整板电路。在调试时发现的问题一定要找到原因解决,即使是飞线,割线,不要寄希望于下一板改了再看,除非原理性错误。每一个功能环节多准备几套方案。DSP的选型要根据系统功能而定,2000是一个功能比较全的控制器,但运算性能相对低,但目前大部分控制类、家电类包括中低层次的工业总线通信产品足够了,281X不错但太贵,而且开发技术不成熟。54XX更像一个协处理器,其实高端产品5471就很好,功能完*,但BGA封装对产品的开发有一定难度。如果没有从事过嵌入式系统开发的朋友其实可以从51看起,许多思想是共通的,51很经典没有哪一款微处理器像51那样使用持久和普遍。在硬件设计时更多的精力放在外围电路设计上,外围电路设计的灵活性要比DSP本身高得多,难度大得多。建议多考虑CPLD。软件设计上,着眼点不要仅局限于某种算法和控制策略,而是软件系统框架的制定,即操作系统的选择和实现,算法和控制策略只是其中技巧性很强的子程序和子程序间参数相互关系,建议设计软件时能具有操作系统、数据结构和编译原理方面的知识,特别是使用C。对DSP的内部硬件结构一定要掌握,特别是中断结构和流程、流水线操作,不然飞都不知道怎么飞的。在语言选择上我当时是这么给自己规定的先编20个左右的汇编程序,每个代码量超过4K,使用语句范围覆盖全部语句的60%-70%,在此基础上使用C。现在发现用C构建程序的主体框架(操作系统)比较快而其不容易出错,(我现在正在用ASM根据UCOSII的思想重写自己的操作系统)但对系统实时性影响比较大的运算算法一般采用MATLAB――C――ASM的办法仿真调试优化,这里的优化不单单是利用优化器优化,而是根据数据的特点改变运算方法,以除法为例C里的/号其实掩盖了许多技巧,当除数为常数时就可以放大倒数移位相乘移位的办法进行,精度高速度快。这些办法只有掌握了ASM语言并用ASM语言思考才会熟练应用。另外我想告诉一些作算法特别是控制算法的朋友,千万不要随意评判一个算法的优劣,在程序中程序和代码优化的程度往往影响了控制效果好坏,而不是算法本身的思想。其实在实际中往往PID甚至PI、PD就够了,神经元、模糊、小波适用于研究和写论文,模糊在实际中用的多一点,主要是小日本用的比较成熟,我再恨日本人,这点也服气,小日本就是滑,许多物理现象搞不透,就用这法,还管用,题外话。最后我想说的是,当我们面对市场要求时,产品往往考虑的是可靠性、性能、价格而不是你用的什么芯片,在满足性能的基础上结构越简单就越可靠,芯片越通用价格就越低,能用51就不用196,能用2407就不用2812,除非把芯片本身作买点利用高成本赢取高利润。无论2000还是5000、6000系列都有市场前景,关键是要做深做透获取知识的方法、处理项目的能力是相通的,具体的说就是不要把目光盯在做硬件还是做软件上,用ASM还是C,要勤动手打好基础,提高自己对系统总体设计的能力,从系统的眼光看问题。为什么都是做DSP的有的毕业拿3000,有的5000、8000,除了运气和关系外,重要的是你对事物的认识深度和高度。我一直都记住这句话:有前途的人做什么都有前途,没前途的人做什么都没前途。二.与其说是钻在里面,毕业设计是搞240,在老师的压力做出了一点东西,这期间主要是对DSP的各种基础知识的熟悉与理解,对DSP的真正深入是在公司工作以后。当初进公司,因为正有一个项目需要用5410要我接手。说实话,在学校期间我5000的书都没有看过一眼,可没办法,只能靠自己了。不过好的是我2000DSP的基础很好。接过项目后,我第一个星期就全部看的是5000的指令,DSP的结构倒没怎么看,因为项目硬件已成型,主要是算法。这样,花了一个星期熟悉指令与项目相关的程序,第二个星期也就开始编程了。半个月以后我对5410也就用很熟了的,当然主要还是讲在算法方面。这个项目太概做了四个月吧,系统程序是我编写的,主要有如64位加减乘除乘方开方、及时域方面的一些算法。现在又做一个控制系统,用2407开发的,硬件主要有直交变频,并把2407的所有外设资源全部用到了。现在我可以这样自夸一句吧:TI的2000系列与5000系列的我都熟悉,要我去以此做个系统,没问题。上面是把我搞DSP的经历简单说了一下的吧,在这里我想对正在学及想学DSP的难兄们说一句的是,DSP并不是很难。当然,这个前提是你的基础要好,我单片机,接口都还行,当初就是从单片机改成DSP的。有了单片机的基础再去学2000第列的DSP(下面的DSP单指2000系列,另有说明为止),你就可以把DSP看成一个super microcontroller了。相比之下,DSP除了比单片机多了更丰的外设接口(SPI,SCI、CAN、PWM、CAP、QEP等等),他就是一块单片机,只不过在单片机来说你要另加芯片的工作,DSP全部把它做在一块芯片去了,我现在看DSP也真就这么简单。前面有人提到DSP主要是做算法,这句话有一定的片面性: TI有很多系列的DSP,现在主流的DSP主要为2000系列、3000系列、4000系列、5000系列、6000系列。除了2000与5000系列是定点DSP外,其余的均为浮点系列。TI的2000系列主要长处是在用于控制系统,因为它的资源非常丰富,前面提到,在控制系统中用到的一些外设2000系列均在片内集成了。TI的5000系列主要长处是用于数字信号的算法处理,这里所讲算法处理主要是指在数字信号处理时的一些算法,如FIR、IIR、FFT等等。5000系列的DSP的速度比2000快,2407最快只能到40M,2800系列除外,5410的DSP可以达到160M,如现在我们主要用来做数字信号方面的处理以及简单的静态图像处理等这样一些在资源需要处于中等的一些算法。TI的6000系列主要是用在实时图像处理,这个就更则重于算法处理。一般的硬件很少自制,我们是用TI的DSK板再加上自主板相结合。三.使用C/C++语言编写基于DSP程序的注意事项

1、不影响执行速度的情况下,可以使用c或c/c++语言提供的函数库,也可以自己设计函数,这样更易于使用“裁缝师”优化处理,例如:进行绝对值运算,可以调用fabs()或abs()函数,也可以使用if...else...判断语句来替代。

2、要非常谨慎地使用局部变量,根据自己项目开发的需要,应尽可能多地使用全局变量和静态变量。

3、一定要非常重视中断向量表的问题,很多朋友对中断向量表的调用方式不清楚。其实中断向量表中的中断名是任意取定的,dsp是不认名字的,它只认地址!中断向量表要重新定位。这一点很重要。

4、要明确dsp软件开发的第一步是对可用存储空间的分析,存储空间分配好坏关系到一个dsp程序员的水平。对于dsp,我们有两种名称的存储空间,一种是物理空间,另一种是映射空间。物理空间是dsp上可以存放数据和程序的实际空间(包括外部存储器),我们的数据和程序最终放到物理空间上,但我们并不能直接访问它们。我们要访问物理空间,必须借助于映射空间才行!但是映射空间本身是个“虚”空间,是个不存在的空间。所以,往往是映射空间远远大于实际的物理空间,有些映射空间,如io映射空间,它本身还代表了一种接口。只有那些物理空间映射到的映射空间才是我们真正可访问(读或写)的存储空间。

5、尽可能地减少除法运算,而尽可能多地使用乘法和加法运算代替。

6、如果ti公司或第三方软件合作商提供了dsplib或其他的合法子程序库供调用,应尽可能地调用使用。这些子程序均使用用汇编写成,更为重要之处是通过了tms320算法标准测试。而且,常用的数字信号处理算法均有包括!

7、尽可能地采用内联函数!而不用一般的函数!可以提高代码的集成度。

8、编程风格力求简炼!尽可能用c语言而不用c++语言。我个人感到虽然c++终代码长了一些,好象对执行速度没有影响。

9、因为在c5000中double型和float型均占有2个字,所以都可以使用,而且,可以直接将int型赋给float型或double型,但,尽可能地多使用int数据类型代替!这一点需要注意!

10、程序最后至少要加上一个空行,编译器当这个空行为结尾提示符。

11、大胆使用位运算符,非常好用!

12、2003年6月份从ti的网站上下到了关于tms320c67x系列dsp的快速算法库,于是,tms320c5000和c6000全系列的快速算法库都问世了,这些算法库均可供c/c++语言直接调用,优化程度100%,实际编程时尽可能地使用

第三篇:DSP实验学习心得

DSP实验学习心得

论DSP发展前景

DSP 即为数字信号处理器(Digital Signal Processing),是在模拟信号变换成数 字信号以后进行高速实时处理的专用处理器。它的工作原理是将现实世界的模拟信号转换 成数字信号,再用数学方法处理此信号,得到相应的结果。自从数字信号处理器(Digital Signal Processor)问世以来,由于它具有高速、灵活、可编程、低功耗和便于接口等特 点,已在图形、图像处理,语音、语言处理,通用信号处理,测量分析,通信等领域发挥 越来越重要的作用。随着成本的降低,控制界已对此产生浓厚兴趣,已在不少场合得到成 功应用。DSP 数字信号处理器 DSP 芯片采用了数据总线和程序总线分离的哈佛结构及改 进的哈佛结构,较传统处理器的冯?诺依曼结构具有更高的指令执行速度。其处理速度比最 快的 CPU 快 10-50 倍。在当今数字化时代背景下,DSP 已成为通信、计算机、消费类电 子产品等领域的基础器件,被誉为信息社会革命的“旗手”。

最初的 DSP 器件只是被设计成用以完成复杂数字信号处理的算法。DSP 器件 紧随着数字信号理论的发展而不断发展。DSP发展最快,现在的 DSP 属于第五代产品,它与第四代相比,系统集成度更高,将 DSP 芯核及外围组件综合集成在单一芯片上。这种集成度极高的 DSP 芯片不仅在通信、计算机领域大显身手,而且逐渐渗透 到人们日常消费领域,前景十分可观。近年来,随着通信技术的飞速发展,DSP已经成为信号与信息处理领域里一门十分重要的新兴学科,它代表着当今无线系统的主流发展方向。现在,通信领域中许多产品 都与 DSP 密切联系,例如,Modem、数据加密、扩频通信、可视电话等。而寻找 DSP 芯片来实现算法最开始的目标是在可以接受的时间内对算法做仿真,随后是将波形存储起 来,然后再加以处理。

在短短的十多年 时间,DSP芯片已经在信号处理、通信、雷达等许多领域得到广泛的应用。目前, DSP 芯片的价格也越来越低,性能价格比日益提高,具有巨大的应用潜力。DSP 芯片的应用主要有:(1)

信号处理--如,数字滤波、自适应滤波、快速傅里叶变换、相关运算、频谱分析、卷积等。(2)通信--如,调制解调器、自适应均衡、数据加密、数据压缩、回坡抵消、多路复用、传真、扩频通信、纠错编码、波形产生等。(3)语音--如语音编码、语音合成、语音识别、语音增强、说话人辨认、说话人确认、语音邮件、语音储存等。(4)图像/图形--如二维和三维图形处理、图像压缩与传输、图像增强、动画、机器人视觉等。(5)军事--如保密通信、雷达处理、声纳处理、导航等。

(6)仪器仪表--如频谱分析、函数发生、锁相环、地震处理等。(7)

自动控制--如引擎控制、深空、自动驾驶、机器人控制、磁盘控制。(8)

医疗--如助听、超声设备、诊断工具、病人监护等。(9)家用电器--如高保真音响、音乐合成、音调控制、玩具与游戏、数字 电话/电视等 DSP 的发展前景 DSP 的功能越来越强,应用越来越广,达到甚至超过了微控制器的功能,比 微控制器做得更好而且价格更便宜,许多家电用第二代 DSP 来控制大功率电机就 是一个很好的例子。汽车、个人通信装置、家用电器以及数以百万计的工厂使用 DSP 系统。数码相机、IP 电话和手持电子设备的热销带来了对 DSP 芯片的巨大需 求。而手机、PDA、MP3 播放器以及手提电脑等则是设备个性化的典型代表,这 些设备的发展水平取决于 DSP 的发展。新的形势下,DSP 面临的要求是处理速度 更高,功能更多更全,功耗更低,存储器用量更少。

DSP 的技术发展将会有以下 一些走势:(1)系统级集成 DSP 是潮流。小 DSP 芯片尺寸始终是 DSP 的技术发展方向。当前的 DSP 尺寸小、功耗低、性能高。各 DSP 厂商纷纷采用新工艺,改进 DSP 芯核,并将几个 DSP 芯核、MPU 芯核、专用处理单元、外围电路单元、存储单元 统统集成在一个芯片上,成为 DSP 系统级集成电路。(2)追求更高的运算速度和进一步降低功耗和几何尺寸。由于电子设备的 个人化和客户化趋势,DSP 必须追求更高更快的运算速度,才能跟上电子设备的 更新步伐。同时由于 DSP 的应用范围已扩大到人们工作生活的各个领域,特别是 便携式手持产品对于低功耗和尺寸的要求很高,所以

DSP 有待于进一步降低功 耗。按照 CMOS 的发展趋势,依靠新工艺改进芯片结构,DSP 运算速度的提高和 功耗尺寸的降低是完全可能的。

(3)DSP 的内核结构进一步改善。DSP 的结构主要是针对应用,并根据应用 优化 DSP 设计以极大改进产品的性能。多通道结构和单指令多重数据、超长指令 字结构、超标量结构、超流水结构、多处理、多线程及可并行扩展的超级哈佛结 构(SHARC)在新的高性能处理器中将占据主导地位。(4)DSP 嵌入式系统。DSP 嵌入式系统是 DSP 系统嵌入到应用电子系统中 的一种通用系统。这种系统既具有 DSP 器件在数据处理方面的优势,又具有应用 目标所需要的技术特征。在许多嵌入式应用领域,既需要在数据处理方面具有独 特优势的 DSP,也需要在智能控制方面技高一筹的微处理器(MCU)。因此,将 DSP 与 MCU 融合在一起的双核平台,将成为 DSP 技术发展的一种新潮流。DSP 的发展非常迅速,而销售价格逐年降低目前 DSP 的结构、总线、资源和 接口技术都趋于标准化,尤其接口的标准化进展更快。这给从事系统设计的工程 技术人员带来很大机遇,采用先进的 DSP 将会使开发的产品具有更强的市场竞争 力。

近几年来,DSP芯片、应用软件和系统的发展非常迅速,每年增长速度高达40%。其市场驱动力主要是因特网、无线通信、硬盘驱动器、可视电话和会议电视以及其它消费 类电子产品。也就是说,DSP产业的发展依赖于通信技术和通信市场。随着新的通信体 制、传输方式和多媒体智能终端的迅速发展,其算法、标准和规程都需要在实践中不断发 展、改进和优化。DSP编程的灵活性和不断增强的运算能力,同时又将使通信技术向更 高层次迈进。这对通信领域的广大科技人员是一个机遇。抓住这个机遇,我们将大有作为。

通过这几次实验,我初步的对dsp有了一定了解。虽然是在老师们的指导下完成实验要求的,但是我想我还是收获蛮多的。希望在以后的学习生活中能对dsp有更多的学习和研究。

第四篇:DSP学习心得笔记

DSP学习心得笔记

----------------白建成.baijc.icekoor 建立新工程过程中: 问题1:

“GPIO_Study.c”, line 61: fatal error: could not open source file “DSP280x_Device.h” 1 fatal error detected in the compilation of “GPIO_Study.c”.解决方法:

因为project build optionscompilerpreprocessor中,要包含的头文件的地址没有加进去,你可以找到头文件的地址,然后加进去。

问题2:

undefined

first referenced symbol

in file---------

----------------_c_int00

D:DSP studytest3DebugDSP280x_CodeStartBranch.obj FS$$MPY

D:DSP studytest3DebugDSP280x_CpuTimers.obj FS$$TOL

D:DSP studytest3DebugDSP280x_CpuTimers.obj >>

error: symbol referencing errors'./Debug/GPIO_Study.out' not built 解决办法都是下面:

这个问题是因为没有加在库文件,请在project build optionslinkerlibraries中加入rts2800.lib。

问题3:

>> warning: creating.stack section with default size of 400(hex)words.Use

-stack option to change the default size.>>

error: can't allocate.stack, size 00000400(page 1)in RAMM1(avail:

00000380)>>

error: errors in input-./Debug/GPIO_Study.out not built 解决办法: 这个问题是关于堆栈存储大小的问题,他是说,创建堆栈段使用与设置400个字,并建议在“堆栈操作”中改变这个与设置。这时,需要进行如下修改就可通过:project build optionsLinkerbasic,在Stack Size(-stack):填入800或者其他小于1024的数值。

调试程序:

在编译完成之后,要来下载程序并进行功能调试。FileLoad Program,在工程文件夹下面的Debug文件夹下,选中**.out文件,点击打开,便开始下载程序了。将**.out文件下载到目标板上2812的RAM中。

注意,这里是调试,所以将程序下载到RAM。等到最后您要固化程序的时候,就得下载到FLASH了,因为断电之后,RAM里面所有的数据都会消失。

(Run和Animate的区别,Run是如果遇到断点的话它就停下来了。而Animate就算遇到断点时先停止DSP内核,刷新窗口,然后接着继续启动运行,常用来连续刷新变量窗口和生成graph图形等)——知识储备。

添加断点:

加上断点的方法很简单,只要在该行代码前双击就行。双击之后,这行代码前面会出现一个红色圆块。另外一种添加断点的方法,就是在刚才的编译工具栏上,点一下那个小手图形的按钮,前提是你要把光标移动到想要设置断点的哪一行上。

使用watch window:

Watch window的作用是来观察程序运行过程中的各个变量的值。调用watch window的方法是点击菜单栏的“View ”,“watch window”,这时watch window就会显示在CCS下方的信息区域;

选中所要观察的变量,然后右键,在右键菜单中选择add to watch window。

调试代码观察:

我们在调试程序的时候经常想让程序从Main函数开使运行,点DebugGo main。既能看到源文件中代码的执行情况,又能看到汇编指令的执行情况ViewMixed Source/Asm;

关于F2812中用C语言来实现中断的说明

1.首先在.cmd中定位系统中断表: MEMORY { PAGE 0 :

......................................PAGE 1 :

......................................PIE_VECT

: origin = 0x000D00, length = 0x000100......................................} SECTIONS {...................................PieVectTable

: > PIE_VECT,PAGE = 1.....................................} 2.在C中制定该中断的结构体:

#pragma DATA_SECTION(PieVectTable,“PieVectTable”);struct PIE_VECT_TABLE PieVectTable;(在DSP28_GlobalVariableDefs.C中初始化)3.用一组常数(按照中断向量的顺序)初始化该名字为PIE_VECT_TABLE的表: typedef interrupt void(*PINT)(void);这里有些一问,一下应该为函数名??

// Define Vector Table: struct PIE_VECT_TABLE {

// Reset is never fetched from this table.// It will always be fetched from 0x3FFFC0 in either // boot ROM or XINTF Zone 7 depending on the state of // the XMP/MC input signal.On the F2810 it is always // fetched from boot ROM.PINT

PIE1_RESERVED;

PINT

PIE2_RESERVED;

PINT

PIE3_RESERVED;

PINT

PIE4_RESERVED;

PINT

PIE5_RESERVED;

PINT

PIE6_RESERVED;

PINT

PIE7_RESERVED;

PINT

PIE8_RESERVED;

PINT

PIE9_RESERVED;

PINT

PIE10_RESERVED;

PINT

PIE11_RESERVED;

PINT

PIE12_RESERVED;

PINT

PIE13_RESERVED;

// Non-Peripheral Interrupts:

PINT

XINT13;

// XINT13

PINT

TINT2;

// CPU-Timer2

PINT

DATALOG;

// Datalogging interrupt

PINT

RTOSINT;

// RTOS interrupt

PINT

EMUINT;

// Emulation interrupt

PINT

XNMI;

// Non-maskable interrupt

PINT

ILLEGAL;

// Illegal operation TRAP

PINT

USER0;

// User Defined trap 0

PINT

USER1;

// User Defined trap 1

PINT

USER2;

// User Defined trap 2

PINT

USER3;

// User Defined trap 3

PINT

USER4;

// User Defined trap 4

PINT

USER5;

// User Defined trap 5

PINT

USER6;

// User Defined trap 6

PINT

USER7;

// User Defined trap 7

PINT

USER8;

// User Defined trap 8

PINT

USER9;

// User Defined trap 9

PINT

USER10;

// User Defined trap 10

PINT

USER11;

// User Defined trap 11

// Group 1 PIE Peripheral Vectors:

PINT

PDPINTA;

// EV-A

PINT

PDPINTB;

// EV-B

PINT

rsvd1_3;

PINT

XINT1;

PINT

XINT2;

PINT

ADCINT;

// ADC

PINT

TINT0;

// Timer 0

PINT

WAKEINT;

// WD

..........................// Group 12 PIE Peripheral Vectors:

PINT

rsvd12_1;

PINT

rsvd12_2;

PINT

rsvd12_3;

PINT

rsvd12_4;

PINT

rsvd12_5;

PINT

rsvd12_6;

PINT

rsvd12_7;

PINT

rsvd12_8;};然后在使我们在.cmd文件中定义的表有以上属性: extern struct PIE_VECT_TABLE PieVectTable;(在.h文件中)4.初始化该表(在.c文件中)使之能够为主程序所使用: const struct PIE_VECT_TABLE PieVectTableInit = {

PIE_RESERVED, // Reserved space

PIE_RESERVED,PIE_RESERVED,PIE_RESERVED,PIE_RESERVED,PIE_RESERVED,PIE_RESERVED,PIE_RESERVED,PIE_RESERVED,PIE_RESERVED,PIE_RESERVED,PIE_RESERVED,PIE_RESERVED,// Non-Peripheral Interrupts

INT13_ISR,// XINT13 or CPU-Timer 1

INT14_ISR,// CPU-Timer2

DATALOG_ISR,// Datalogging interrupt

RTOSINT_ISR,// RTOS interrupt

EMUINT_ISR,// Emulation interrupt

NMI_ISR,// Non-maskable interrupt

ILLEGAL_ISR,// Illegal operation TRAP

USER0_ISR,// User Defined trap 0

USER1_ISR,// User Defined trap 1

USER2_ISR,// User Defined trap 2

USER3_ISR,// User Defined trap 3

USER4_ISR,// User Defined trap 4

USER5_ISR,// User Defined trap 5

USER6_ISR,// User Defined trap 6

USER7_ISR,// User Defined trap 7

USER8_ISR,// User Defined trap 8

USER9_ISR,// User Defined trap 9

USER10_ISR,// User Defined trap 10

USER11_ISR,// User Defined trap 11

// Group 1 PIE Vectors

PDPINTA_ISR,// EV-A

PDPINTB_ISR,// EV-B

rsvd_ISR,XINT1_ISR,XINT2_ISR,ADCINT_ISR,// ADC

TINT0_ISR,// Timer 0

WAKEINT_ISR,// WD..........................// Group 12 E Vectors

rsvd_ISR,rsvd_ISR,rsvd_ISR,rsvd_ISR,rsvd_ISR,rsvd_ISR,rsvd_ISR,rsvd_ISR,};//-------------// InitPieVectTable:

//-------------// This function initializes the PIE vector table to a known state.// This function must be executed after boot time.//

void InitPieVectTable(void){ int16 i;Uint32 *Source =(void *)&PieVectTableInit;Uint32 *Dest =(void *)&PieVectTable;

EALLOW;

for(i=0;i < 128;i++)*Dest++ = *Source++;EDIS;

// Enable the PIE Vector Table PieCtrl.PIECRTL.bit.ENPIE = 1;

} 5.中断服务程序:

让以上的数值指向你所要的服务程序,例如: PieVectTable.TINT2 = &ISRTimer2;那么,ISRTimer2也就成了中断服务程序,×××切记:一定要在主程序的开始先声明该程序: interrupt void ISRTimer2(void);

..........................然后按照您的需要编制该程序: interrupt void ISRTimer2(void){ CpuTimer2.InterruptCount++;}

编程中遇到的问题:

1、line 257: warning: last line of file ends without a newline; 解决方法:

点击出现的问题条,看光标定位在哪里,然后一点点删除,直到把编程的文字删除,最后把删除的写出来,回车就行了,因为回车的格式要在编辑状态哈哈!

28016的定时器笔记

学过2812的人会知道,2812的定时器和28016的定时器的寄存器很不一样。但是从功能上将差不多。

关于28016定时器的时钟的讨论;

定时器的时钟是由SYSCLKOUT经过TBCTL中的CLKDIV和HSPCLKDIV进行配置;

主要说明,我们应该记得SYSCLKOUT和HSPCLK之间还可以分频,但是在这里这个寄存器不影响。

关于28016定时器的时钟同步的讨论;

如果我们想使每个PWM模块具有同步时钟,我们可以通过软件强制各个模块之间同步,设定步骤如下:

EPwm1Regs.TBCTL.bit.SYNCOSEL = 0 // Pass through

EPwm2Regs.TBCTL.bit.SYNCOSEL = 0;// Pass through

EPwm3Regs.TBCTL.bit.SYNCOSEL = 0;// Pass through

EPwm1Regs.TBCTL.bit.SWFSYNC = 1;

EPwm2Regs.TBCTL.bit.SWFSYNC = 1;

EPwm3Regs.TBCTL.bit.SWFSYNC = 1;以上程序是设定PWM1/2/3同步,我们由于我们只采用向上计数,所以不需要设定计数方向位。

接下来如果我们想PWM1与PWM2输出相位不一样,保持某个相位差,我们可以通过寄存器设定;

EPwm1Regs.TBCTL.bit.PHSEN = TB_ENABLE;

EPwm2Regs.TBCTL.bit.PHSEN = TB_ENABLE;

EPwm3Regs.TBCTL.bit.PHSEN = TB_ENABLE;

EPwm1Regs.TBPHS.half.TBPHS = 0;

EPwm2Regs.TBPHS.half.TBPHS = 250;

EPwm3Regs.TBPHS.half.TBPHS = 500;首先使能,然后赋予值;

关于一些其他的配置如下:

EPwm3Regs.TBPRD = PWM3_TIMER_TBPRD;

EPwm3Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP;

// Count up

EPwm3Regs.ETSEL.bit.INTSEL = ET_CTR_ZERO;

// Enable INT on Zero event

EPwm3Regs.ETSEL.bit.INTEN = PWM3_INT_ENABLE;

// Enable INT

EPwm3Regs.ETPS.bit.INTPRD = ET_1ST;

// Generate INT on 3rd event

关于28016PWM配置的讨论

PWM1的A/B的独立配置;

除了counter-compare比较寄存器,CMPA,CMPB,主要还是配置控制寄存器CMPCTL,对于影子寄存器的配置,还有影子寄存器的装载模式。这里主要讲关于PWM中action qualifier的配置; 模式1:

// Setup shadow register load on ZERO

EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;

EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;

EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;

EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;

// Set Compare values

EPwm1Regs.CMPA.half.CMPA = EPWM1_MIN_CMPA;

// Set compare A value

EPwm1Regs.CMPB = 500;

// Set Compare B value

// Set actions

EPwm1Regs.AQCTLA.bit.ZRO = AQ_CLEAR;

// Set PWM1A on Zero

EPwm1Regs.AQCTLA.bit.CAU = AQ_SET;

// Clear PWM1A on event A, up coun

EPwm1Regs.AQCTLB.bit.ZRO = AQ_SET;

// Set PWM1B on Zero

EPwm1Regs.AQCTLB.bit.CBU = AQ_CLEAR;

// Clear PWM1B on event B, up count

// Interrupt where we will change the Compare Values

EPwm1Regs.ETSEL.bit.INTSEL = ET_CTR_ZERO;

// Select INT on Zero event

EPwm1Regs.ETSEL.bit.INTEN = 1;

// Enable INT

EPwm1Regs.ETPS.bit.INTPRD = ET_3RD;

// Generate INT on 3rd event

其中红色的为PWM的输出方式配置,当PWM1.A在counter==0时,输出为0,在counter==CMPA时,且在向上计数,输出为1;而PWM1.B相反。

模式二:

// Set actions

EPwm2Regs.AQCTLA.bit.PRD = AQ_CLEAR;

// Clear PWM2A on Period

EPwm2Regs.AQCTLA.bit.CAU = AQ_SET;

// Set PWM2A on event A, up count

EPwm2Regs.AQCTLB.bit.PRD = AQ_CLEAR;

// Clear PWM2B on Period

EPwm2Regs.AQCTLB.bit.CBU = AQ_SET;

// Set PWM2B on event B, up count 其中红色的为PWM的输出方式配置,当PWM1.A在counter==period时,输出为0,在counter==CMPA时,且在向上计数,输出为1;而PWM1.B相同; 模式三:

// Set Actions

EPwm3Regs.AQCTLA.bit.CAU = AQ_SET;

// Set PWM3A on event B, up count

EPwm3Regs.AQCTLA.bit.CBU = AQ_CLEAR;

// Clear PWM3A on event B, up count 其中红色的为PWM的输出方式配置,当PWM1.A在counter==CMPA时,输出为1,在counter==CMPB时,且在向上计数,输出为0,也就是计数在CMPA与CMPB之间时输出为1;

模式四:

EPwm3Regs.AQCTLB.bit.ZRO = AQ_TOGGLE;

// Toggle EPWM3B on Zero 此模式强制整个周期输出高或者输出地,与CMPA与CMPB无关,关于28016PWM死区时间配置的讨论

主要与死区有关的是三个寄存器:

Dead-Band Generator Control Register(DBCTL);

Dead-Band Generator Rising Edge Delay Register(DBRED);

Dead-Band Generator Rising Edge Delay Register(DBRED)Field Descriptions; 首先清楚延时时间的计算 为:DBRED*TBCLK; 然后弄懂DBCTL就可以了。

注意理解下图:

弄懂3个控制位什么意思;

OUT_MODE,POLSEL,IN_MODE 注意第二位,这位通常用在输入为同一个通道时,也就是IN_MODE=0X00/0X03时。简单看一些deadband的配置:

EPwm1Regs.DBCTL.bit.OUT_MODE = DB_FULL_ENABLE;输出之前,输入上升沿下降沿都被延时;

EPwm1Regs.DBCTL.bit.POLSEL = DB_ACTV_HI;没有取反过程;

EPwm1Regs.DBCTL.bit.IN_MODE = DBA_ALL;输入全部为A,此为习惯性的配置; EPwm1Regs.DBRED = 1000;EPwm1Regs.DBFED = 500;

一周解决的为题:

我的sin()函数能够正常执行,cos()函数也能正常执行,但是当sin()计算完再计算cos(),仿真环境就会进入逻辑错误中断,请问怎么解决,是不是该重装CCS。

原因:之前一直把程序烧到RAM里,总是只能执行一个sin()和cos()函数,然后RAM的空间就不够了,由于也不会改RAM空间的大小,所以就把程序直接下到flash里面,结果就好了。

遇到CCS和仿真器连不上的问题;Error connecting to the target: Error 0x80000240/134 Fatal Error during: Initialization, OCS Unknown Error Sequence ID: 0 Error Code: 134 Error Class: 0x80000240 I/O Port = 240 解决办法:

我也试着解决这个问题,重装了一次,结果没有用。想着觉得是USB驱动的问题,然后就在设备管理器中,把USB的驱动删除了,有重新装了一遍,结果没问题了。原因应该是以前用的USB口安装的驱动,又被用于安装其他的驱动,结果以前的USB驱动不能用了。

第五篇:DSP实验学习心得

DSP实验学习心得

DSP即为数字信号处理器(Digital Signal Processing),是在模拟信号变换成数字信号以后进行高速实时处理的专用处理器。它的工作原理是将现实世界的模拟信号转换成数字信号,再用数学方法处理此信号,得到相应的结果。自从数字信号处理器(Digital Signal Processor)问世以来,由于它具有高速、灵活、可编程、低功耗和便于接口等特点,已在图形、图像处理,语音、语言处理,通用信号处理,测量分析,通信等领域发挥越来越重要的作用。随着成本的降低,控制界已对此产生浓厚兴趣,已在不少场合得到成功应用。DSP 数字信号处理器DSP 芯片采用了数据总线和程序总线分离的哈佛结构及改进的哈佛结构,较传统处理器的冯诺依曼结构具有更高的指令执行速度。其处理速度比最快的CPU快10-50倍。在当今数字化时代背景下,DSP 已成为通信、计算机、消费类电子产品等领域的基础器件,被誉为信息社会革命的“旗手”。

最初的DSP器件只是被设计成用以完成复杂数字信号处理的算法。DSP器件紧随着数字信号理论的发展而不断发展。DSP发展最快,现在的DSP属于第五代产品,它与第四代相比,系统集成度更高,将DSP 芯核及外围组件综合集成在单一芯片上。这种集成度极高的DSP 芯片不仅在通信、计算机领域大显身手,而且逐渐渗透到人们日常消费领域,前景十分可观。近年来,随着通信技术的飞速发展,DSP已经成为信号与信息处理领域里一门十分重要的新兴学科,它代表着当今无线系统的主流发展方向。现在,通信领域中许多产品都与DSP 密切联系,例如,Modem、数据加密、扩频通信、可视电话等。而寻找DSP芯片来实现算法最开始的目标是在可以接受的时间内对算法做仿真,随后是将波形存储起

来,然后再加以处理。在短短的十多年时间,DSP芯片已经在信号处理、通信、雷达等许多领域得到广泛的应用。目前, DSP 芯片的价格也越来越低,性能价格比日益提高,具有巨大的应用潜力。DSP 芯片的应用主要有:(1)信号处理--如,数字滤波、自适应滤波、快速傅里叶变换、相关运算、频谱分析、卷积等。(2)通信--如,调制解调器、自适应均衡、数据加密、数据压缩、回坡抵消、多路复用、传真、扩频通信、纠错编码、波形产生等。(3)语音--如语音编码、语音合成、语音识别、语音增强、说话人辨认、说话人确认、语音邮件、语音储存等。(4)图像/图形--如二维和三维图形处理、图像压缩与传输、图像增强、动画、机器人视觉等。(5)军事--如保密通信、雷达处理、声纳处理、导航等。(6)仪器仪表--如频谱分析、函数发生、锁相环、地震处理等。(7)自动控制--如引擎控制、深空、自动驾驶、机器人控制、磁盘控制。(8)医疗--如助听、超声设备、诊断工具、病人监护等。(9)家用电器--如高保真音响、音乐合成、音调控制、玩具与游戏、数字电话/电视等DSP 的发展前景DSP的功能越来越强,应用越来越广,达到甚至超过了微控制器的功能,比微控制器做得更好而且价格更便宜,许多家电用第二代DSP 来控制大功率电机就是一个很好的例子。汽车、个人通信装置、家用电器以及数以百万计的工厂使用DSP 系统。数码相机、IP 电话和手持电子设备的热销带来了对DSP芯片的巨大需求。而手机、PDA、MP3 播放器以及手提电脑等则是设备个性化的典型代表,这些设备的发展水平取决于DSP 的发展。新的形势下,DSP面临的要求是处理速度更高,功能更多更全,功耗更低,存储器用量更少。

这学期我们学习了DSP的理论课程,也进行了相应的实验,实际操作让我们学习的更加深入。我们的主处理芯片: TMS320VC5502PGF300;

低功耗设计,比上一代 C54XX 器件功耗低 30%左右;

处理速度更快,双乘法器结构,处理速度 600MMACS;

软件程序兼容 C54XX DSP;

片内存贮空间 32K× 16Bit(DARAM)(64K Bytes);

最大外部寻址空间 8M× 16Bit; SDRAM: 1M× 16Bit; 2 路 8bit 板上 A/D 接口;

路的 TLC7528 转换,5M/S,8Bit;

片上 UART 接口,符合 RS232 标准;

8Mbit 扩展 FLASH,存储大量固化程序和数据;

设计有用户可以自定义的开关和测试指示灯;

3U 标准的 DSP 扩展总线,包括数据、地址、I/O、控制; 4 组标准扩展连接器,为用户进行二次开发提供条件;

具有 IEEE1149.1 相兼容的逻辑扫描电路,该电路仅用于测试和仿真; +5V 电源输入,内部+3.3V、+1.26V 电源管理;

高保真语音接口设计,双路语音采集,每路 48K/S; 4 层板设计工艺,稳定可靠;

具有自启动功能设计,可以实现脱机工作;

可以选配多种应用接口板,包括图像板,网络板等; 开发环境

开发 TMS320C55xx 应用系统一般需要以下设备和软件调试工具: 1.通用 PC 一台,安装 Windows2000 或 WindowsXP 操作系统及常用软件(如: WinRAR 等)。

2. TMS320C55xx 评估板及相关电源。如: ICETEK– VC5502-A 评估板。

3.通用 DSP 仿真器一台及相关连线。如: ICETEK-5100USB 仿真器。

4.控制对象(选用)。如: ICETEK-CTR 控制板。

5. TI 的 DSP 开发集成环境 Code Composer Studio。如: CCS3.1。

6.仿真器驱动程序。7.实验程序及文档。

ICETEK-DSP 教学实验箱的硬件连接 .连接电源:打开实验箱,取出三相电源连接线(如右图),将电源线的

一端插入实验箱外部左侧箱壁上的电源插孔中。确认实验箱面板上电源总

开关(位于实验箱底板左上角)处于“关”的位置,连接电源线的另一端至

220V 交流供电插座上,保证稳固连接。

2.使用电源连接线(如右图,插头是带孔的)连接各模块电源:确认实验

箱总电源断开。连接 ICETEK-CTR 板上边插座到实验箱底板上+12V 电源

插座; ICETEK-CTR 板下边插座到实验箱底板上+5V 电源插座;如使用

PP(并口)型仿真器,则连接仿真器上插座到实验箱底板上+5V 电源插座;

连接 DSP 评估板模块电源插座到实验箱底板上+5V 电源插座。注意各插

头要插到底,防止虚接或接触不良。

3.连接 DSP 评估板信号线:当需要连接信号源输出到 A/D 输入插座时,使用信号连接线(如右图)分别连接相应插座。

4. 接通电源: 检查实验箱上 220V 电源插座(箱体左侧)中保险管是否完好,在连接电源线以后,检查各模块供电连线是否正确连接,打开实验箱上的电源总开关(位于实验箱底板左上角),使 开关位于“开”的位置,电源开关右侧的指示灯亮。构造 DSP 开发软件环境

1.安装 CCS 软件(此文档假定用户将 CCS 安装在默认目录 C:CCStudio_v3.1 中,同时也建议

用户按照默认安装目录安装)⑵将实验箱附带的教学光盘插入计算机光盘驱动器。⑶打开教学光盘的“ CCS3.1”目录。⑷双击其中的“ Setup.exe”,进入安装程序。⑸选择“ Code Composer Studio”

按照安装提示进行安装,并重新启动计算机。⑹安装完毕,桌面上出现两个新的图标 2.安装 DSP 通用仿真器驱动

需要安装两部分:(1)仿真器的 Windows 驱动程序(并口无需,usb 口要安装);(2)根据仿真的 DSP 芯片不同,设置仿真器在 CCS 环境中的对应驱动程序。

⑴双击光盘中的“开发系统驱动USB”目录下的 usbdrv54x.exe 文件,然后再打开的页

面中输入 ccs 的安装路径,例如 C:CCStudio_v3.1 ⑵此时驱动已经被拷贝到 C:CCStudio_v3.1icetek 目录下。⑶然后把 usb 电缆连接到计算机的 usb 接口和 usb 仿真器上,计算机将提示找到新硬件,选择否,然后点下一步。3.安装实验程序

双击光盘中的实验安装文件,自动解压缩后安装到 C:ICETEK 目录下。

例如:实验安装文件为“ Setup5502A.exe” 4.安装初始化仿真器程序

将光盘中“工具”子目录下的“ xdsresetUSB”目录拷贝到硬盘上的任意路径下,建

议和实验程序目录放在一起,便一管理。然后用单击鼠标右键选择“ xdsresetUSB”目

录下 “ xdsrstusb”批处理文件,选择“发送到”->“桌面快捷方式”。注: 如果您的 CCS 系统未安装在默认的 C:CCStudio_v3.1 目录,请用鼠标右键单击桌面上“ xdsrstusb”图标,选择“属性”,将“快捷方式”项和“起始位置”中的路径改成您所安装的路径。

启动 CCS 启动 Emulator 方式:

⑴ 首先将实验箱电源关闭。连接实验箱的外接电源线。⑵ 检查 ICETEK-5100USB 仿真器的黑色 JTAG 插头是否正确连接到 ICETEK– VC5502-A板的 J1 插头上。注:仿真器的插头中有一个孔加入了封针,与 J1 插头上的缺针位置应重合,保证不会插错。

⑶ 检查是否已经用电源连接线连接了 ICETEK– VC5509-A 板上的POW1插座和实验箱底板上+5V 电源插座。⑷ 检查其他连线是否符合实验要求。检查实验箱上三个拨动开关位置是否符合实验要求。

⑸ 打开实验箱上电源开关(位于实验箱底板左上角),注意开关边上红色指示灯点亮。

ICETEK– VC5502-A 板上指示灯 D5 和 D6 点亮。如果打开了 ICETEK-CTR 的电源开关,ICETEK-CTR 板上指示灯 L1、L2 和 L3 点亮。如果打开了信号源电源开关,相应开关边的指示灯点亮。

⑹ 用实验箱附带的 USB 信号线连接 ICETEK-5100USB 仿真器和 PC 机后面的 USB 插座,注意 ICETEK-5100USB 仿真器上指示灯 Power 和 Run 灯点亮。

⑺ 双击桌面上仿真器初始化图标:

(8)如果进入 CCS 提示错误,先选“ Abort”,然后用“初始化 ICETEK-5100 USB2.0 仿真器”初始化仿真器,如提示出错,可多做几次。如仍然出错,拔掉仿真器上 USB 接头(白色方形),按一下 ICETEK– VC5509-A 板上 S1 复位按钮,连接 USB 接头,再做“初始化 ICETEK-5100 USB2.0仿真器”。

(9)如果遇到反复不能连接或复位仿真器、进入 CCS 报错,请打开 Windows 的“任务管理器”,在“进程”卡片上的“映像名称”栏中查找是否有“cc_app.exe”,将它结束再试。

退出 CCS 指示灯实验

了解 ICETEK-VC5502-AE 板在 TMS320VC5502DSP 外部扩展存储空间上的扩展。了解 ICETEK-VC5502-AE 板上指示灯扩展原理。学习在 C 语言中使用扩展的控制寄存器的方法。

TMS320VC5502DSP 的 EMIF 接口:

存储器扩展接口(EMIF)是 DSP 扩展片外资源的主要接口,它提供了一组控制信号和地

址、数据线,可以扩展各类存储器和寄存器映射的外设。-ICETEK-VC5502-AE 评估板在 EMIF 接口上除了扩展了片外 SDRAM 外,还扩展了指

示灯、DIP 开关和 D/A 设备。具体扩展地址如下: 0x400009,0x40000b: D/A 转换控制寄存器 0x400007: 板上 DIP 开关控制寄存器 0x400005: 板上指示灯控制寄存器

-与 ICETEK-VC5502-AE 评估板连接的 ICETEK-CTR 显示控制模块也使用扩展空间控制

主要设备:

608001h: 读-键盘扫描值,写-液晶控制寄存器 608002h: 液晶辅助控制寄存器

608003h、608004h: 液晶显示数据寄存器 608005h: 发光二极管显示阵列控制寄存器 拨码开关控制实验

了解 ICETEK-VC5502-AE 板在 TMS320VC5502DSP 外部扩展存储空间上的扩展。了解 ICETEK-VC5502-AE 板上拨码开关扩展原理。熟悉在 C 语言中使用扩展的控制寄存器的方法。

TMS320VC5502DSP 的 EMIF 接口:

存储器扩展接口(EMIF)是 DSP 扩展片外资源的主要接口,它提供了一组控制信号和地址、数据线,可以扩展各类存储器和寄存器映射的外设。

-ICETEK-VC5502-AE 评估板在 EMIF 接口上除了扩展了片外 SDRAM 外,还扩展了指

示灯、DIP 开关和 D/A 设备。具体扩展地址如下: 0x400009,0x40000b: D/A 转换控制寄存器 0x400007: 板上 DIP 开关控制寄存器 0x400005: 板上指示灯控制寄存器

-与 ICETEK-VC5502-AE 评估板连接的 ICETEK-CTR 显示控制模块也使用扩展空间控制

主要设备:

608001h: 读-键盘扫描值,写-液晶控制寄存器 608002h: 液晶辅助控制寄存器

608003h、608004h: 液晶显示数据寄存器 608005h: 发光二极管显示阵列控制寄存器 DSP 的定时器

通过实验熟悉 VC5502A 的定时器;掌握 VC5502A 定时器的控制方法;掌握 VC5502A 的中断结构和对中断的处理流程;学会 C 语言中断程序设计,以及运用中断程序控制程序流程。通用定时器介绍及其:

TMS320VC5502A 内部有两个 64 位通用定时器(GP), 控制方法详见spru618.pdf。中断响应过程(详见 spru371.pdf):

外设事件要引起 CPU 中断,必须保证: IER 中相应使能位被使能,IFR 相应中断也被使能。在软件中,当设置好相应中断标志后,开中断,进入等待中断发生的状态;外设(如定时器)中断发生时,首先跳转到相应中断级高的服务程序中(如:定时器 1 会引起 TINT中断),程序在进行服务操作之后,应将本外设的中断标志位清除以便能继续中断,然后返回。中断程序设计:

-程序中应包含中断向量表,VC5502A 默认向量表从程序区 0xffff00 地址开始存放,根据IPVD 和 IPVH 的值确定向量表的实际地址。

-注意观察程序中 INTR_init()函数的定义部分,其中 IPVD 和 IPVH 的值都为 0x0001;同时

观察配置文件 ICETEK-VC5502-AE.cmd 中的 VECT 段描述中 o=0x0100。

-向量表中每项为 8 个字,存放一个跳转指令,跳转指令中的地址为相应服务程序入口地址。

第一个向量表的首项为复位向量,即 CPU 复位操作完成后自动进入执行的程序入口。

-服务程序在服务操作完成后,清除相应中断标志,返回,完成一次中断服务。单路,多路数模转换(DA)

了解数模转换的基本操作。了解 ICETEK-VC5502-AE 板扩展数模转换方式。掌握数模转换程序设计方法。

1.数模转换操作:数模转换芯片使用 TLC7528C。TLC7528C 是双路、8 位数字-模拟转换器,内部具有各自单独的数据锁存器,其特性包括两 DAC 非常精密的一致性,数据通过公共 8 位输入口转送至两DAC 数据锁存器的任意一个。控制输入端 DACA/DACB 决定哪一个 DAC 被装载。器件的装载周期与随机存取存储器的写周期类似,能方便地与大多数通用微处理器总线或端口相接口。器件的工作电压 5V 至 15V,功耗小于 15mW(典型值)。2 或 4 象限的乘法功能使该器件成为许多微处理器的增益设置和信号控制的良好选择。它可工作于电压模式,与电流输出相比较,更适合于电压输出。TLC7528C 的工作温度范围从 0℃至 70℃。

2. TLC7528C 与 TMS320VC5502A 的连接:由于 TMS320VC5502A DSP 没有数模转换输出设备,采用外扩数模转换芯片的方法。在 ICETEK-VC5502-AE 板上选用的是 TLC7528C。TLC7528C 的转换寄存器被映射到了 DSP的 CE2 空间,两路 DA 转换通道的地址分别是: 0x400009,0x40000b。在 TLC7528C 的输出端,为了增加输出功率,经过一级运放再输出到板上插座上。

实验学习让我们更好的学习到了理论知识,不只是停留在理论上,实践才是真理。

下载DSP学习心得word格式文档
下载DSP学习心得.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    DSP学习心得笔记(5篇范文)

    DSP学习心得笔记 ---------------- 白建成.baijc.icekoor 引言:学习DSP的时间有两个多月了,收获很多新知识,我们要每天都有进步才行,以下内容没有特别的顺序,跟具自己的学习情况......

    DSP学习心得笔记(更新20140717)

    DSP学习心得笔记 ---------------- 白建成.baijc.icekoor 引言:学习DSP的时间有两个多月了,收获很多新知识,我们要每天都有进步才行,以下内容没有特别的顺序,跟具自己的学习情况......

    基于DSP开关电源

    基于DSP的开关电源 摘要 本文以TMs320LF2407A为控制核心,介绍了一种基于DSP的大功率开关电源的设计方案。该电源采用半桥式逆变电路拓扑结构,应用脉宽调制和软件PID调节技术实......

    dsp作业

    .c图 实验二 #define UINT unsigned int UINT i,*p,*n; void main(void) { p=(UINT *)0x0300; for(i=0;i PROG PAGE 0 .cinit > PROG PAGE 0 //.switch > PROG PAGE......

    关于dsp心得体会

    关于dsp心得体会 篇一:dsp实验报告心得体会 TMS320F2812x DSP原理及应用技术实验心得体会 1. 设置环境时分为软件设置和硬件设置,根据实验的需要设置,这次实验只是软件仿真,可以......

    DSP实验报告

    实验0 实验设备安装才CCS调试环境 实验目的: 按照实验讲义操作步骤,打开CCS软件,熟悉软件工作环境,了解整个工作环境内容,有助于提高以后实验的操作性和正确性。 实验步骤: 以演示......

    DSP课程设计

    TMS320C54x与PC通信系统的设计(单号) 一、设计目的 本次课程设计的目的是为了进一步提高学生的自我开发能力,培养学生的查阅资料,独立分析问题、解决问题以及实际动手的能力。也......

    DSP实验报告

    实验0 实验设备安装才CCS调试环境 实验目的: 按照实验讲义操作步骤,打开CCS软件,熟悉软件工作环境,了解整个工作环境内容,有助于提高以后实验的操作性和正确性。 实验步骤: 以演......