您的当前位置:首页正文

DSP课程设计报告()

2023-01-23 来源:榕意旅游网


长 沙 学 院

《DSP原理及应用》 课程设计说明书

题系

(

目 基于DSP的串口通信模块设计 )

电信系 电子1班

专业(班级) 姓学指起

名 号

导止

教日

师 期

2014/12/1-2014/12/5

DSP原理及应用课程设计任务书

系(部):电子与通信工程系 专业:11级电子信息工程 指导教师:

课题名称 基于DSP的串口通信模块设计 (1)课题内容:掌握DSP与PC机串口通信技术及其程序编写。在板上加上 设16C550、Max232 和驱动电路部分即可。驱动电路主要完成将 UART 输出的计0-3.3V 电平转换成异步串口电平的工作。转换电平的工作由 MAX232 芯片内完成,但由于它是5V 器件所以它同 DSP 间的信号线必须有电平转换,此板容采用的是 74LVC245。 及(2)要求:DSP硬件设计与仿真;DSP的C语言复杂程序设计;DSP算法要设计与系统方案设计;DSP硬件测试与调试;提交一份完整的课程设计资料,求 包括设计原理、程序设计、程序分析、仿真分析、硬件测试、调试过程,参考文献、设计总结等。 1、DSP硬件设计与仿真; 2、DSP的C语言复杂程序设计; 3、DSP硬件测试与调试; 4、提交一份完整的课程设计说明书,包括设计原理、程序设计、程序分析、仿真分析、调试过程,参考文献、设计总结等。 起止日期(或时间量) 第一天 进度安排 第二天 第三天 第四天 第五天 年 月 日

设计工作量 设计内容(或预期目标) 课题介绍,答疑,收集材料 设计方案论证 程序设计 程序调试、仿真 系统测试并编写设计说明书 备注 教研室 意见 系(部)主管领导意见 年 月 日 长沙学院课程设计鉴定表

姓名 学号 专业 电子信息工程 班级 指导教师 电子1班 设计题目 基于DSP的串口通信模块设计 指导教师意见: 评定成绩: 教师签名: 日期: 答辩小组意见: 评定成绩: 答辩小组长签名: 日期: 教研室意见: 最终评定等级: 教研室主任签名: 日期: 说明

课程设计成绩分“优秀”、“良好”、“中等”、“及格”、“不及格”五等。

基于DSP的串口通信模块设计

一、引言

串口是计算机上一种非常通用通信设备的协议,同时也是仪器仪表设备通用的通信协议,也还可以用来获取远程采集设备的数据。串口通信的概念非常简单,串口按位发送和接收字节。可以在使用一根线发送数据的同时用另一根线接收数据,它很简单并且能够实现远距离通信。

本文主要研究的是基于DSP串口通信在TMS320F2812 SCI口的设计与实现。而DSP是一种独特的微处理器,是以数字信号来处理大量信息的器件。其工作原理是接收模拟信号,转换为0或1的数字信号。再对数字信号进行修改、删除、强化,并在其他系统芯片中把数字数据解译回模拟数据或实际环境格式。它不仅具有可编程性,而且其实时运行速度可达每秒数以千万条复杂指令程序,远远超过通用微处理器,是数字化电子世界中日益重要的电脑芯片。它的强大数据处理能力和高运行速度,是最值得称道的两大特色。

DSP优点主要如下所示:

对元件值的容限不敏感,受温度、环境等外部参与影响小;容易实现集成;VLSI可以分时复用,共享处理器;方便调整处理器的系数实现自适应滤波;可实现模拟处理不能实现的功能:线性相位、多抽样率处理、级联、易于存储等;可用于频率非常低的信号。

二、设计介绍

1、 McBSP设置

DSP的McBSP通过3种信号实现同步通信:数据、帧同步和时钟。异步通信发送和接收各在一条线上进行,具有自己的帧时序。

UART的通信时钟由使用的通信波特率(每秒传输的数据位个数)决定,通常为2400,9600,19200等。DSP与UART异步通信时,由于DSP的内部时钟频率通常都不是UART时钟频率的整数位,因而会造成双方通信时数据位的偏移,为了尽量减小这种偏移,McBSP的串口时钟需要正确的设置时钟频率以达到与UART波特率相匹配。

