DSP 技术及其应用课程大作业_第1页
DSP 技术及其应用课程大作业_第2页
DSP 技术及其应用课程大作业_第3页
DSP 技术及其应用课程大作业_第4页
DSP 技术及其应用课程大作业_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、课程论文dsp 技术及其应用课程大作业姓名:鄢明学号:3112001084学院:机械工程学院指导教师:宁改娣2012 年 12 月key words:摘要论文题目:dsp 技术及其应用课程大作业姓名:鄢明指导教师:宁改娣摘 要dsp 数字信号处理(digital signal processing)是一门涉及许多学科而又广泛应用于许多领域的新兴学科。其在电机调速上也有广泛的应用,电机调速主要应用调制波,也就是 pwm 波。这门课程实验所用的芯片有许多,在本论文中使用的 tms320f2808 芯片。本文主要是使用 f2808 中的 epwm 模块产生 pwm 波。产生 pwm 波的方法有许多种

2、,在本文中使用了周期比较产生 pwm 波以及 cmpa/b 比较产生 pwm 波,更进一步使用 ecap 模块对所生成的 pwm 波进行周期测量。从而了解 pwm 波产生及周期测量的原理,熟悉 dsp 这一类芯片的使用方法,为今后的学习打下基础。关 键 词:dsp;tms320f2808;pwm 波;ecap 模块abstractdigital signal processing is a new branch of science which involves many subjects and is widely used in many fields. it is widely used

3、 in the field of the motor speed. motor speed control is mainly used modulation wave which is also called pwm.there are many chips used in this course experiment, in this thesis, i used tms320f2808 chip. i mainly use epwm module in f2808 to produce pwm wave this paper. it has many kinds of ways to p

4、roduce pwm wave, in this paper, i use the period and cmpa/b comparison to produce pwm wave. further i use ecap module to measure a pwm waves period. through the course i have both learnt how to generate a pwm wave and measure its period and been familiar with the use of this kind of dsp chip. most i

5、mportant is to lay a foundation for futures study.dsp; tms320f2808; pwm wave; ecap modulei目录目录1. 设计任务书12. 设计内容12.1 使用 epwm 模块输出 pwm 波形12.1.1 使用周期寄存器比较产生 pwm 波12.1.2使用比较寄存器 a 或 b 产生 pwm 波43. 使用 ecap 模块测量 pwm 波的周期74. 程序调试125. 实验总结13致谢14参考文献14ii课程论文1. 设计任务书设计的主要任务是熟悉 dsp2808 的 epwm 模块,能够控制输出 pwm 波形,使用

6、ecap 模块对 pwm 波的周期测量。进而熟悉 dsp2808 的使用方法,掌握 dsp 中 c 语言的使用方法。2. 设计内容2.1 使用 epwm 模块输出 pwm 波形在 dsp2808 中,有许多方式可以产生 pwm 波,进而控制电机。如图 1 所示为 epwm 模块的总框图,在 epwm 模块中有以下几种方式产生 pwm 波:a)使用周期寄存器比较产生 pwm 波(调试成功)b)使用比较寄存器 a 或 b 产生 pwm 波(程序调试成功)epwmxsynciepwm1intepwm1asynciepwm1 模块epwm1bepwm1socsyncoepwmxsynco至 ecap1

7、epwm2intsynciepwm2apieepwm2 模块epwm2bepwm2socsyncoepwmxintepwmxasynciepwmxbepwmxsocepwmx 模块syncotz1 tz6xsocadc外设结构 1图 1 epwm 模块的总框图12.1.1 使用周期寄存器比较产生 pwm 波gpiomux每个 epwm 模块的功能框图如图 2 所示。在使用周期寄存器比较产生pwm 波中,需要用到图 2 中的时基模块、动作限定模块、gpio 模块。首先,1dsp 技术及其应用课程大作业对 dsp 时钟进行初始化使得系统时钟为 100mhz;其次,初始化 gpio 模块;然后,对

