dsp与计算机的异步串行通信课程设计方案论文.docx
- 文档编号:10570449
- 上传时间:2023-05-26
- 格式:DOCX
- 页数:19
- 大小:416.29KB
dsp与计算机的异步串行通信课程设计方案论文.docx
《dsp与计算机的异步串行通信课程设计方案论文.docx》由会员分享,可在线阅读,更多相关《dsp与计算机的异步串行通信课程设计方案论文.docx(19页珍藏版)》请在冰点文库上搜索。
dsp与计算机的异步串行通信课程设计方案论文
目录
1概述…………………………………………………………………………………….……1
2设计总体方案………………………………………………………………………….…....2
3设计详细原理…………………………………….………………..……..…......................3
3.1TL16C550简介………………………………………………………………………...3
3.1.1TL16C550的特点………………………………………………………………3
3.1.2TL16C550的引脚功能…………………………………………………………3
3.1.3TL16C550的内部寄存器………………………………………………………4
3.2TMS320VC5402简介………………………………………………...……………….5
3.3TMS320VC5402与PC异步串行通信硬件电路原理………………………………..5
3.4TMS320VC5402与PC异步串行通信软件设计原理………………………………..6
4设计步骤和过程……………………………………………………………….…………..7
4.1硬件电路设计…………………………………………………………………………7
4.2软件设计………………………………………………………………………………8
5调试与运行结果……………………………………………………………………….....10
6心得体会………………………………………………………………………………...11
参考文献……………………………………………………………………………….12
附录…………………………………………………………………………….……………..13
1概述
数字信号处理器由于具有高性能和灵活可编程的优点而得到广泛的应用,在许多应用系统中,实现DSP与PC机之间有效可靠的通信是系统设计的重要部分。
一般来说,通信可以分为串行和并行两种方式。
相对于并行方式而言,串行通信具有电路结构简单、通信距离远和成本较低等优点,因而在许多数据交换量不大的系统中得到了广泛的应用,行数据传输又可分为同步和异步两种模式,本次课程设计,综合运用数字信号处理、DSP技术课程以及其他有关先修课程的理论和生产实际知识去分析和解决DSP与计算机的异步串行通信。
数字信号处理器(DSP)近年来广泛应用于通信、图像处理、仪器仪表等方面。
DSP在数值处理方面运算能力强、处理速度快。
在通信方面,不同型号的DSP有不同的处理方式。
以TMS320VC5402(以下简称5402)为例,它没有专门的UART接口,但有2个多通道缓冲串口。
为了实现串行通信,很多情况下都用软件对5402的MCBSP口编程来模拟异步串口。
许多学者曾对应用MCBSP口实现串口进行过研究,萁硬件上依靠三个独立的信号——数据、帧同步、时钟来收发数据。
软件上则是通过编程模拟时钟的时序。
这种方法软件编程比较复杂.设计者对通讯协议非常了解才行,且占用很大的系统资源。
本文提出采用专门的异步通信芯片TLl6C550来扩展5402的串口,可以避开上述方法的缺点,使DSP器件实现稳定、准确的串行通信。
并将介绍5402和PC机之间通过16C550进行串行通信的具体实现方法。
该方案其有很强的灵活性和实用性,适用于很多需要进行串口通信的场合。
2课程设计总体方案
数字信号处理器(DSP)以其强大的数据处理能力广泛应用于高速数字信号处理。
但其通信接口的控制能力较弱。
例如TMS320VC54系列DSP只有同步串口,通常仅与具有同步通信接口的外设通信。
当DSP构成一个独立的处理单元时,往往需要与一些具有异步通信接口的外设如PC机交换数据。
通常解决DSP与PC机之间通信的方式有两种:
一种是利用DSP的通用I/O口XF和BIO构成串口,由软件设定通信波特率和握手方式。
这种方式编程复杂,并且占用大量CPU时间,通信速率慢;另一种是通过专用的异步通信器件实现DSP与PC机的高速数据通信。
本课程设计采用TI公司的异步通信器件TL16C550实现TMS320VC5402串口通信,该设计系统编程简单,具有较强的灵活性和实用性,适用于实时通信应用。
TMS320VC5402与PC机通过TL16C550扩展RS232串口实现串行通信,其总体方案如图1.1所示。
图2.1TMS320VC5402与PC机串行通信方案
3课程设计详细原理
3.1TL16C550简介
3.1.1TL16C550的特点
TL16C550是TI公司的异步通信器件,具有以下特点:
(1)供电电压为5V或3.3V;
(2)时钟频率高达16MHz,通信时波特率最高可达1M,可编程设定波特率发生器;
(3)具有标准的异步通信位,可选择5、6、7、8位串行数据位,可设置奇偶校验或无校验模式,停止位长度为1、1.5、2;
(4)独立控制发送、接收、线状态以及中断设置;
(5)软件设定的FIFO,减少CPU中断。
3.1.2TL16C550的引脚功能
TL16C550采用44引脚PLCC封装,其引脚排列如图3.1所示。
图3.1TL16C550引脚排列
TL16C550的主要引脚功能如下:
A0~A2:
片内寄存器的选择信号;
DO~D7:
双向8位数据线;
:
地址选通信号,该引脚有效时,可将CS0、CS1、
及A0、A1、A2锁存在TL16C550内部;
XIN、XOUT:
外部时钟,可接晶体振荡器或外部时钟信号;
CS0、CS1、
:
输入片选信号,当CS0=CS1=1且
=0时,选中TL6C550;
WR1、WR2、
、RD2:
读、写信号;
:
波特率输出;
MR:
主机复位;
INTRPT:
中断,共有4种情况可以触发中断:
接收错误、接收寄存器有数据到达、发送寄存器空、切换工作模式。
3.1.3TL16C550的内部寄存器
TLl6C550内部共有l1个寄存器。
这些寄存器分别用于设置通信参数、访问线路及MODEN的状态、发送和接收数据以及中断管理等。
这些寄存器的访问是通过3个地址线控制,LCR控制寄存器D7位DLA参与辅助定义。
当DLAB=0时,RBR/THR和IER才能正常工作;而DLAB=1时,则控制DIL和DLM写入。
表3-1列出了如何通过DLAB和A0、A1、A2选择片内寄存器,并给出了这些寄存器的中文名称及英文缩写。
表3-1TL16C550片内寄存器
DSP通过地址线对TL16C550进行控制,数据直接通过数据线传输。
DSP与TL16C550之间的数据传输简单,RBR/THR分别是接收和发送缓冲寄存器,它们之间的数据传输是通过DSP读写缓冲寄存器实现的。
3.2TMS320VC5402简介
TMS320VC5402是C5000系列中性价比较高的一颗芯片。
独特的6总线哈佛结构,使其能够6条流水线同时工作,工作频率达到100MHz。
VC5402除了使用VC54x系列中常用的通用I/O口(GeneralPurposeI/O,简称GPIO)外,还为用户提供了多个可选的GPIO:
HPI-8和McBSP。
TMS320VC5402的主要特性有:
(1)操作速率达100MIPS;
(2)具有先进的多总线结构(1条程序总线、3条数据总线和4条地址总线);
(3)40位算术逻辑运算单元(ALU),包括1个40位桶形移位寄存器和2个独立的40位累加器;
(4)17位并行乘法器与40位专用加法器相连,用于非流水式单周期乘法/累加(MAC)运算;
(5)双地址生成器,包括8个辅助寄存器和2个辅助寄存器算术运算单元(ARAU);
(6)数据/程序寻址空间1M16bit,内存4K16bitROM和16K16bit双存取RAM;
(7)内置可编程等待状态发生器、锁相环(PLL)时钟发生器、2个多通道缓冲串行口、1个8位并行与外部处理器通信的HPI口、2个16位定时器以及6通道DMA控制器;
(8)(8)低功耗,工作电源3.3V和1.8V(内核)。
由前面的分析可知,响应分析在数学上是一个具有38个自由度的二阶线性微分方程的数值积分问题[3,6-9]。
……
3.3TMS320VC5402与PC异步串行通信硬件电路原理
TMS320VC5402与PC机串行通信的硬件电路如图3.2所示。
图3.2中,TL16C550的CS0和CS1都接高电平,CS2接C5402的外部I/O空间,选择线IS。
当XIN、XOUT端外接1.8342MHz晶振时,C5402以28400的波特率与PC机通信,所以,波特率因子寄存器的低位设为02H,高位设为00H。
TLC16C550的数据线D0-D7直接与C5402的D0-D7数据线相连,TL16C550的片内寄存器选择线接C5402的A0-A2。
由于RS-232-C电路电平与CMOS电平不同,因此,RS232驱动器与CMOS电平连接时必须经过电平转换。
这里,我们采用MAX232完成这一功能,MAX232具有一个专有的低压降发送器输出级,在其以双电荷棒3.0V~5.5V供电时,可以获得真正的RS-232性能。
该器件只需4个1μF小型外接电容,可在维持RS-232输出电平的情况下确保运行于120kb/s数据率,因此十分适合高速串行通信场合。
利用RXRDY和TXRDY引入外部中断,从而系统工作在中断方式,RXRDY产生外部0中断(INT0),而TXRDY将产生外部1中断(INT1)。
图3.2TMS320VC5402与PC异步串行通信硬件接口电路
3.4TMS320VC5402与PC异步串行通信软件设计原理
系统软件设计包括PC机、TMS320VC5402以及TL16C550的初始化和通信协议等。
初始化的主要任务是设置操作所需要的参数。
这些参数包括串行通信时数据串的数据位数、停止位数、奇偶校验等。
另外,还需要设置发送和接收的波特率及中断方式。
其中需要注意的是由于系统工作在中断方式,应允许接收就绪中断和发送缓冲区空中断,相应地,中断允许寄存器的值应该设置为03H。
4课程设计步骤和过程
4.1硬件电路设计
TMS320VC5402通过TL16C550实现与PC机串行通信,电路图如图3.2所示。
TMS320VC5402采用双电源供电,内核电源是1.8V,接口电源是3.3V,所以与TMS320VC5402连接的器件最好选用供电电源为3.3V的器件。
TL16C550就是一款5V和3.3V均可以供电的器件,因而大大简化了硬件接口电路连接。
TL16C550的数据线DO~D7直接与TMS320VC5402的DO~D7数据线相连,实现数据的传输。
TL16C550的片内寄存器选择线与TMS320VC5402的地址线A0~A2相连。
当TL16C550的片选信号CS0、CS1为高电平,
为低电平时,TL16C550被选中。
CS0、CS1直接与高电平相连,
则与TMS320VC5402的
相连,从而避免与外部其他I/O口发生冲突。
TL16C550的读信号为
、RD2。
当
为低电平或RD2高电平,且TL16C550被选中时,可进行读操作。
写信号为
、WR2,当
为低电甲或WR2为高电平,且TL16C550被选中时,可进行写操作。
TL16C550的RD2、WR2直接与地连接(无效状态);TMS320VC5402的
、R/
通过或门与TL16C550的
连接;TMS320VC5402的R/
与
同或后,连接至
。
当TL16C550的XIN引脚和XOUT引脚间外接3.072MHZ晶体振荡器时,TMS320VC5402以9600波特率与PC机通信,根据波特率=基准时钟频率/(16x波特率因子),所以波特因子寄存器的低位设置为20H,高位设置为00H。
TL16C550的中断请求信号INTRPT直接连接至TMS320VC5402的外部中断
。
TL16C550的SIN引脚为串行数据输入引脚,SOUT为串行数据输出引脚。
这两条信号线连接到MAX232上,从而实现数据串行TTL/COMS电平与RS232电平的转换。
由于MAX232可以直接接收3.0V~5.5V的电压信号,所以可接收TL16C550的3.3V的电压信号,但是MAX232的输出电压为5V,所以其输出信号必须经过电阻分压才能送至TL16C550。
4.2软件设计
本系统软件设计包括PC机、TMS320VC5402以及TL16C550的初始化和通信协议。
初始化过程主要是设置所需参数。
这些参数包括串口通信时数据位数、停止位数、奇偶校验等。
另外,还需设置发送和接收的波特率以及中断方式。
串行通信主程序流程图如图4.1所示。
图4.1串行通信流程图
在对TMS320VC5402的初始化过程中,首先定义寄存器,例如对软件等待状态寄存器(SWWSR)和软件等待状态挖制寄存器(SWSR)的定义如下:
volatileint*SWWSR=Ox28:
volatileint*SWWSR=Ox2b;
然后对寄存器进行读写操作,如设置I/O、ROM和RAM的等待周期:
SWSR=0;//等待状态基数不变
SWWSR=0xfffff;//设置I/O等待周期为7,RAM等待周期为7,ROM等待周期为7。
同理,用C语言对TL16C550初始化,首先宏定义,IER宏定义为:
#defineIERportO1。
同理定义RBR、THR、FCR等寄存器。
采用3.072MHz的晶体振荡器,波特率为9600、字长为8bit、无校验位、1位停止位的数据流。
TL16C550寄存器的初始化C语言程序如下:
FCR=Ox03;//允许FIFO的发送和接收,同时清除已接收到的FIFO
LCR=LCR&0xFF7F;//设置DLAB=0
IER=0x00;//不设置中断请求
LCR=0x03;//字长为8bit、无校验位、1位停止位
MCR=0x00;//设置CTS控制输入输出
LCR=LCR&0x80;//设置DLAB=I
DLL=0x20;//波特翠为9600
DLM=0x00;
LCR=LCR&0xFF7F;//重新设置DLAB=0
初始化完成后,TMS320VC5402与PC机通过9600的速率传输数据。
如果要想得到不同的波特率,则只需向波特率因子寄存器中写入相应的值即可。
5调试与运行结果
图5.1调试运行结果图
如上图5.1所示,按下复位键后,串口调试助手窗口依次出现两行事先编辑的“hello,everyone!
”成功实现PC机与DSP之间的数据交换。
首先PC机将数据发送给DSP,然后DSP又将数据发给PC机。
在发送字符/数据窗口键入字符“s”,若采用手动发送,则窗口出现“ss”;若采用自动发送,则窗口连续出现“sssssssss…….”,按下复位键后,数据停止发送。
于是通过编写的DSP程序和对程序的运行调试,成功实现DSP和PC机之间的数据通信。
6心得体会
时间过得真快,转眼间已经有两个星期过去了,现在回想起来,往事还历历在目。
课程设计是培养学生综合运用所学知识,发现、提出、分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。
回顾起此次DSP原理及应用的课程设计,至今我仍感慨颇多。
从选题到定稿,从理论到实践,在整整两星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固……通过这次课程设计之后,一定把以前所学过的知识重新温故。
这次课程设计终于顺利完成了,在设计中遇到了很多问题,最后在老师的辛勤指导下,同学的帮助下终于迎刃而解。
在此我表示感谢!
在这次课程设计过程中,我们结合了课程中所学的理论知识,依据书上提供的DSP与文献中的TL16C550的原理的基础上来进行编程,这次课程设计我们学到了很多东西,虽然做出来的东西很基础,但是我们加深了对知识的理解和掌握,作为一名大四学生,我觉得做课程设计十分的有意义,这不仅是锻炼培养独立分析与解决问题的能力,也是一次团队合作开发过程。
参考文献
[1]邹彦.DSP原理及应用[M].北京:
电子工业出版社,2005,1.
[2]戴明桢.TMS320C54xDSP结构、原理及应用[M].北京航空航天大学出版社,2001,8.
[3]胡圣尧.DSP原理及应用[M].东南大学出版社,2008.7.
[4]清源科技.TMS320C54xDSP应用程序设计教程[M].机械工业出版社,2004,1.
[5]清源科技.TMS320C54x硬件开发教程[M].机械工业出版社,2003,1.
[6]蔡琳洁.DSP与PC机串口的高速数据通信的实现[J].电讯技术,2001,4.
附录
************************************************
*FileName:
ex3.asm*
*Descriptiion:
异步串行口实验*
************************************************
CMD文件:
MEMORY
{
PAGE0:
VECS:
origin=0xff80,length=0x80
PROG:
origin=0x1000,length=0x1000
PAGE1:
DATA:
origin=0x2000,length=0x1000
STACK:
origin=0x3000,length=0x1000
}
SECTIONS
{
.vectors:
{}>VECSPAGE0
.text:
{}>PROGPAGE0
.data:
{}>DATAPAGE1
.stack:
{}>STACKPAGE1
}
5000系列DSP汇编语言:
.title"ex3"
.global_c_int00
.mmregs
.def_c_int00
UART_BASE.set0x0000
THR.setUART_BASE+0x00
RBR.setUART_BASE+0x00
IIR.setUART_BASE+0x20
IER.setUART_BASE+0x10
FCR.setUART_BASE+0x20
LCR.setUART_BASE+0x30
MCR.setUART_BASE+0x40
LSR.setUART_BASE+0x50
MSR.setUART_BASE+0x60
SCR.setUART_BASE+0x70
DLL.setUART_BASE+0x00
DLM.setUART_BASE+0x10
BAUDLOW.set60h
BAUDHIGH.set61h
BAUDCTL.set62h
RDDLM.set63h
RDDLL.set64h
RDTEMP.set65h
IER_ADDR.set66h
FCR_ADDR.set67h
UART_STATUS.set68h
REV_ADDR.set69h
SEND_ADDR.set6ah
THRE.set0x0020
DR.set0x0001
LEN.set48
.data
SENDBUF:
.string"WelcometouseSanZhiDSPExperimentInstruments!
"
.sect".vectors"
rst:
B_c_int00
NOP
NOP
.space15*4*16
int0:
B_comm。
ST16550C中断信号连到外部中断0
NOP
NOP
int1:
B_comm
NOP
NOP
int2:
B_comm
NOP
NOP
.space13*4*16
.text
_c_int00:
LD#0h,DP
STM#3000h,SP
STM#07FFFh,SWWSR
STM#28h,AR1。
设置外部等待时间倍数
ST#0001h,*AR1
SSBXINTM
STM#0000h,CLKMD。
5MHz工作
tstBITFCLKMD,#1h
BCtst,TC
uart_init:
ST#00H,IER_ADDR。
禁止所有中断
PORTWIER_ADDR,IER
ST#00H,FCR_ADDR。
禁止FIFO
PORTWFCR_ADDR,FCR
PORTRLCR,RDTEMP。
设置波特率为9600bps
ORM#0080H,RDTEMP
PORTWRDTEMP,LCR
LD#0018H,A
AND#00FFH,A
STLA,BAUDLOW。
置波特率低位
PORTWBAUDLOW,DLL
LD#00H,A
STLA,BAUDHIGH
PORTWBAUDHIGH,DLM。
置波特率高位
ANDM#0FF7FH,RDTEMP
PORTWRDTEMP,LCR
LD#03H,A。
8BIT,1STOP,NOPARITY
STLA,BAUDCTL
PORTWBAUDCTL,LCR
STM#SENDBUF,AR0。
发送字符串
STM#LEN,BRC。
设置字符串长度
RPTBLOOP
READY:
PORTRLSR,UART_STATUS
BITFUART_STATUS,THRE
BCREADY,NTC。
等待发送完成
PORTW*AR0+,THR
LOOP:
NOP
NOP
ST#01H,IER_ADDR。
打开接受中断
PORTWIER_ADDR,IER
STM#0ffffh,IFR
STM#IMR,AR0
ORM#0007H,*AR0
RSBXINTM
susp:
NOP
NOP
Bsusp。
等待接收中断
_comm:
PSHM08h。
接收中断服务程序
PSHM09h
PSHM0ah
PSHMST0
PORTRLSR,UART_STATUS
BITFUART_STATUS,DR
BCend_comm,NTC
PORTRRBR,REV_ADDR。
把接收到的字符再发送出去
PORTWREV_ADDR,THR
end_comm:
POPMST0
POPM0Ah
POPM
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- dsp 计算机 异步 串行 通信 课程设计 方案 论文