数据包(PKTBITS)由起始位、数据位、奇偶校验位和停止位组成,起始位为1位,停止位通常为1,1.5,2位,数据数通常为8位,如何使用校验,那么数据包还包括1位校验位。以上数据位中,每1位都被DSP以16倍波特率的时钟频率过采样。

发送时,为保证UART能收到半个停止位,需要将DSP的McBSP发送端口设置为2相的数据帧。第1相为16位的数据字,第2相为8位的数据字。那么第1相数据长度为(起始位+数据位+校验位)个字,第2相长度为停止位的字长。发送时的总帧长(TxPKTBITS)为这两相的总字长。接收数据包格式与发送相似,其结构如图2所示。DSP的串口发送引脚与外部串口设备的接收引脚相连,不使用FSX引脚和CLKX引脚。

接收时,McBSP通过接收帧同步信号引脚(FSR)检测数据的到来,根据帧同步信号的不同,帧同步信号可配置成上升沿触发或下降沿触发,由于UART的起始位为低电平,因此使用下降沿触发。将UART发送数据信号与McBSP的数据接收引脚DR和FSR相连,实现用UART的发送信号触发McBSP的接收

帧同步信号。在McBSP接收一帧数据期间,为了防止下降沿再次触发一帧数据接收,McBSP应该设置为接收数据包期间忽略帧同步信号。

图1 UART接收数据包的帧格式

接收完一帧数据后,需要对数据解码,收于DSP发送和接收时钟是UART串口时钟频率的16位,因此每个UART数据位对应于DSP中1个16位字(停止位对应8位字)。在McBSP接收寄存器中将接收帧设置为2相,第1相16位字,字长为RxPKTBITS(起始位+数据位+校验位),第2相为8位字,对应于停止位字数。此外,接收帧延时值应该设置为1位。

2、 McBSP时钟采样率设置

McBSP与UART通信时,McBSP接收到一帧的帧同步信号后,该帧期间之后出现的帧同步信号将被忽略。为了获得最大数据流量,一帧数据发送结束时,其停止位后紧接着为起始位,帧同步信号的检测依赖于停止位到起始位的下降沿。为了正确检测到帧同步信号,高电平应该至少保持一个时钟周期以上时间。 理想情况下,串口时钟信号边沿与数据位边沿精确对应,此时,每个数据位对应16倍时钟周期。起始位和串口时钟的下降沿偏最小,如图3所示。

图2 McBSP串口时钟与UART时钟精确同步时的时序

正常通信时,McBSP的帧同步信号与UART串口的时钟之间会有一定的偏差,如图所示。

图3 McbSP串口时钟与UART时钟存在偏差时的时序

存在偏差时,为保证McBSP能检测到接收到信号的下降沿,McBSP的串口采样时钟频率必须准确设置。其设置方法如公式1、2所示。其中,DIV是McBSP寄存中串口采样时钟分频值,DSPCLK是DSP的CPU时钟频率,baudrate为通信波特率。

(1) (2)

通信波特率为19200,DSP时钟频率为75MHz,接收数据包为10位(1位起始位,8位数据位,无校验,1位停止位:PKTBITS=10,RxPKTBITS=9.5),根据公式1计算得DIV ,由于分频值DIV为整数,因此取DIV 。根据公式2计算得DIV ,取整后得DIV 。取DIV最佳值为244。

3、 DMA设置

UART通信时,DSP发送和接收到的数据存储在数据存储器中,为了实现DSP的高速处理,减少DSP响应McBSP数据寄存器中断的次数。发送和接收数据与McBSP发送和接收寄存器DXR和DRR之间的数据传输通过DMA通道完成。这里以使用DMA通道4和通道5为例,其中,DMA通道4作为数据接收通道,DMA通道5做为数据发送通道。将通道4和通道5的同步事件分别设置为McBSP串口接收事件和串口发送事件,DMA通道4的源地址为McBSP的接收寄存器DRR地址,目的地址为数据存储器中存放接收数据的变量地址;DMA通道5的源地址为数据存储器中待发的数据,目的地址为McBSP的DXR寄存器地址。每当McBSP接收到数据时,会触发DMA通道4将接收到的数据拷贝到DSP数据存储器的相应置,同时目的地址指针自动加1;发送数据时,DMA通道5将待发送数据拷贝到DXR,将数据依次发出。 发送数据时,待发字符被打包成适于UART接收的数据格式,以发送16进制无符号数0xAA为例,首先发送起始位,然后是数据位最低位,最后发送停止位。该数值在数据存储器中按地址由低到高的存放格式