8、epwm3 模块进行配置,输出 pwm 波,流程图如图 3 所示。epwmxsyncictr=prdctr=prdepwmxintctr=0pie时基模块ctr=0ctr=cmpa事件触epwmxsoca发和中epwmxsyncoctr_dirctr=cmpb断模块adcepwmxsocb动作ctr_dirctr=cmpa限定模块epwmxa死斩比较模块区波gpio模模故epwmxb模块块块障滞环ctr=cmpbctr=0tz1 tz6epwmxtzintpie图 2 每个 epwm 模块的功能框图1初始化系统时钟初始化 pie 及清除中断标志配置 epwm3 模块配置并使能 tb 时钟执行程

9、序否ctr = prd ? 是epwm3a 输出取反输出波形图 3 使用周期寄存器比较产生 pwm 波流程图2课程论文在此程序中,采用增计数模式,时钟采用系统时钟的 2 分频,时基周期寄存器的值为 500,在计数器的值和时基周期寄存器值相等的时候,强制 epwm3a 输出取反,从而在 gpio 引脚上产生 pwm 波,并且用示波器观测波形图,如图 4 所示。图 4 使用周期比较产生的 pwm 波主要程序为:void initepwmtimer()eallow;sysctrlregs.pclkcr0.bit.tbclksync = 0; /禁止 epwm 模块的时基时钟的高速时钟(hspclk)

10、edis;epwm3regs.tbctl.bit.syncosel = 0;epwm3regs.tbctl.bit.ctrmode = tb_count_up; / 增计数模式epwm3regs.tbprd = pwm3_timer_min; /pwm 波形的输出频率为10epwm3regs.tbphs.all = 0x00000000;epwm3regs.aqctla.bit.prd = aq_toggle; / toggle on prd 强制 epwm3a 输出取反,即低电平变为高电平,高电平变为低电平epwm3regs.tbctl.bit.hspclkdiv = 1;/ tbclk =

11、 sysclkout3dsp 技术及其应用课程大作业epwm3regs.tbctl.bit.clkdiv = 0; epwm3timerdirection = epwm_timer_up; eallow;sysctrlregs.pclkcr0.bit.tbclksync = 1;edis;根据程序可以得到输出 pwm 波的周期为:t = 2 (prd + 1) tb = 2 500 + 1108 = 20.04 106spwm 波的占空比为 50%,用示波器观测的周期值为 20.04s,与计算得到的周期值是一样的。所以程序运行结果是正确的。2.1.2 使用比较寄存器 a 或 b 产生 pwm

12、波在使用比较寄存器 a 或 b 产生 pwm 波中,需要使用图 2 中的时基模块、比较模块、动作限定模块以及 gpio 模块。首先,对 dsp 时钟进行初始化使得系统时钟为 100mhz;其次,初始化 gpio 模块;然后对 epwm 模块进行配置,在此程序中需要对时基模块和比较模块进行配置,与前者相比较多了对比较模块的配置,具体配置情况见主要程序;然后,执行程序,输出 pwm 波,流程图如图 5 所示。初始化系统时钟初始化 pie 及清除中断标志配置 epwm1 模块使能 tb 时钟执行程序ctr=cmpab?否epwm1ab 在增计数时置 1,在减计数时置 0 是输出波形图 5 使用比较寄

13、存器比较产生 pwm 波流程图4课程论文在此程序中采用增减计数模式,tb 时钟设置为系统时钟,主要程序如下:void initepwm1()eallow;sysctrlregs.pclkcr0.bit.tbclksync = 0; /禁止 epwm 模块的时基时钟的高速时钟(hspclk)edis;/ setup tbclkepwm1regs.tbprd = epwm1_timer_tbprd;/设置时基周期寄存器的值epwm1regs.tbphs.half.tbphs = 0x0000;/ phase is 0epwm1regs.tbctr = 0x0000;/ 清除计数器/ set com

14、pare valuesepwm1regs.cmpa.half.cmpa = epwm1_min_cmpa; / 装载 cmpa 的值epwm1regs.cmpb = epwm1_max_cmpb; / 装载 cmpb 的值 / setup counter modeepwm1regs.tbctl.bit.ctrmode = tb_count_updown; / 增减计数模式epwm1regs.tbctl.bit.phsen = tb_disable; / 禁止 phase 装载 epwm1regs.tbctl.bit.hspclkdiv = tb_div1; / tb=系统时钟epwm1regs

