DSP论文_第1页
DSP论文_第2页
DSP论文_第3页
DSP论文_第4页
DSP论文_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

湖北民族学院信息工程学院课程结业论文基于DSP2407A实现SCI串口通信摘 要此次研究是在实验的基础上,分析和探究TMS320LF240x 芯片,包括:TMS320LF240x 专用的C语言指令,相关寄存器,部分IO口,部分外部设备。尝试着通过算法指令,构建一个完整的“反射弧”,实现了串口和上位机的发送和接受功能,并且按照要求在算法中使用中断,深刻意识到串口通信的重要性,并能够加以变形,应用到实际生活中。通过动手查阅,动脑思考,动身设计,对TMS320LF240x 芯片的串口和上位机之间的协作有了更深刻的理解。从最开始的初步动机,仅仅是对TMS320LF240x 芯片充满好奇, 对比AT89C51 更加新颖等感兴趣,转化为内部动机,能够自主自发自动的研究TMS320LF240x。对将来的探索、研究和实践奠定一定的基础。关键词:TMS320LF240x,串口,上位机,中断,通信AbstractThis studyison the basis of experiment,the analysis and study ofTMS320LF240x chip,Including:TMS320LF240xspecial Clanguage instruction,the relevantregister,part of the IO port,Part of the externalequipment.Try through thealgorithm of instruction,construct a completereflex arc,Implementation of the sendandreceiveserialand PCfunction,andin accordance with the requirementsin the algorithm Interrupt,profoundly aware of the importanceof serial communication,and canbeapplied to the actualdeformation,In life.Through thepracticalinspection,the brain thinking,set outtodesign,the TMS320LF240x chip Collaborationbetween the serialand PCwill have a more profound understanding of.A preliminarydynamicstudentsfrom the beginning of the Machine,is onlyon the TMS320LF240x chipis full of curiosity,in contrast to theAT89C51 is morenovelinterestintointernal motivation,capable ofautonomous Research on TMS320LF240xautomatic.For futureexploration,research and practicelaid the certain Foundation.Keywords: TMS320LF240x,serial,PC,interrupt,communication一、实验目的通过实验学习使用TMS320LF240x 的扩展来控制外围设备的方法,并且使用中断,完成串口和上位机的发送和接收。二、实验设备台式计算机,TMS320LF240x 实验开发板,串口助手。三、实验原理1. TMS320LF2407A DSP 串行通信接口模块TMS320LF240x 器件包括串行通信接口SCI 模块。SCI 模块支持CPU 与其他使用标准格式的异步外设之间的数字通信。SCI 接收器和发送器是双缓冲的,每一个都有它自己单独的使能和中断标志位。两者都可以独立工作,或者在全双工的方式下同时工作。2. 串行通信接口设置(1)CPU 进行串行通信时可以采用两种方式,一种是轮询方式,即CPU 不断查询串口状态进行接收和发送,缺点是占用CPU 时间太多;另一种是中断方式,SCI 的接收和发送都可以产生中断信号,这样CPU 可以在完成其他一些工作的同时进行串行通信。(2)串行通信接口波特率计算。内部生成的串行时钟由系统时钟SYSCLK 频率和波特率选择寄存器决定。串行通信接口使用16 位波特率选择寄存器,数据传输的速度可以被编程为65000 多种不同的方式。不同通信模式下的串行通信接口异步波特率由下列方法决定:- BRR=165535 时的串行通信接口异步波特率:SCI 异步波特率=SYSCLK/ ( BRR+1)*8。其中,BRR=SYSCLK/(SCI 异步波特率*8)-1;- BRR=0 时的串行通信接口异步波特率:SCI 异步波特率=SYSCLK/16。这里BRR 等于波特率选择寄存器的16 位值。四、实验程序1.主程序#include 2407C.h#include stdio.h#include sci.hvoid tx()asm( setc INTM); / 禁止所有中断asm( clrc OVM); / 符号位扩展有效asm( clrc SXM); / 累加器中结果正常溢出SCSR1 = 0x81fe; / CLKIN=10MWDCR = 0x6f; / 把看门狗关闭void sci_INIT()IMR |= (1 4);SCSR1 |= (1 6); / 打开SCI 时钟MCRA |= (1 1)|(1 0) ); / IO 口设为复用功能SCICCR |= (7 SCICHAR); / 8 位字符SCICTL2 |= (1 TXINT)|(1 RXINT); / 使能接收和发送中断SCIPRI |= (1 SCITXP)|(1 SCIRXP); / 接收和发送用低优先级SCIHBAUD = 0x02; / 波特率设为9600SCILBAUD = 0x08;SCICTL1 |= (1 SWRST)|(1 TXENA)|(1 RXENA); / 使能接收和发送void sci_sentchar(unsigned char data) /发送一个字节while(SCICTL2 & (1 TXRDY) = 0)continue;SCITXBUF =data;void main()tx(); /调用初始化程序sci_INIT(); /进入中断程序asm( clrc INTM);while(1)void interrupt INT5_ISR(void)unsigned char i;if(SCIRXST & (1 RXRDY) /串口接收数据i=SCIRXBUF;sci_sentchar(i);asm( clrc INTM);void interrupt PHANTOM(void) /处理没有使用的中断static int phantom_count;phantom_count+;return;2.中断向量表 在主程序中使用了中断,就需要修改中断向量表。*文件名: vector_c.asm描述和说明: LF240x DSP 中断向量表(C 语言软件工程模板)*.ref _c_int0 ;boot.obj 中的C 语言入口处.ref _PHANTOM ;假中断向量.ref _INT5_ISR.sect .vectors ;以下代码为用户为中断向量表自定义的段rsvect B _c_int0 ;复位向量,当系统复位,则从此处开始执行int1 B _PHANTOM ;中断1,目前不启用,进入假中断后立即返回int2 B _PHANTOM ;中断2,用于定时器1int3 B _PHANTOM ;中断3,目前不启用,进入假中断后立即返回int4 B _PHANTOM ;中断4,目前不启用,进入假中断后立即返回int5 B _INT5_ISR ;中断5,目前不启用,进入假中断后立即返回int6 B _PHANTOM ;中断6,目前不启用,进入假中断后立即返回;中断7,保留int8 B _PHANTOM ;中断8,用户自定义中断int9 B _PHANTOM ;中断9,用户自定义中断int10 B _PHANTOM ;中断10,用户自定义中断int11 B _PHANTOM ;中断11,用户自定义中断int12 B _PHANTOM ;中断12,用户自定义中断int13 B _PHANTOM ;中断13,用户自定义中断int14 B _PHANTOM ;中断14,用户自定义中断int15 B _PHANTOM ;中断15,用户自定义中断int16 B _PHANTOM ;中断16,用户自定义中断int17 B _PHANTOM ;中断17,TRAPint18 B _PHANTOM ;中断18,NMI;中断19,保留int20 B_PHANTOM ;中断20,用户自定义中断int21 B _PHANTOM ;中断21,用户自定义中断int22 B _PHANTOM ;中断22,用户自定义中断int23 B _PHANTOM ;中断23,用户自定义中断int24 B _PHANTOM ;中断24,用户自定义中断int25 B _PHANTOM ;中断25,用户自定义中断int26 B _PHANTOM ;中断26,用户自定义中断int27 B _PHANTOM ;中断27,用户自定义中断int28 B _PHANTOM ;中断28,用户自定义中断int29 B _PHANTOM ;中断29,用户自定义中断int30 B _PHANTOM ;中断30,用户自定义中断int31 B _PHANTOM ;中断31,用户自定义中断3.程序反思编写和修改程序,外部提供了比较多的技术,使得程序沿着某一方向编写。主程序调用子程序,让这个算法变得更加简练。中断算法,能避免查询方式耗费CPU 更多时间的问题,提高CPU 的运算效率,让程序更加人性化,更加有亮点。在调试程序的过程中,我遇到的问题就是,没办法检验程序的可靠性。主要问题是,程序的顺序问题,先放什么再放什么,是很讲究的,否则就会出现系统的干扰,就会出现“没办法检验程序的可靠性”的问题。中断向量表的使用,则要求平时多看看书。看看书上是怎么修改的,想想为什么修改这些地方。1.主程序#include2407c.h/*#define buff *(volatile unsigned int *)0x0900)*/unsigned int *buff = ( unsigned int * )0x0900;unsigned int i=0;void main()asm( setc INTM);asm( clrc OVM);asm( clrc SXM);IFR = 0xffff;SCSR1 = 0x81fe;WDCR = 0x6f;SCICCR = 0x07;SCICTL1 = 0x03;SCICTL2 = 0x03;SCIHBAUD = 0x02;SCILBAUD = 0x08;SCICTL1 = 0x33;SCIPRI = 0x60;MCRA = MCRA|0x03;IMR = 0x10;asm( clrc INTM);SCITXBUF = ;while(1);void UartSend()const char *var=F2407A UART is OK!;static int j=0;if(jstrlen(var) return;SCITXBUF = varj+;IFR = 0x0010;asm( clrc INTM);void UartRec()buffi = SCIRXBUF;i+;IFR = 0x0010;asm( clrc INTM);void interrupt uarttr()switch(PIVR)case 6:UartRec();case 7:UartSend();void interrupt PHANTOM(void)static int phantom_count;phantom_count+;return;2.中断向量表(部分)*文件名: vector_c.asm描述和说明: LF240x DSP 中断向量表(C 语言软件工程模板)*.ref _c_int0 ;boot.obj 中的C 语言入口处.ref _PHANTOM ;假中断向量.ref _uarttr.sect .vectors ;以下代码为用户为中断向量表自定义的段rsvect B _c_int0 ;复位向量,当系统复位,则从此处开始执行int1 B _PHANTOM ;中断1,目前不启用,进入假中断后立即返回int2 B _PHANTOM ;中断2,用于定时器1int3 B _PHANTOM ;中断3,目前不启用,进入假中断后立即返回int4 B _PHANTOM ;中断4,目前不启用,进入假中断后立即返回int5 B _uarttr ;中断5,使用SCI 中断int6 B _

温馨提示

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

评论

0/150

提交评论