为:0x0000,0x0000,0xFFFF,0x0000,0xFFFF,0x0000,0xFFFF,0x0000,0xFFFF,0xFFFF。

接收到数据后,取过采样到的每个16位二进制数据字的中间四位,若中间四位中1的个数不小于3,则表示收到当前的UART数据位值为1;若中间四位中0的个数不小于3,则表示收到当前的UART数据位值为0。否则认为数据传输出错。

4 、程序设计

在McBSP和DMA寄存器设置正确的基础上,利用TI公司提供的Code Composer Studio集成开发环境编写了UART串口通信软件,软件开发中使用了CSL(片上支持库),使整个开发过程快速、直观、具有很强的可读性。程序流程如图所示:

图4 UART程序流程图

三、运行程序

ioport unsigned int port2000,port2001,port2002,port2003,port2004,port2005,port2006,port2007;

#define RBR port2000 #define THR port2000 #define IER port2001 #define IIR port2002 #define FCR port2002 #define LCR port2003 #define MCR port2004 #define LSR port2005 #define MSR port2006 #define SCR port2007 #define DLL port2000 #define DLM port2001

void wait(int nWait);

char cString[17]={ \"Hello PC!,Over|\" },cReceive,cBuffer[17],cAnswer[16]={\"Oh,you say\int bReceive,nLen;

main()

{

unsigned int uWork; int i,k;

bReceive=0; LCR = 0x80; DLL = 0x18; DLM = 0x00; LCR = 0x03; FCR = 0x01; MCR = 0x20;

IER = 0x00;

while ( 1 ) { if ( bReceive==0 ) { for ( i=0;i<16;i++ ) { do { uWork=LSR; } while ( uWork&0x040 != 0x040 ); THR=cString[i]; wait(1024); } } else { for ( i=0;i<10;i++ ) { do { uWork=LSR; } while ( uWork&0x040 != 0x040 ); THR=cAnswer[i]; wait(1024); } do { uWork=LSR; } while ( uWork&0x040 != 0x040 ); THR='\\\"'; for ( i=0;i{ uWork=LSR; } while ( uWork&0x040 != 0x040 ); THR=cBuffer[i]; wait(1024); } do { uWork=LSR; } while ( uWork&0x040 != 0x040 ); THR='\\\"'; wait(1024); for ( i=9;i<16;i++ ) { do { uWork=LSR; } while ( uWork&0x040 != 0x040 ); THR=cString[i]; wait(1024); } } k=0; bReceive=0; while ( 1 ) { do { uWork=LSR; } while ( (uWork&1)==0 ); cReceive=RBR; cBuffer[k]=cReceive&0x0ff; if ( cReceive=='.' ) { cBuffer[k+1]='\\0'; nLen=k+1; bReceive=1; break; } k++; k%=16; } } }

void wait(int nWait) { int i,j,k=0;

}

for ( i=0;i四、心得体会

在设计的过程中遇到问题,可以说得是困难重重,这毕竟是第一次综合应用DSP技术来做设计,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固„„通过这次设计之后,得以把以前所学过的知识重新温故。这次毕业设计终于顺利完成了,在设计中遇到了很多问题,最后在老师的辛勤指导下,同学的帮助下终于迎刃而解。在此我表示感谢!

DSP系统直接与外部全双工异步串行设备的通信时,通过正确的使用DSP上的McBSP和DMA通道,利用16倍过采样原理准确的计算McBSP通信接口的采样值和配置相关寄存器,能够实现DSP与外部异步设备的可靠通信。与传统的采用串并转换芯片的实现方法相比,具有更低的成本更简单的外部电路

五、参考文献

[1] DSP原理及应用 [M],邹彦:电子工业出版社.

[3] 张雄伟,曹铁男.DSP芯片的原理与开发应用(第2版)[M].北京:电子工业出版社,2000.

因篇幅问题不能全部显示,请点此查看更多更全内容