15、.tbctl.bit.clkdiv = tb_div1;/ setup shadowing epwm1regs.cmpctl.bit.shdwamode = cc_shadow; epwm1regs.cmpctl.bit.shdwbmode = cc_shadow; epwm1regs.cmpctl.bit.loadamode = cc_ctr_zero; / load on zero epwm1regs.cmpctl.bit.loadbmode = cc_ctr_zero;/ set actionsepwm1regs.aqctla.bit.cau = aq_set; epwm1regs.aq

16、ctla.bit.cad = aq_clear;epwm1regs.aqctlb.bit.cbu = aq_set; epwm1regs.aqctlb.bit.cbd = aq_clear;/ interrupt where we will change the compare values epwm1regs.etsel.bit.intsel = et_ctr_zero; / 当时基计数器(tbctr)值等于 0 时发生中断5dsp 技术及其应用课程大作业epwm1regs.etsel.bit.inten = 1;/使能中断epwm1regs.etps.bit.intprd = et_3rd

17、;/ generate int on 3rd eventepwm 中断周期选择位;当 etsel【intsel】中选择的中断事件发生 3 次时产生中断eallow;sysctrlregs.pclkcr0.bit.tbclksync = 1;edis;在上述程序中 epwm1_timer_tbprd 的值为 2000,epwm1_min_cmpa 的值为 500,epwm1_max_cmpb 的值为 1000,可以算出 cmpa 和 cmpb 的波形的周期和占空比,分别用ta 、tb 及 da 、db表示。ta = tb = 2 prd tb = 2 2000 108 = 40 406sda =

18、 cmpa prd = 500 2000 = 25%db = cmpb prd = 1000 2000 = 50%计算得到,周期都是 40s,占空比分别为 25%和 50%。用示波器所测得的cmpa 和 cmpb 的波形分别如图 6、7 所示。从图中可以看到测得的周期都是40s,与计算出来的周期是一致的,可以得到结果是正确的。图 6 cmpa 的 pwm 波形6课程论文图 7 cmpb 的 pwm 波形3. 使用 ecap 模块测量 pwm 波的周期ecap 模块称为捕获模块,当捕获引脚上出现跳变时,将触发捕获模块工作。f2808 芯片共有 4 个捕获单元电路,每个捕获单元电路对应处理一个捕获

19、输入引脚的输入信号。ecap 单元电路作为一个完整的捕获通道,可以测量出多个时间,ecap 模块中有下述关键资源: 专用的捕获输入引脚; 32 位的时基寄存器或计数器; 432 位时间标记捕获寄存器(cap1cap4); 4 个电平等级的(modulo4 计数器)限定器,使捕获信号同步与外部事件的 ecap 信号上升沿/信号下降沿; 4 个时间事件独立的边沿极性选择; 对输入信号进行前分频(262)操作; 首发比较寄存器(2 位)在 14 时间标记事件后冻结捕获功能; 连续时间标记捕获模式下,使用 4 级(cap1cap4)深的循环缓冲结构来保存捕获的时间标记值; 4 个捕获事件的任何一个都可

20、以产生中断。7dsp 技术及其应用课程大作业如图 8 所示,为捕获模块的捕获模式框图。syncin中断触发与s相位控制寄存器到 pie标志控制单连续与首y元发捕获n计数器syncoutctr_ovf控制ccrt0:31捕获事件 cevt1:4prd0:31cap1ld1极性选择事cmp0:31件cap2ld2管极性选择理事件预定标器cap3器ld3极性选择ld4cap4极性选择图 8 捕获模式框图1在此程序中,输入的 pwm 波形为上述使用周期寄存器比较产生的 pwm波,通过 ecap 模块的输入引脚输入 pwm 信号,然后测得 pwm 波的周期值。如图 9 位连续捕获与首发捕获模式的框图。本

21、程序工作在连续捕获的工作方式下,其工作原理为:通过边沿限定器的事件,使 mod4 计数器增计数(cevt1cevt4)。mod计数器连续计数(01230)一直循环下去。连续捕获模式控制 mod4 计数器的开始、停止和复位,这些动作通过一个首发捕获模式起作用,能够触发得到比较器的停止值或软件控制重新捕获新值。在 mod4 计数器和捕获寄存器(cap1cap4)冻结前,ecap 模块等待14 个(由需要的捕获值个数确定)事件捕获。若 capleden 为置位,将重新准备 ecap 模块下一个序列的捕获,将清零 mod4 计数器和重新使能写入捕获寄存器(cap1cap4)。在连续模式下,mod4 计

