DSP与计算机的异步串行通信(长沙理工大学课程设计).doc_第1页
DSP与计算机的异步串行通信(长沙理工大学课程设计).doc_第2页
DSP与计算机的异步串行通信(长沙理工大学课程设计).doc_第3页
DSP与计算机的异步串行通信(长沙理工大学课程设计).doc_第4页
DSP与计算机的异步串行通信(长沙理工大学课程设计).doc_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

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

文档简介

城南学院 DSP与计算机的异步串行通信DSP与计算机的异步串行通信 摘要 本次DSP原理课程设计的主要任务是基于美国TI 公司推出的TMS320F2812 DSP芯片的DSP与计算机的异步串行通信设计与实现。TMS320F2812包含了SCI模块, SCI是Serial Communication Interface的简称,即串行通信接口。SCI是一个双线的异步串口,具有接收和发送两根信号线的异步串口,一般看做UART(通用异步接收/发送装置)。SCI模块提供了DSP与其他标准NRZ(Non-Return-to-Zero)格式的异步外围之间的数字通讯。所以利用TMS320F2812实现DSP与计算机的异步串行通信。本文主要介绍了TMS320F2812 基本结构、开发环境及其在串行通信中的软硬件设计。关键词:DSP;TMS320F2812;异步串行通信;SCI;UART目 录1 绪论11.1 课程设计内容及要求11.2 TMS320F2812芯片概述22 开发环境62.1 DSP EXPIV型教学实验系统62.2 Code Composer Studio 3.363 SCI模块的工作原理73.1 SCI模块的概述和特点73.2 SCI模块的工作原理83.3 SCI模块的波特率设置94 DSP异步串行通信硬件电路设计104.1 DSP最小系统的硬件设计104.2 DSP串口电路的硬件设计135 DSP异步串行通信软件程序设计145.1 查询方式实现数据的发送和接收155.2 中断方式实现数据的发送和接收175.3 程序运行结果206 心得体会217 参考文献22附录 DSP与计算机异步串行通信程序23 1 绪论1.1 课程设计内容及要求DSP课程设计是对数字信号处理、DSP原理及应用等课程的较全面练习和训练,是实践教学中的一个重要环节。通过本次课程设计,综合运用数字信号处理、DSP技术课程以及其他有关先修课程的理论和生产实际知识去分析和解决具体问题,并使所学知识得到进一步巩固、深化和发展。初步培养学生对工程设计的独立工作能力、电子系统设计的一般方法。通过课程设计树立正确的设计思想,提高学生分析问题、解决问题的能力。进行设计基本技能的训练,如查阅设计资料和手册、程序的设计、调试等。本题目要求实现DSP与计算机的异步串行通信,设计目的在于了解DSP与PC机串行通信的实现软硬件方案,了解DSP的中断系统,掌握DSP的I/O工作方式。(1)设计DSP与PC的异步通讯接口电路,实现串行数据的发送与接收(2)通过编写DSP程序,实现DSP与PC机之间的数据交换。(3)要求详细叙述DSP与PC异步通讯接口设计方案以及控制的编程。(4)按要求编写课程设计报告书,正确、完整的阐述设计和实验结果。(5)在报告中绘制程序的流程图,并文字说明。1.2 TMS320F2812芯片概述 TMS320F2812 是美国TI公司推出的32位定点DSP芯片,采用了先进的哈佛总线结构,将程序和数据放在不同的存储空间,每个存储空间都可以独立访问,从而使数据吞吐量提高了一倍。TMS320F2812的硬件特点如表1所列。表1 TMS320F2812的硬件特点特 征F2812指令周期(150MHz)6.67nsSRAM(16位/字)18K3.3V片内Flash(16位/字)128K片内Flash/SRAM的密钥有Boot ROM有掩膜ROM有外部存储器接口有事件管理器EVA和EVBEVA、EVB通用定时器4比较寄存器/脉宽调制16捕获/正交解码脉冲电路6/2看门狗定时器有12位的ADC有ADC通道数1632位的CPU定时器3串行外围接口有串行通信接口(SCI)A和BSCIA、SCIB控制器局域网络有多通道缓冲串行接口有数字输入/输出引脚(共享)有外部中断源3供电电压核心电压1.8VI/O电压3.3V封装179针GHH176针PGF工作温度范围A:-40+85S:-40+125TMS320F2812的功能框图如图1所示。TMS320F2812内含128K16位的片内Flash存储器,18K16位的RAM,4K16位的ROM,数学运算表,从而大大改善了应用的灵活性。128位的密码保护机制有效的保护了产品的知识产权。两个事件管理器模块为电机及功率变换控制提供了良好的控制功能。16通道高性能12位ADC单元提供两个采样保持电路,可以实现双通道信号同步采样。TMS320F2812片内含有丰富的外设资源,已基本满足工艺控制的需要,大大降低了硬件电路的设计难度,优良的性价比使得其能够被广泛使用。图1 TMS320F2812的功能框图 TMS320F2812芯片的封装方式有179针的GHH球形网络阵列BGA封装和176引脚的PGF低剖面四芯线扁平LQFP封装。BGA封装的底视图如图2所示。LQFP封装的顶视图如图3所示。图2 TMS320F2812芯片179BGA封装底视图 图3 TMS320F2812芯片176引脚LQFP封装顶视图2 开发环境2.1 DSP EXPIV型教学实验系统EL-DSP-EXPIV教学实验系统是一款DSP教学实验系统。该系统采用模块化分离式结构,便于用户使用、扩展和二次开发。适合信号处理、电子信息、计算机、自动化、测控等相关专业的教学实验及科研研发。同时本系统也是大学生电子设计竞赛的理想开发平台。该系统采用双CPU设计,实现了DSP多处理器的协调工作,支持54X系列和2X系列的CPU板。可根据自己的需求选用不同类型的CPU板,所有CPU板是完全兼容的。在不需要改变任何配置情况下,更换CPU板即可做不同类型的DSP实验。通过“E_lab”和“Techv”扩展总线,可以扩展机、电、声、光等不同领域的扩展模块,完成数据采集、图象处理、通讯、网络、控制等扩展实验。除此之外,在实验箱上有丰富的外围扩展资源,可以完成DSP基础实验、算法实验、编解码实验、双CPU综合实验、扩展实验。2.2 Code Composer Studio 3.3CCS(Code Composer Studio)是开发DSP时所需的软件开发环境,即编写、调试DSP代码都需要在CCS软件中进行。Code Composer Studio软件包含一整套用于开发和调试嵌入式应用的工具。它包含适用于每个 TI 器件系列的编译器、源码编辑器、项目构建环境、调试器、描述器、仿真器以及多种其它功能。CCS IDE 提供了单个用户界面,可帮助您完成应用开发流程的每个步骤。借助于精密的高效工具,用户能够利用熟悉的工具和界面快速上手并将功能添加至他们的应用。3 SCI模块的工作原理 3.1 SCI模块的概述和特点TMS320F2812包含了两个相同SCI模块,即SCIA和SCIB。SCI接口采用双线通信的异步串行通信接口,具有接收和发送两根信号线的异步串口,一般看做UART(通用异步接收/发送装置)。 为减小串口通信时CPU开销,F2812的串口支持16级接收和发送FIFO。SCI模块提供了DSP与其他标准NRZ(Non-Return-to-Zero)格式的异步外围之间的数字通讯。当不使用FIFO时,SCI接收器和发送器采用双级缓冲传送数据,SCI接收器和发送器有自己的独立使能和中断位,可以独立的操作,在全双工模式下也可以同时操作。为保证数据完整,SCI模块对接收到的数据进行间断、极性、超限和帧错误检测。通过对16位的波特率控制寄存器进行编程,配置不同的SCI通信速率。所以利用TMS320F2812实现DSP与计算机的异步串行通信。SCIA和SCIB的功能是相同的,只是寄存器的命名有所不同,所以仅以SCIA为例作介绍。SCIA与CPU的接口如图4所示。图4 SCIA同CPU之间的接口3.2 SCI模块的工作原理SCI模块的工作原理如图5所示,图中数字8表示8位数据并行传输。SCI模块基友独立的数据发送器和数据接收器,这样就能够保证SCI既能同时进行,也能够独立进行发送和接收的操作。图5 SCI模块的工作原理SCI接收数据的过程如下:接收移位寄存器 RXSHF逐位逐位的接收来自于SCIRXD引脚的数据;如果SCI的接收功能使能,RXSHF将这些数据传输给接收缓冲寄存器SCIRXBUF,CPU就能从SCIRXBUF读取外部发送来的数据;如果FIFO功能使能的话,SCIRXBUF会将数据加载到RX FIFO的队列中,CPU再从FIFO的队列读取数据。SCI发送数据的过程如下:发送数据缓冲寄存器SCITXBUF从TX FIFO中获取由CPU加载的需要发送的数据;SCITXBUF将数据传输给发送移位寄存器TXSHF;如果SCI的发送功能使能,TXSHF则将接收到的数据逐位逐位的移到SCITXD引脚上。 3.3 SCI模块的波特率设置TMS320F2812的每个SCI模块都有两个8位的波特率寄存器:SCIHBAUD和SCILBAUD,通过编程可以实现达64K不同的速率。SCI模块通信波特率与波特率选择寄存器之间的关系如式(1)所示: (1) 其中 BRR为SCI波特率选择寄存器中的值,从十进制转换成十六进制后,其高8位赋值给 SCIHBAUD,低8位赋值给SCILBAUD。需要提醒的是,式1 所示的波特率公式适用于1BRR65 535的情况。当BRR=0是,波特率如公式(2)所示: (2)BRR的值是16位波特率选择寄存器内的值,其选择值如表2所示:理想波特率BRR精确波特率/bps错误百分比/%24001952(7A0H)240004800976(3D0H)4798-0.049600487(1E1H)96060.0619200243(00F3H)192110.0638400121(0079H)384220.06表2 LSPCLK时钟频率是37.5MHZ波特率值选择表在进行串口通信时,双方设备都必须以相同的数据格式和波特率进行通信,否则通信会失败。4 DSP异步串行通信硬件电路设计4.1 DSP最小系统的硬件设计DSP最小系统是保证DSP可以正常工作的最少硬件构成 。对于一般DSP内部资源已经能够满足系统需要的,可以采用最小系统。基本上DSP都包括片内程序存储器,容量也足够用,因此无需加外部程序存储器。加外部存储器的最大优点就是每次调试程序的时候可以不通过内部FLASH烧写,而将程序载入外存储器调试即可。DSP最小系统只要系统包括电源、复位、晶振、JTAG电路就可以构成最小系统。图6 TMS320X2812最小系统TMS320F2812工作时所要求的电压为两部分:3.3V的FLASH电压和1.8V的内核电压。TMS320F2812对电源的要求十分敏感,所以采用电压精度较高的电源芯片TPS767D301。TPS767D301芯片输入电压为+5V,芯片起振,正常工作之后,输出3.3V和1.8V两种电压供DSP使用。图7为电源产生电路。图7 电源产生电路由于TPS767D301芯片本身能够产生复位信号,这个复位信号可以直接被DSP使用,所以不用为DSP再设计专门的复位电路。在TMS320F2812的实际设计中还要有JTAG下载口电路,考虑到JTAG下载口的抗干扰性,在与DSP相连接的端口都采用上拉设计。图8为JTAG下载电路。图8 JTAG下载电路4.2 DSP串口电路的硬件设计串行通信是指使用一条数据线(另外需要地线,可能还需要控制线),将数据一位一位地依次传输,每一位数据占据一个固定的时间长度。其只需要少数几条线就可以在系统间交换信息,特别使用于计算机与计算机、计算机与外设之间的远距离通信。使用串口通信时,发送和接收到的每一个字符实际上都是一次一位的传送的,每一位为1或者为0。如图9所示。 图9 串口通信 TMS320F2812芯片内部集成的SCI模块,通信接口有SCITXD(SCI发送输出引脚)和SCIRXD(SCI接收输入引脚)两个外部引脚。用RS232C进行信号电平转换。TMS320F2812的RS232串口电路如图10所示。图10 RS232串口电路5 DSP异步串行通信软件程序设计在进行数据发送或接收之前首先要对串口相关寄存器进行配置,一般包括波特率、起始位、数据位、停止位和校验位等。 然后串口配置完后就是对串口的打开和读写操作。最后才能进行数据的发送或接收。程序流程图如图11所示。 图11 程序流程图SCI实现数据的接收或者发送可以采用查询的方法,也可以采用中断的方法,下面将分别介绍。5.1 查询方式实现数据的发送和接收查询方式,就是通过查询发送缓冲器的就绪标志位TXRDY和接收缓冲器的就绪标志位RXRDY来判断SCI是否做好了发送或者接收数据的准备。使用查询方式发送或者接收数据的程序结构如下:#include DSP281x_Device.hunsigned int Sci_VarRx100;/用于存放收到的数据unsigned int i;unsigned int Send_Flag; /发送标志位。1:有数据要发送 void Initsci(void) /UART初始化子程序 SciaRegs.SCICCR.all=0x0007; /1位停止位,用奇校验,禁用回馈测试, /普通协议模式,8位数据位 SciaRegs.SCICTL1.all=0x0003; /禁止接收错误中断,禁用传输唤醒 /禁用休眠模式,使能数据发送和接收 SciaRegs.SCIHBAUD=0x01; SciaRegs.SCILBAUD=0xf3; /150M CLKOUT,波特率为19 200 SciaRegs.SCICTL2.all=0x0002;/使用接收中断,禁用发送中断 SciaRegs.SCIPRI.all=0x0010; /高中断优先级, /仿真挂起时完成当前操作 SciaRegs.SCICTL1.all =0x0023;/ Relinquish SCI from Reset void main(void) InitSysCtrl(); DINT; IER = 0x0000; IFR = 0x0000; InitPieCtrl(); InitPieVectTable(); InitGpio(); Initsci();/初始化SCIAFor(i=0;i100;i+)/初始化数据变量Sci_VarRxi=0;i=0;Send_Flag=0;For(;)/查询方式实现发送功能if(SciaTx_Ready() = 1)&(Send_Flag=1)SciaRegs.SCITXBUF=Sci_VarRxi;/发送数据Send_Flag=0;/清除中断标志位i+;if(i=100)i=0;/查询方式实现接收功能 if(SciaRx_Ready() = 1) Sci_VarRxi=ciaRegs.SCIRXBUF.all;/接收数据 Send_Flag=1; 5.2 中断方式实现数据的发送和接收中断方式,根据前面所学的三级中断的知识,必须使能外设自己的中断、PIE中断和CPU中断。SCIA的发送和接收中断分别位于PIE模块第9组的第1和第2 位,同时对应于CPU中断的INT9。前面所述的TXRDY是中断标志位,当该位置1时,就会产生发送中断事件,如果各级中断都已经使能,则会响应SCI的发送中断函数。当接收中断标志位RXRDY置1时,就会产生接收中断标志。如果各级中断已经使能,则会响应SCI的接收中断。使用中断方式发送或者接收数据的程序结构如下:#include DSP281x_Device.hunsigned int Sci_VarRx8;/用于存放收到的数据unsigned int i;unsigned int j;unsigned int Send_Flag; /发送标志位。1:有数据要发送 void Initsci(void) /UART初始化子程序 SciaRegs.SCICCR.all=0x0007; /1位停止位,用奇校验,禁用回馈测试, /普通协议模式,8位数据位 SciaRegs.SCICTL1.all=0x0003; /禁止接收错误中断,禁用传输唤醒 /禁用休眠模式,使能数据发送和接收 SciaRegs.SCIHBAUD=0x01; SciaRegs.SCILBAUD=0xf3; /150M CLKOUT,波特率为19 200 SciaRegs.SCICTL2.all=0x0002;/使用接收中断,禁用发送中断 SciaRegs.SCIPRI.all=0x0010; /高中断优先级, /仿真挂起时完成当前操作 SciaRegs.SCICTL1.all =0x0023;/ Relinquish SCI from Reset void main() InitSysCtrl(); DINT; IER = 0x0000; IFR = 0x0000; InitPieCtrl(); InitPieVectTable(); InitGpio(); Initsci();/初始化SCIAFor(i=0;i8;i+)/初始化数据变量Sci_VarRxi=0;i=0;j=0;Send_Flag=0;/PIE 中断使能PieCtrl.PIEIER9.bit.INTx1=1; /使能 SCI 发送中断PieCtrl.PIEIER9.bit.INTx2=1;/使能 SCI 接收中断IER |= M_INT9; /开 CPU 中断EINT; /开CPU中断ERTM; /开全局实时中断/接收中断服务函数interrupt void SCIRXINTA_ISR(void)/ SCI-A PieCtrl.PIEACK.bit.ACK9 = 1; /释放 PIE 同组中断 if(SciaRx_Ready() = 1) Sci_Receivedata = SciaRegs.SCIRXBUF.all;/SCI_Receivedata 用于存放接收的数据 EINT;/使能全局中断/发送中断服务函数interrupt void SCITXINTA_ISR(void)/ SCI-A PieCtrl.PIEACK.bit.ACK9 = 1; /释放PIE同组中断 if(SciaTx_Ready() = 1) SciaRegs.SCITXBUF =SCI_Senddata; /SCI_senddata为需要发送的数据 EINT; /使能全局中断5.3 程序运行结果打开串口调试助手,设置串口调试助手波特率等参数。在发送窗口输入想要发送的数据,如helloLYC94825,然后单击按钮“手动发送”,这时接收窗口立即显示数据helloLYC94825,说明DSP与计算机的异步串行通信成功。图13 程序运行结果6 心得体会 经过两个星期的数字信号处理课程设计,使我在课堂上学习的数字信号处理理论知识运用在了实践当中。在数字信号处理课程设计期间,我系统地了解了TMS320F2812 DSP的结构、资源和性能。学会了TMS320F2812 DSP外围硬件电路的设计,如最小系统和串口电路的设计。掌握了利用Code Composer Studio 3.3软件构建一个完整的DSP工程,学会了用C语言对DSP进行编程。在DSP课程设计的过程中也遇到了很多困难,刚开始就连建立工程都有问题,更不用说复杂的异步串行通信了,但困难总要克服,经过查阅资料和同学之间的讨论,问题得到了一一解决。同时在设计的过程中我发现了自己的不足之处,就是对之前所学过的知识理解得不够深刻,掌握得不够牢固,学习不够深入。通过这次课程设计之后,得以把以前所学过的知识重新温故,懂得了做实践不能浅尝辄止。这次课程设计最终得以顺利完成,最后对老师的辛勤指导和同学的热心帮表示衷心感谢! 7 参考文献1 顾卫钢. 手把手教你学DSP-基于TMS320x281x.北京航空航天大学出版社,2011.2 苏奎峰等. TMS320X281x DSP原理及C程序开发.北京航空航天大学出版社,2008.3 苏奎峰等. TMS320F2812原理与开发. 电子工业出版社,2005.4 万山明. TMS320F2812/2810原理及应用实例. 北京航空航天大学出版社,2007.5 TI公司著,胡广书等编译. TMS320C28X系列DSP的CPU与外设.清华大学出版社,2005.6 TI公司著,胡广书等编译. TMS320C28X系列DSP指令和编程指南.清华大学出版社,2005. 附录 DSP与计算机异步串行通信程序#include DSP281x_Device.h#include DSP281x_Examples.hchar send_buff = 0x00; /发送缓冲char rece_buff = 0x00; /接收缓冲Uint16 show = 0x00aa;interrupt void SCIRXINT_isr(void); /中断1中断子程序void Delay(Uint16 numbers); /长延迟void Initsci(void) /UART初始化子程序 SciaRegs.SCICCR.all=0x0007; /1位停止位,用奇校验,禁用回馈测试, /普通协议模式,8位数据位 SciaRegs.SCICTL1.all=0x0003; /禁止接收错误中断,禁用传输唤醒模

温馨提示

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

评论

0/150

提交评论