欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    dsp课程设计报告(秒表-)(共16页).doc

    • 资源ID:13688590       资源大小:347.50KB        全文页数:16页
    • 资源格式: DOC        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    dsp课程设计报告(秒表-)(共16页).doc

    精选优质文档-倾情为你奉上DSP原理及C程序开发课程设计报告题 目 秒表 学 院 专 业 班 级 姓 名 学 号 指导教师 2011 年 11 月 30 日教师评语:总分:教师签名:专心-专注-专业目录一、 课程设计任务. .3二、TMS320F2812介绍 . .44.1 特点 . .44.2 系统框图 . .54.3 TSM320F2812 时钟 .6三、F2812 SCI模块.7 5.1 SCI概述 .7 5.2 SCI 特点 .75.3 SCI CPU接口 .75.4 SCI多处理器通信 .85.5 SCI的中断 .8四、程序代码设计 . .116.1 CPU Timers的初始化配置程序代码. .116.2主程序代码. . . .14五、设计总结 . . .16六、参考文献 . .17一、课程设计任务通过TMS320F2812实现秒表的功能,其功能是时间送PC显示,每1秒变化一次。二、系统分析21设计要求(1)设置DSP的TMS320F2812芯片为Emulator工作模式;(2)设置GPIO相应管脚为输入或输出模式;(3)DSP芯片外接LCD作为输出,外接n个(数目不底于3个)单按键作为输入;(4)在程序中构建汉字字模,并能够使用查找法提取。22、设计思想 通过CCS软件开发平台和相应实验箱进行程序调试DSP外设控制设备开发扩展。用独立式控键控制DSP的GPIO管脚,使用DSP芯片控制LCD来显示秒表的计数数字,用其中一个按键实现LCD的清屏,其它(4个)通过两个按键控制秒表的启停。三、TMS320F2812介绍3.1 特点 采用32-位定点DSP TMS320F2812150MHz,方便实现电机控制片上存储器:FLASH: 128K X16-位SRAM: 18K X16-位Boot ROM: 4K X16-位OPT ROM: 1K X16-位其中FLASH,OPT ROM和8K X16-位SRAM受密码保护,保护用户程序。片上外设:PWM: 12路QEP: 6通道ADC: 2X8通道,12-位,80ns转换时间,03V量程SCI异步串口: 2通道McBSP同步串口: 2通道SPI同步串口: 1通道 eCAN总线: 1通道 外扩SRAM,最大容量为512K X 16位,基本配置为64K X 16位 外扩RTP实时时钟+512 X 8-位EERPROM 外扩4通道,12-位分辨率 2路SCI进行收发驱动,接口标准RS232/RS422/RS485可配置 提供看门狗,电源监视,上电复位,手动复位,系统可靠,稳定 标准化的扩展总线 3.2 系统框图 全功能框图系统电路原理图如下:4.3 TSM320F2812 时钟TSM320F2812 上有多个部件需要时钟,CPU,看门狗电路,ADC,事件管理器等片上外设。F2812 的CPU时钟电路如下图所示:四、TMS320F2812 SCI模块和CPU定时器模块以及串口调试器4.1 SCI概述 SCI 模块支持在CPU和其他异步外设之间的数字通讯。SCI的串口接收和发送均为双缓冲,接收和发送都有独立的使能和中断位。在全双工模式下,两者可以独立或同步运行。为了群豹数据的完整性,SCI模块检查接收数据的断点,校验位和帧错误。4.2 SCI 特点F2812的SCI具有如下特性:l 两根外部信号线引脚:SCITXD/SCIRXD l 异步串行、标准非归零(NRZ)格式l 16位波特率64K种可编程通信速率,增强型自动波特率检测硬件逻辑l 数据格式灵活l 接收数据出错检测 l 2种多处理器唤醒模式 l 半双工、全双工l 双缓冲接收和发送l 发送、接收独立的中断使能和中断位l 增强型发送、接收16级FIFOl 13个8位SCI模块控制寄存器l 发送、接收可采用中断或状态标志位查询编程方式SCI模块方块图如下:4.3 SCI CPU接口SCI CPU接口如下图所示:4.4 SCI多处理器通信同一个串行线路上,一次多处理器通信:l 一个发送者(Talker)l 多个接收者(Listener)实现与一个Listener的互传l 地址字节 数据块第一个字节是地址字节,被所有Listener读取地址正确的接收器接收随后的数据;地址不正确的Listener等待下一个地址字节。l SLEEP位 所有的均置SLEEP位为1,仅在检测到地址字节时才被中断当地址与软件设置地址一致时,用户程序清除SLEEP位,此时方可以接收数据字节,产生接收数据中断。识别地址字节l 空闲线模式:在地址字节前留一段静态空间没有附加地址位,数据10个, 效率比地址位模式高一般应用于典型的非多处理器的SCI通信l 地址位模式:每个字节增加一个地址附加位小块数据时更有效,数据块之间不需要等待高速传送时,程序不可避免地要加入空闲位。SCI的TX和RX控制特点l 用户选择多处理器工作模式,ADDR/IDLE MODE位,SCICCR两种模式下都可以控制SCI发送器/接收器的工作状态l 发送唤醒标志,TXWAKE位,SCICTL1l 接收唤醒标志,RXWAKE位,SCIRXSTl 休眠标志,SLEEP位,SCICTL1接收步骤(1) 接收地址块时,SCI端口唤醒并申请中断读取第一帧数据,其中包括目的地址(2) 中断进入ISR,核对地址与保存在内存中的器件地址(3) 地址相符,则CPU清除SLEEP位并读块的其余数据如果不符,则退出ISR,保持SLEEP位在下一个块开始之前不接收中断。4.5 SCI的中断l SCI模块有独立的发送/接收外围中断向量l 外围中断请求可以是最高优先级,也可以是低优先级(1)由PIE控制器的优先级控制位决定(2)接收优先级 发送优先级l RX/BK INTENA(SCICTRL21)=1: (1) SCI接收到完整的帧,且RXSHFàSCIRXBUF RXRDY(SCIRXST6)=1,产生中断(2) 间断测试条件发生(丢失一个停止位后保持连续10个低电平) RBKDT(SCIRXST5)=1,产生中断l TX INTENA(SCICTRL20)=1:(1) SCITXBUFàTXSHF TXRDY(SCICTL27)=1,产生中断l RX ERROR INTENA(SCICTRL16)=1:(1) 传送出错 RX ERROR(SCIRXST7)=1,产生中断五、程序代码设计 5.1 CPU Timers的初始化配置程序代码#include "DSP28_Device.h"struct CPUTIMER_VARS CpuTimer0;struct CPUTIMER_VARS CpuTimer1;struct CPUTIMER_VARS CpuTimer2;/-/ InitCpuTimers: /-/ This function initializes all three CPU timers to a known state./void InitCpuTimers(void)/ Initialize address pointers to respective timer registers:CpuTimer0.RegsAddr = &CpuTimer0Regs;CpuTimer1.RegsAddr = &CpuTimer1Regs;CpuTimer2.RegsAddr = &CpuTimer2Regs;/ Initialize timer period to maximum:CpuTimer0Regs.PRD.all = 0xFFFFFFFF;CpuTimer1Regs.PRD.all = 0xFFFFFFFF;CpuTimer2Regs.PRD.all = 0xFFFFFFFF;/ Initialize pre-scale counter to divide by 1 (SYSCLKOUT):CpuTimer0Regs.TPR.all = 0;CpuTimer0Regs.TPRH.all = 0;/ Make sure timers are stopped:CpuTimer0Regs.TCR.bit.TSS = 1; CpuTimer1Regs.TCR.bit.TSS = 1; CpuTimer2Regs.TCR.bit.TSS = 1; / Reload all counter registers with period values:CpuTimer0Regs.TCR.bit.TRB = 1; CpuTimer1Regs.TCR.bit.TRB = 1; CpuTimer2Regs.TCR.bit.TRB = 1; / Reset interrupt counters:CpuTimer0.InterruptCount = 0;CpuTimer1.InterruptCount = 0;CpuTimer2.InterruptCount = 0;/-/ ConfigCpuTimer: /-/ This function initializes the selected timer to the period specified/ by the "Freq" and "Period" parameters. The "Freq" is entered as "MHz"/ and the period in "uSeconds". The timer is held in the stopped state/ after configuration./void ConfigCpuTimer(struct CPUTIMER_VARS *Timer, float Freq, float Period)Uint32 temp;/ Initialize timer period:Timer->CPUFreqInMHz = Freq;Timer->PeriodInUSec = Period;temp = (long) (Freq * Period);Timer->RegsAddr->PRD.all = temp;/ Set pre-scale counter to divide by 1 (SYSCLKOUT):Timer->RegsAddr->TPR.all = 0;Timer->RegsAddr->TPRH.all = 0;/ Initialize timer control register:Timer->RegsAddr->TCR.bit.POL = 0; / 0 = Pulse LowTimer->RegsAddr->TCR.bit.TOG =0; / 0 = No Toggle, POL bit defines actionTimer->RegsAddr->TCR.bit.TSS = 1; / 1 = Stop timer, 0 = Start/Restart Timer Timer->RegsAddr->TCR.bit.TRB = 1; / 1 = reload timerTimer->RegsAddr->TCR.bit.FRCEN = 0; / Force output enable (not used)Timer->RegsAddr->TCR.bit.PWIDTH = 7; / 7+1 = 8 SYSCLKOUT cycle pulse width Timer->RegsAddr->TCR.bit.SOFT = 1;Timer->RegsAddr->TCR.bit.FREE = 1; / Timer Free RunTimer->RegsAddr->TCR.bit.TIE = 1; / 0 = Disable/ 1 = Enable Timer Interrupt/ Reset interrupt counter:Timer->InterruptCount = 0;/=/ No more.5.2主程序代码#include <math.h>#include "DSP28_Device.h"unsigned int Rbuf100, Tbuf100;unsigned int Ri = 0;unsigned int Ti = 0;unsigned int Tn = 0;/=unsigned char title = " DSP课程设计-秒表 rn"unsigned char nunm = " rn"unsigned int cnt = 0;interrupt void cpu_timer0_isr();/void main(void)int16 i;int16 flag=0;/*初始化系统*/InitSysCtrl();/*关中断*/DINT;IER = 0x0000;IFR = 0x0000;/*初始化PIE中断*/InitPieCtrl();/*初始化PIE中断矢量表*/InitPieVectTable();EALLOW;PieVectTable.TINT0 = &cpu_timer0_isr;EDIS;/*初始化SCIA寄存器*/ InitSci(); InitCpuTimers(); ConfigCpuTimer(&CpuTimer0,150,); StartCpuTimer0(); IER|=M_INT1; PieCtrl.PIEIER1.bit.INTx7 = 1; EINT; ERTM; /*开中断*/EINT;/ Enable Global interrupt INTMERTM;/ Enable Global realtime interrupt DBGMfor(;)if(flag=0)for(i=0; titlei!=0; i+)Tbufi = titlei;Tn = i;Ti = 0;flag = 1;if(flag=2)for(i=0; nunmi!=0; i+)Tbufi = nunmi;Tn = i;Ti = 0;flag = 3;if(flag=4)/if(SciaTx_Ready() = 1) && (Tn!=0)SciaRegs.SCITXBUF = TbufTi;Ti += 1;Tn -= 1;if(Tn=0)Ti = 0;flag += 1;if(SciaRx_Ready() = 1)RbufRi = SciaRegs.SCIRXBUF.all;if(RbufRi=0x0a)for(i=0; i<=Ri; i+) Tbufi = Rbufi;Tn = Ri+1;Ti = 0;Ri = 0;else Ri += 1; void Conv()/cnt -> TBufint zc;cnt+;cnt%=100;zc=cnt;/*Tbuf3=zc%10+'0'zc=zc/10;Tbuf2=zc%10+'0'zc=zc/10;*/Tbuf1=zc%10+'0'zc=zc/10;Tbuf0=zc%10+'0'Tn = 4;Ti = 0;interrupt void cpu_timer0_isr(void)Conv();CpuTimer0.InterruptCount+;PieCtrl.PIEACK.all = PIEACK_GROUP1;/=/ No more./=六、设计总结 在这次dsp设计中,充分锻炼了我的独立性,设计自己的方案,锻炼自己独立思考的能力。当然,一个项目仅靠一个人的力量是有限的,另一方面,大家又互相帮助,遇到问题时,先是独立思考,当实在不行时。我们可以一起讨论,要是在解决不了的话,我们就去请教老师,总之是尽量达成想要实现的结果。通过设计,也使我们加深了对所学知识的理解,通过实践运用所学的知识,对我们很有帮助,只有通过动手发现自己的不足,才能在以后的道路上改进。时间的分配也是问题,做什么事都要将时间合理的布局,只有时间安排好了,做事的效率才能提起来。总之,通过课程设计,我得到了很多的经验和教训。七、参考文献1万山明,TMS320F281xDSP原理与应用实例,北京航空航天大学出版社,2007.7。2DSP乐园,3 李宏、张家田,液晶显示器件应用技术,机械工业出版社,2005.34郑红、王鹏、董云凤、吴冠,DSP应用系统设计实践,北京航空航天大学出版社,2006.4。

    注意事项

    本文(dsp课程设计报告(秒表-)(共16页).doc)为本站会员(飞****2)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开