22、数器连续计数(01230),捕获值连续循环地写入捕获寄存器(cap1cap4)。8课程论文01232:4多路选择cevtcevtclkcevtmod4 计数器cevt4stopmod_e首发控制逻辑捕获控制寄存器(ecctl2)停止re-ramcont/onesht捕获控制寄存器(ecctl2)stop_wrap图 9 连续捕获模式框图1此程序的流程图如图 10 所示。首先,初始化系统时钟,使得系统时钟为100mhz;其次,对 gpio 模块进行初始化;然后,配置 epwm 模块,产生pwm 波,作为 ecap 模块的输入信号;最后,对 ecap 模块进行配置,采用连续捕获模式,捕获四个事件(

23、cevt1cevt4),捕获 pwm 波的上升沿,当第四个事件发生后触发中断,cpu 从捕获寄存器中读取数据,记录得到cap1cap4,则 pwm 波的周期就是 cap2-cap1 或 cap3-cap2 或 cap4-cap3 的值。主要程序为:void initecapture()ecap1regs.ecctl2.bit.cap_apwm = 0; /工作于连续捕获模式 ecap1regs.cap1 = 0x00000000; ecap1regs.cap2 = 0x00000000;ecap1regs.cap3 = 0x00000000;ecap1regs.cap4 = 0x0000000

24、0;ecap1regs.eceint.all = 0x0000; /禁止 ecap 所有中断 ecap1regs.ecclr.all = 0xffff; /清除所有中断标志位9dsp 技术及其应用课程大作业ecap1regs.ecctl1.bit.caplden = 0; / 禁止捕获事件发送时间装载到捕获寄存器ecap1regs.ecctl2.bit.tsctrstop = 0;/时间标记计数器停止/ configure peripheral registersecap1regs.ecctl2.bit.cont_onesht = 0; /运行于连续捕获模式ecap1regs.ecctl2.b

25、it.stop_wrap = 3; /在连续捕捉模式下捕获 4 事件后覆盖前面的值ecap1regs.ecctl1.bit.cap1pol = 0;/捕获事件 1 的极性选择位 事件1 信号上升沿触发ecap1regs.ecctl1.bit.cap2pol = 0; ecap1regs.ecctl1.bit.cap3pol = 0; ecap1regs.ecctl1.bit.cap4pol = 0; ecap1regs.ecctl1.bit.ctrrst1 = 0; / 在捕获后不复位计数器 ecap1regs.ecctl1.bit.ctrrst2 = 0; ecap1regs.ecctl1.

26、bit.ctrrst3 = 0;ecap1regs.ecctl1.bit.ctrrst4 = 0;ecap1regs.ecctl2.bit.synci_en = 1; / 禁止时间标记计数器装载计数相位寄存器(ctrphs)的值ecap1regs.ecctl2.bit.synco_sel = 2; / 禁止选择同步输入信号作为同步输出信号 (旁路)ecap1regs.ecctl1.bit.caplden = 1;/ 使能捕获事件发送时间装载到捕获寄存器ecap1regs.ecctl2.bit.tsctrstop = 1; /时间标记计数器自由运行ecap1regs.ecctl2.bit.rea

27、rm = 0;/ 无影响ecap1regs.ecctl1.bit.caplden = 1;ecap1regs.eceint.bit.cevt4 = 1; /使能捕获 4 触发中断作为中断源for(;)do/查询事件 1while(ecap1regs.ecflg.bit.cevt1 = 0);tst1 = ecap1regs.cap1;ecap1regs.ecflg.bit.cevt1 = 0;do /查询事件 2while(ecap1regs.ecflg.bit.cevt2 = 0);10课程论文tst2 = ecap1regs.cap2;ecap1regs.ecflg.bit.cevt2 =

