DSP与计算机的异步串行通信长沙理工大学课程设计.docx
- 文档编号:26990905
- 上传时间:2023-06-24
- 格式:DOCX
- 页数:27
- 大小:569.98KB
DSP与计算机的异步串行通信长沙理工大学课程设计.docx
《DSP与计算机的异步串行通信长沙理工大学课程设计.docx》由会员分享,可在线阅读,更多相关《DSP与计算机的异步串行通信长沙理工大学课程设计.docx(27页珍藏版)》请在冰豆网上搜索。
DSP与计算机的异步串行通信长沙理工大学课程设计
DSP与计算机的异步串行通信
摘要
本次DSP原理课程设计的主要任务是基于美国TI公司推出的TMS320F2812DSP芯片的DSP与计算机的异步串行通信设计与实现。
TMS320F2812包含了SCI模块,SCI是SerialCommunicationInterface的简称,即串行通信接口。
SCI是一个双线的异步串口,具有接收和发送两根信号线的异步串口,一般看做UART(通用异步接收/发送装置)。
SCI模块提供了DSP与其他标准NRZ(Non-Return-to-Zero)格式的异步外围之间的数字通讯。
所以利用TMS320F2812实现DSP与计算机的异步串行通信。
本文主要介绍了TMS320F2812基本结构、开发环境及其在串行通信中的软硬件设计。
关键词:
DSP;TMS320F2812;异步串行通信;SCI;UART
目录
1绪论1
1.1课程设计内容及要求1
1.2TMS320F2812芯片概述2
2开发环境6
2.1DSPEXPIV型教学实验系统6
2.2CodeComposerStudio3.36
3SCI模块的工作原理7
3.1SCI模块的概述和特点7
3.2SCI模块的工作原理8
3.3SCI模块的波特率设置9
4DSP异步串行通信硬件电路设计10
4.1DSP最小系统的硬件设计10
4.2DSP串口电路的硬件设计13
5DSP异步串行通信软件程序设计14
5.1查询方式实现数据的发送和接收15
5.2中断方式实现数据的发送和接收17
5.3程序运行结果20
6心得体会21
7参考文献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.2TMS320F2812芯片概述
TMS320F2812是美国TI公司推出的32位定点DSP芯片,采用了先进的哈佛总线结构,将程序和数据放在不同的存储空间,每个存储空间都可以独立访问,从而使数据吞吐量提高了一倍。
TMS320F2812的硬件特点如表1所列。
表1TMS320F2812的硬件特点
特征
F2812
指令周期(150MHz)
6.67ns
SRAM(16位/字)
18K
3.3V片内Flash(16位/字)
128K
片内Flash/SRAM的密钥
有
BootROM
有
掩膜ROM
有
外部存储器接口
有
事件管理器EVA和EVB
EVA、EVB
通用定时器
4
比较寄存器/脉宽调制
16
捕获/正交解码脉冲电路
6/2
看门狗定时器
有
12位的ADC
有
ADC通道数
16
32位的CPU定时器
3
串行外围接口
有
串行通信接口(SCI)A和B
SCIA、SCIB
控制器局域网络
有
多通道缓冲串行接口
有
数字输入/输出引脚(共享)
有
外部中断源
3
供电电压
核心电压1.8V
I/O电压3.3V
封装
179针GHH
176针PGF
工作温度范围
A:
-40—+85℃
S:
-40—+125℃
TMS320F2812的功能框图如图1所示。
TMS320F2812内含128K×16位的片内Flash存储器,18K×16位的RAM,4K×16位的ROM,数学运算表,从而大大改善了应用的灵活性。
128位的密码保护机制有效的保护了产品的知识产权。
两个事件管理器模块为电机及功率变换控制提供了良好的控制功能。
16通道高性能12位ADC单元提供两个采样保持电路,可以实现双通道信号同步采样。
TMS320F2812片内含有丰富的外设资源,已基本满足工艺控制的需要,大大降低了硬件电路的设计难度,优良的性价比使得其能够被广泛使用。
图1TMS320F2812的功能框图
TMS320F2812芯片的封装方式有179针的GHH球形网络阵列BGA封装和176引脚的PGF低剖面四芯线扁平LQFP封装。
BGA封装的底视图如图2所示。
LQFP封装的顶视图如图3所示。
图2TMS320F2812芯片179BGA封装底视图
图3TMS320F2812芯片176引脚LQFP封装顶视图
2开发环境
2.1DSPEXPIV型教学实验系统
EL-DSP-EXPIV教学实验系统是一款DSP教学实验系统。
该系统采用模块化分离式结构,便于用户使用、扩展和二次开发。
适合信号处理、电子信息、计算机、自动化、测控等相关专业的教学实验及科研研发。
同时本系统也是大学生电子设计竞赛的理想开发平台。
该系统采用双CPU设计,实现了DSP多处理器的协调工作,支持54X系列和2X系列的CPU板。
可根据自己的需求选用不同类型的CPU板,所有CPU板是完全兼容的。
在不需要改变任何配置情况下,更换CPU板即可做不同类型的DSP实验。
通过“E_lab”和“Techv”扩展总线,可以扩展机、电、声、光等不同领域的扩展模块,完成数据采集、图象处理、通讯、网络、控制等扩展实验。
除此之外,在实验箱上有丰富的外围扩展资源,可以完成DSP基础实验、算法实验、编解码实验、双CPU综合实验、扩展实验。
2.2CodeComposerStudio3.3
CCS(CodeComposerStudio)是开发DSP时所需的软件开发环境,即编写、调试DSP代码都需要在CCS软件中进行。
CodeComposerStudio软件包含一整套用于开发和调试嵌入式应用的工具。
它包含适用于每个TI器件系列的编译器、源码编辑器、项目构建环境、调试器、描述器、仿真器以及多种其它功能。
CCSIDE提供了单个用户界面,可帮助您完成应用开发流程的每个步骤。
借助于精密的高效工具,用户能够利用熟悉的工具和界面快速上手并将功能添加至他们的应用。
3SCI模块的工作原理
3.1SCI模块的概述和特点
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所示。
图4SCIA同CPU之间的接口
3.2SCI模块的工作原理
SCI模块的工作原理如图5所示,图中数字8表示8位数据并行传输。
SCI模块基友独立的数据发送器和数据接收器,这样就能够保证SCI既能同时进行,也能够独立进行发送和接收的操作。
图5SCI模块的工作原理
SCI接收数据的过程如下:
①接收移位寄存器RXSHF逐位逐位的接收来自于SCIRXD引脚的数据;
②如果SCI的接收功能使能,RXSHF将这些数据传输给接收缓冲寄存器SCIRXBUF,CPU就能从SCIRXBUF读取外部发送来的数据;
③如果FIFO功能使能的话,SCIRXBUF会将数据加载到RXFIFO的队列中,CPU再从FIFO的队列读取数据。
SCI发送数据的过程如下:
①发送数据缓冲寄存器SCITXBUF从TXFIFO中获取由CPU加载的需要发送的数据;
②SCITXBUF将数据传输给发送移位寄存器TXSHF;
③如果SCI的发送功能使能,TXSHF则将接收到的数据逐位逐位的移到SCITXD引脚上。
3.3SCI模块的波特率设置
TMS320F2812的每个SCI模块都有两个8位的波特率寄存器:
SCIHBAUD和SCILBAUD,通过编程可以实现达64K不同的速率。
SCI模块通信波特率与波特率选择寄存器之间的关系如式
(1)所示:
(1)
其中BRR为SCI波特率选择寄存器中的值,从十进制转换成十六进制后,其高8位赋值给SCIHBAUD,低8位赋值给SCILBAUD。
需要提醒的是,式1所示的波特率公式适用于1≤BRR≤65535的情况。
当BRR=0是,波特率如公式
(2)所示:
(2)
BRR的值是16位波特率选择寄存器内的值,其选择值如表2所示:
理想波特率
BRR
精确波特率/bps
错误百分比/%
2400
1952(7A0H)
2400
0
4800
976(3D0H)
4798
-0.04
9600
487(1E1H)
9606
0.06
19200
243(00F3H)
19211
0.06
38400
121(0079H)
38422
0.06
表2LSPCLK时钟频率是37.5MHZ波特率值选择表
在进行串口通信时,双方设备都必须以相同的数据格式和波特率进行通信,否则通信会失败。
4DSP异步串行通信硬件电路设计
4.1DSP最小系统的硬件设计
DSP最小系统是保证DSP可以正常工作的最少硬件构成。
对于一般DSP内部资源已经能够满足系统需要的,可以采用最小系统。
基本上DSP都包括片内程序存储器,容量也足够用,因此无需加外部程序存储器。
加外部存储器的最大优点就是每次调试程序的时候可以不通过内部FLASH烧写,而将程序载入外存储器调试即可。
DSP最小系统只要系统包括电源、复位、晶振、JTAG电路就可以构成最小系统。
图6TMS320X2812最小系统
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下载电路。
图8JTAG下载电路
4.2DSP串口电路的硬件设计
串行通信是指使用一条数据线(另外需要地线,可能还需要控制线),将数据一位一位地依次传输,每一位数据占据一个固定的时间长度。
其只需要少数几条线就可以在系统间交换信息,特别使用于计算机与计算机、计算机与外设之间的远距离通信。
使用串口通信时,发送和接收到的每一个字符实际上都是一次一位的传送的,每一位为1或者为0。
如图9所示。
图9串口通信
TMS320F2812芯片内部集成的SCI模块,通信接口有SCITXD(SCI发送输出引脚)和SCIRXD(SCI接收输入引脚)两个外部引脚。
用RS232C进行信号电平转换。
TMS320F2812的RS232串口电路如图10所示。
图10RS232串口电路
5DSP异步串行通信软件程序设计
在进行数据发送或接收之前首先要对串口相关寄存器进行配置,一般包括波特率、起始位、数据位、停止位和校验位等。
然后串口配置完后就是对串口的打开和读写操作。
最后才能进行数据的发送或接收。
程序流程图如图11所示。
图11程序流程图
SCI实现数据的接收或者发送可以采用查询的方法,也可以采用中断的方法,下面将分别介绍。
5.1查询方式实现数据的发送和接收
查询方式,就是通过查询发送缓冲器的就绪标志位TXRDY和接收缓冲器的就绪标志位RXRDY来判断SCI是否做好了发送或者接收数据的准备。
使用查询方式发送或者接收数据的程序结构如下:
#include"DSP281x_Device.h"
unsignedintSci_VarRx[100];//用于存放收到的数据
unsignedinti;
unsignedintSend_Flag;//发送标志位。
1:
有数据要发送
voidInitsci(void)//UART初始化子程序
{
SciaRegs.SCICCR.all=0x0007;//1位停止位,用奇校验,禁用回馈测试,
//普通协议模式,8位数据位
SciaRegs.SCICTL1.all=0x0003;//禁止接收错误中断,禁用传输唤醒
//禁用休眠模式,使能数据发送和接收
SciaRegs.SCIHBAUD=0x01;
SciaRegs.SCILBAUD=0xf3;//150MCLKOUT,波特率为19200
SciaRegs.SCICTL2.all=0x0002;//使用接收中断,禁用发送中断
SciaRegs.SCIPRI.all=0x0010;//高中断优先级,
//仿真挂起时完成当前操作
SciaRegs.SCICTL1.all=0x0023;//RelinquishSCIfromReset
}
voidmain(void)
{
InitSysCtrl();
DINT;
IER=0x0000;
IFR=0x0000;
InitPieCtrl();
InitPieVectTable();
InitGpio();
Initsci();//初始化SCIA
For(i=0;i<100;i++)//初始化数据变量
{
Sci_VarRx[i]=0;
}
i=0;
Send_Flag=0;
For(;;)
{
//查询方式实现发送功能
if((SciaTx_Ready()==1)&&(Send_Flag==1))
{
SciaRegs.SCITXBUF=Sci_VarRx[i];//发送数据
Send_Flag=0;//清除中断标志位
i++;
if(i==100)i=0;
}
//查询方式实现接收功能
if(SciaRx_Ready()==1)
{
Sci_VarRx[i]=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.h"
unsignedintSci_VarRx[8];//用于存放收到的数据
unsignedinti;
unsignedintj;
unsignedintSend_Flag;//发送标志位。
1:
有数据要发送
voidInitsci(void)//UART初始化子程序
{
SciaRegs.SCICCR.all=0x0007;//1位停止位,用奇校验,禁用回馈测试,
//普通协议模式,8位数据位
SciaRegs.SCICTL1.all=0x0003;//禁止接收错误中断,禁用传输唤醒
//禁用休眠模式,使能数据发送和接收
SciaRegs.SCIHBAUD=0x01;
SciaRegs.SCILBAUD=0xf3;//150MCLKOUT,波特率为19200
SciaRegs.SCICTL2.all=0x0002;//使用接收中断,禁用发送中断
SciaRegs.SCIPRI.all=0x0010;//高中断优先级,
//仿真挂起时完成当前操作
SciaRegs.SCICTL1.all=0x0023;//RelinquishSCIfromReset
}
voidmain()
{
InitSysCtrl();
DINT;
IER=0x0000;
IFR=0x0000;
InitPieCtrl();
InitPieVectTable();
InitGpio();
Initsci();//初始化SCIA
For(i=0;i<8;i++)//初始化数据变量
{
Sci_VarRx[i]=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;//开全局实时中断
}
//接收中断服务函数
interruptvoidSCIRXINTA_ISR(void)//SCI-A
{
PieCtrl.PIEACK.bit.ACK9=1;//释放PIE同组中断
if(SciaRx_Ready()==1)
{
Sci_Receivedata=SciaRegs.SCIRXBUF.all;//SCI_Receivedata用于存放接收的数据
}
EINT;//使能全局中断
}
//发送中断服务函数
interruptvoidSCITXINTA_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心得体会
经过两个星期的数字信号处理课程设计,使我在课堂上学习的数字信号处理理论知识运用在了实践当中。
在数字信号处理课程设计期间,我系统地了解了TMS320F2812DSP的结构、资源和性能。
学会了TMS320F2812DSP外围硬件电路的设计,如最小系统和串口电路的设计。
掌握了利用CodeComposerStudio3.3软件构建一个完整的DSP工程,学会了用C语言对DSP进行编程。
在DSP课程设计的过程中也遇到了很多困难,刚开始就连建立工程都有问题,更不用说复杂的异步串行通信了,但困难总要克服,经过查阅资料和同学之间的讨论,问题得到了一一解决。
同时在设计的过程中我发现了自己的不足之处,就是对之前所学过的知识理解得不够深刻,掌握得不够牢固,学习不够深入。
通过这次课程设计之后,得以把以前所学过的知识重新温故,懂得了做实践不能浅尝辄止。
这次课程设计最终得以顺利完成,最后对老师的辛勤指导和同学的热心帮表示衷心感谢!
7参考文献
[1]顾卫钢.手把手教你学DSP-基于TMS320x281x.北京航空航天大学出版社,2011.
[2]苏奎峰等.TMS320X281xDSP原理及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.h"
charsend_buff=0x00;//发送缓冲
charrece_buff=0x00;//接收缓冲
Uint16show=0x00aa;
interruptvoidSCIRXINT_isr(void);//中断1中断子程序
voidDelay(Uint16numbers);//长延迟
voidInitsci(void)//UART初始化子程序
{
SciaRegs.SCICCR.all=0x0007;//1位停止位,用奇校验,禁用回馈测试,
//普通协议模式,8位数据位
SciaRegs.SCICTL1.all=0x0003;//禁止接收错误中断,禁用传输唤醒模式,
//禁用休眠模式,使能数据发送和接收
SciaRegs.SCIHBAUD=0x01;
SciaRegs.SCILBAUD=0xE7;//150MCLKOUT,波特率为9600=CLKOUT/(BRR+1)*8
//BRR=1E7H
SciaRegs.SCICTL2.all=0x0002;//使用接收中断,禁用发送
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DSP 计算机 异步 串行 通信 长沙 理工大学 课程设计