28、 0;do /查询事件 3 while(ecap1regs.ecflg.bit.cevt3 = 0); tst3 = ecap1regs.cap3; ecap1regs.ecflg.bit.cevt3 = 0;do /查询事件 4 while(ecap1regs.ecflg.bit.cevt4 = 0); tst4 = ecap1regs.cap4; ecap1regs.ecflg.bit.cevt4 = 0; t1 = tst2 - tst1;t2 = tst3 - tst2;t3 = tst4 - tst3;初始化时钟、gpio并产生 pwm配置 ecap 模块捕获 pwm是否捕获到上升沿

29、 1是是否捕获到上升沿 2是是否捕获到上升沿 3是 是否捕获到上升沿 4是 读取 cap1cap4 的值图 10 捕获程序流程图11等待等待等待等待dsp 技术及其应用课程大作业运行程序,在 ccs 中观看 pwm 波的周期值,如图 11 所示。图 11 ccs 中测得的 pwm 波周期值图中 t1=cap2-cap1,t2= cap3-cap2,t3= cap4-cap,这三个值都是pwm 波的周期值,此 pwm 波是上述 2.1.1 中的 pwm 波,周期为 20.04s,而此图中的t1 = t2 = t3 = 2004,可以求得周期值为t = 2004 108 = 20.04s,所以结果

30、是正确的。4. 程序调试程序所使用的调试软件是 ccs3.1,它提供了配置、建立、调试、跟踪和分析程序的工具,它便于实时、嵌入式信号处理程序的编制和调试,它能够加速开发进程,提高工作效率。首先,需要创建应用程序,应用程序通过工程文件来创建。工程文件包括c 源程序、目标文件、库文件、连接命令文件和包含文件。在实验中,库文件、包含文件及连接文件可以直接使用,只需要编写 c 源文件即可。其次,进行程序的编译,在实验中,花费了大量的时间进行编译调试,出现了大量的问题,有的已经解决,有的还没有解决,在实验总结当中进行总结。然后,调试程序,连接目标板与 pc 机,将程序下载到目标板中进行调试,由于 pwm

31、 波形无法在 ccs 中直接看到,所以需要借助示波器。ccs 提供下列调试功能2: 设置可选择步进断点 在断点处自动更新宽口 查看变量 观察和编辑存储器和寄存器 绘制选定对象的信号曲线在具体实验当中用到了一些基本的调试功能,基本上熟悉了 ccs 的使用方法,还有许多不懂的地方,还需要进一步学习。12课程论文5. 实验总结由于在本科阶段没有接触过这类的东西,基础比较薄弱。所以,在学习这门课程伊始,我的目标就是学会 dsp 开发板的基本使用,不在乎做多难的东西,最终的目标是熟悉 dsp 的使用,为以后得学习打下基础。所以,我做的东西都是很基础的东西,但是,我是很用心的在做,花了大量的时间。最终,学

32、到了我想学的东西,掌握了这类开发板的使用方法,入了门,感谢老师给我提供的这次宝贵的机会,谢谢老师!在学习的过程中遇到了许多的问题: 在刚开始学习的时候,装 ccs 的时候遇到了些,总是出现问题,后来发现是下载的文件不完全,后来找师兄借了完整的 ccs 才装好。 之后就慢慢的找一些例程,进行一些简单的仿真,熟悉一下 ccs 的使用环境,发现了一个难点,就是 include 文件,cmd 文件及 lib 文件总是不对,在编译过程中,总是会出现一些错误,提示有一些变量未定义,最后,经过查看资料、百度搜索,发现问题的根源在于缺少一个 lib 文件,所以导致许多 c 语言中的变量无法使用。 在 11 月份之前,我用的是师兄的 dsp2812,这个的资料多一些,所以,我打算先熟悉一下这个,然后再学习 2808,但是不幸的,由于自己的疏忽,导致 dsp 开发板烧毁,我想这就是学习应该付出的代价,这也给了我一个警告,在调试程序的时候,一定不要直接在开发板表面,直接用示波器探头测量波形。也不要用其他导体接触开发板表面,否则后果是很严重的。 在这之后,我开始学习 2808,发现这两者之间还是有相同点的,在学2812 时候的一些方法,可以应用到 2808 上。但是,两者也是有许多区别的,就对 pwm 模块来说,里面有许多寄存器不一样,两者产生 pwm 波形的方法也不一

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论