ImageVerifierCode 换一换
格式:DOCX , 页数:31 ,大小:819.05KB ,
资源ID:7477832      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7477832.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(DSP与计算机的异步串行通信精.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

DSP与计算机的异步串行通信精.docx

1、DSP与计算机的异步串行通信精1 课程设计背景随着DSP在中国的普及与发展,越来越多的领域已经应用了DSP技术。为了适应这一新的形式,加速培养高素质的DSP专门人才,国内各高等院校除了加强DSP学科的理论教学之外,都纷纷开设DSP实验课,以提高学生的实际动手能力,加快学生与社会的接轨的时间。TI(德州仪器半导体公司)生产的数字信号处理器,简称DSP(DIGITAL SIGNAL PROCESSOR)TMS320是包括定点、浮点和处理器在内的数字信号处理器(DSPs)系列,其结构尤其适用于作实时信号处理。DSP是运算密集型的微处理器。这使得DSP完成滤波器和FFT算法比一般的事务型处理器快的多。

2、DSP的另一重要特征是采用改进的哈佛结构,具有独立的数据和地址总线,从而使得处理器指令和数据并行,与冯诺伊曼的结构相比,大大提高了处理效率。该系列DSP具有以下特点:灵活的指令系统、灵活的操作性能、高速的性能、改进的哈佛结构、低功耗、很高的性能价格比。TMS320系列中的同一代芯片具有相同的CPU结构,但片内存储器和片内外设的配置是不同的。还有一些派生器件使用了存储器和外设新的组合,以适应不同的需要。该系统以TI的TMS320C5402的DSP为该实验仪的主体芯片。54系列DSP应用改进的哈佛结构,具有三个数据存储总线、一个程序存储总线、两个数据地址产生器和一个程序地址产生器。这种结构使得可以

3、同时存取数,适合多操作数运算,从而完成同样的功能所需的周期少。加之54系列指令集还包含几条专用指令,包括:单条指令重复和指令块重复、条件指令、FIR(有限脉冲响应)和LMS(最小均方)滤波器运算指令等。HPI扩展接口:8 bit,可以与多种处理器相连接。54系列DSP芯片主要用于:数字蜂窝式电话、个人数字助理商务通(PDA)、数字无绳通信、无线数据通信、IP电话等低功耗、多算法的场合,尤其是随着第三代移动通信的到来,无线数据业务的应用,应用54系列DSP这一趋势将会加速。利用54系列的I/O扩展口进行基本的I/O口操作。实验目标系统标准配置:1TMS320VC5402PGE100芯片一片2TL

4、16C550芯片异步串口实验电路3.同步串口实验电路4.64K16位RAM5.A/D、D/A采样芯片 TLC320AD506.I/O口的扩展电路7.语音电路8.CPLD电路9.HPI接口10.直流电机、步进电机电路11.键盘、液晶屏电路12.数码管、发光二极管电路2 课程设计目的通过本次课程设计,综合运用数字信号处理、DSP技术课程以及其他有关先修课程的理论和生产实际知识去分析和解决具体问题,并使所学知识得到进一步巩固、深化和发展。初步培养学生对工程设计的独立工作能力、电子系统设计的一般方法。通过课程设计树立正确的设计思想,提高学生分析问题、解决问题的能力。进行设计基本技能的训练,如查阅设计资

5、料和手册、程序的设计、调试等。本题目要求实现DSP与计算机的异步串行通信,设计目的在于了解DSP与PC机串行通信的实现软硬件方案,了解DSP的中断系统,掌握DSP的I/O工作方式。1、设计DSP与16C550的接口电路,实现串行数据的发送与接收2、通过编写DSP程序,实现DSP与PC机之间的数据交换。DSP对16C550的访问方式可以采用查询方式或者中断方式。3、要求详细叙述DSP与16C550的接口设计方案以及控制16C550的编程方法。4、按要求编写课程设计报告书,正确、完整的阐述设计3 课程设计原理TMS320C5402DSP已在通信与信息系统、信号与信息处理和自动化控制领域有了广泛的应

6、用。该芯片提供了多通道缓冲串行接口M c B S P(Multichannel Buffered SerialPorts与外部设备进行通信。因为McBSP是同步串行接口,而计算机RS-2 3 2 接口为通用异步接口U A R T(Universal Asynchronous Receiverand Transmitter,要使计算机与C54 进行通信,必须在DSP方面加一个专门的软件实现。3.1 UART工作原理3.1.1 异步串行通信的格式定义发送一个完整的字节信息,必须有“起始位”、“若干数据位”、“奇偶校验位”和“停止位”;必须定义每位信息的时间宽度每秒发送的信息位个数,即为“波特率”。

7、Dsk5402系统中常用的波特率从30019 200 b/s。当波特率为1200b/s时,每个信息位的时间宽度为1/1200833s;无数据通信时,数据线空闲状态应该是高电平,“起始位”为低电平,数据位低位先发且后跟奇偶校验位(若有),“停止位”为高电平,如图3.1.1所示图 3.1.1 异步串行通信时序按图3.1最基本的异步串行通信时序,软件实现UART在不同架构的单片机上有多种方法。数据接收是关键,异步通信没有可参照的时钟信号,发送方随时都可能发送数据,任何时刻串行数据到来时,系统都应该及时准确地接收。比较而言,本机发送串行数据相对容易,只要对发送出去的电平做持续时间的定时即可。3.1.2

8、 实现方法(1三倍速采样法三倍速采样法顾名思义就是以三倍于波特率的频率对接收引脚Rx 进行采样,保证检测到“起始位”,又可以调整采样的时间间隔;将有效数据位的采样点控制在码元的中间1/3处,最大限度地减少误码,提高接收的准确性。我们把图1 的起始位和部分数据位放大,如图2 所示,把每个信息位分成三等份,每等份的时间宽度设为ts,以方便分析。图 3.1.2 始位和部分数据位放大以三倍频对信息位进行采样时,每个信息位都将可能被采样到三次。当处于空闲状态并检测起始位时,最早检测到起始位低电平的时刻必将落在S0 阴影区,虽然每次具体的采样点会在此S0 阴影区随机变化。检测到起始位低电平后,间隔4ts

9、时间,正好是第一位数据位的中间1/3 处(图2 中Ds 阴影区)。此后的数据位、校验位和停止位的采样间隔都是3ts,所有采样点均落在码元的中间1/3 处,采样数据最可靠。Dsp 采用此法实现软件UART 时,硬件上只要任意定义两个I/O 引脚,分别初始化成输入(串行数据接收)和输出(串行数据发送)即可;软件上只要实现定时采样,定时时间间隔在中档以上有中断机制的单片机上可以用不同的定时器(TMR0、TMR1、TMR2 等)通过定时中断实现。对于1200 b/s 波特率,码元宽度为833s,采样时间间隔即为278s。整个串行接收或发送是一个过程控制问题,用状态机方式实现最为高效简易。图3 给出了串

10、行接收的参考状态机转移过程。图 3.1.3 串行接收的参考状态机转移过程(2起始位中断捕捉、定时采样法实现此法的硬件条件是 dsp 有外部脉冲下降沿中断触发功能, RB0/INT 外部中断脚,CCP1/CCP2 脉冲沿捕捉脚,PORTB 的第4/5/6/7 电平变化中断脚等都可以满足。另外需配备一个定时器,以定时中断方式对接收码元正确采样,或发送串行数据流。其关键的异步接收工作原理简介如图4 所示。图 3.1.4 异步接收工作原理设串行数据位宽度为td。起始位到来时刻(图4 A 点)的下降沿触发一个中断并立即响应该中断。在此中断服务中立即关闭本中断使能位(后续的数据流变化无需触发中断),开启定

11、时器,使其在 1.5td 后产生定时中断,用于采样第一个数据位(确保S0 采样点落在数据位的中心位置处);在处理下降沿中断服务的最后,再检测接收端是否还是0 电平,以区分窄脉冲干扰。在S0 点采样到第一个数据位后的所有采样间隔都是1td,直到收到停止位后,关闭定时器中断,重新开放下降沿捕捉中断,准备接收下一个字节。异步数据接收和发送的状态机控制流程,除了起始位判断和定时时间参数设置与前述方式不同外,其它几乎一样,此处不再重复。此法的好处是可以实现较高的通信波特率。对于通信不是很频繁的系统,此软件UART 几乎不耗MCU 运行带宽,9600b/s 接收或发送在4 MHz 运行的dsp 上即可轻松

12、实现;另外,由于下降沿中断可以唤醒处于睡眠的dsp,故极易实现通信唤醒的功能。缺点是不能全双工通信(除非另外单独用一个定时器实现发送定时),异步接收的引脚必须有下降沿触发中断的能力。在此次实验中,我们选用的是第一种方法来实现。(3分频系数计算McBSP时钟频率也就是采样频率。TMS320C54x系列DSP的McBSP时钟频率可以由DSP主时钟分频得到。通过对寄存器设置可以设定分频系数。分频系数div可由如下公式得到: 式中厂为DSP的工作时钟B,为异步串口工作波特率。计算后div若非整数则需取整。分频寄存器只有8 b,故最大分频值是256。DSP5402主频为100 MHz,串口波特率设定为9

13、600,则:div=100M (1696003.2 多通道缓冲串行口McBSP的结构及工作原理C54多通道缓冲串行口(McBSP主要特点如下:双缓冲区发送,三缓冲区接收以便数据的连续性;接收与发送的帧同步、时钟信号独立;多通道发送和接收,最多可以到达128个通道;数据大小可为8,12,16,20,24和32 bit;率和A 率压缩;帧同步、数据时钟极性可编程;内部时钟和帧同步可自行设定。TMS32OC54x系列DSP的每个McBSP接口有6个信号线:BSFX (帧同步脉冲发送、BFSR (帧同步脉冲接收、BCLKX(发送数据时钟、BCLKR(接收数据时钟、BDX (串口数据发送、BDR(串口数

14、据接收。应用时将BFSR和BDR连在一起都和异步串口的发送数据线连接,将BDX和异步串口的接收数据线连接,其余悬空即可。为了模拟异步接口,必须要设计一种方案使McBSP能检测和产生UART的数据帧。因为不能和UART数据帧同步,所以不能保证同步串口的时钟和UART数据帧的起始位的上升沿或下降沿对齐。这样UART数据帧和同步串口间会有偏移,同时也会因DSP的同步串口时钟频率和UART数据帧的波特率不匹配而产生数据的速率偏移。为了减少这两个偏移,可以采用过采样技术,即同步串口对UART数据流进行过采样,然后再识别或产生UART的数据帧。同时采用过采样技术也有利于高速的SPI和低速的UART数据流相

15、匹配。过采样的采样速率可以有多种选择,因为54x系列DSP数据位数是16 b,为了便于处理本文采用16倍采样率过采样。图 3.2.1 McBSP口对UART数据采样时钟的理想时序3.3 McBSP管脚作为通用I/O脚通过设置SPCR1,2的(R/X)RST0和PCR的(R/X)IOEN1,可以使MCBSP作为通用I/O引脚。对于FS(R/X管脚, FS(R/XM0使作为通用输入管脚。FS(R/XP(R/XM和CLK(R/XP对CLK(R/X的作用相似。当发送器作为通用I/O时,PCR中的DXSTAT值驱动DX管脚输出。DR总是作为输入脚,其状态有DRSTAT反映。如果CLKS要作为通用输入使用

16、,则收发器必须同时处于复位状态且(R/XIOEN1,管脚的状态由CLKSSTAT反映。具体寄存器如下:3.4 McBSP在CCS集成开发环境下的相关头文件在CCS集成开发环境中,与MCBSP相关的头文件有:regs54xx.h和mcbsp54.h。它们位于C:tic5400dsk5402include目录下。在这两个头文件中,定义了MCBSP串口的寄存器资源以及使用方法。在regs54xx.h头文件中,定义了MCBSP中寄存器的地址和基本寻址方式,以及寄存器的各各比特域和访问方法。与此相关的定义如下所示/*/* Register Definition MCBSP */*/*-PORT-|-2-

17、|-1-|-0-|*/Added by T. kyiamah#define SPCR1_ADDR(port (port ? 0x49 : 0x39#define SPCR2_ADDR(port (port ? 0x49 : 0x39#define SPSA_ADDR(port (port ? 0x48 : 0x38#define SPSD_ADDR(port (port ? 0x49 : 0x39#define DRR2_ADDR(port (port ? 0x40 : 0x20#define DRR1_ADDR(port (port ? 0x41 : 0x21#define DXR2_ADD

18、R(port (port ? 0x42 : 0x22#define DXR1_ADDR(port (port ? 0x43 : 0x23#define MCBSP_ACCSUB_ADDR(port (port ? 0x49 : 0x39#define SPCR1_SUBADDR 0x00#define SPCR2_SUBADDR 0x01#define RCR1_SUBADDR 0x02#define RCR2_SUBADDR 0x03#define XCR1_SUBADDR 0x04#define XCR2_SUBADDR 0x05#define SRGR1_SUBADDR 0x06#def

19、ine SRGR2_SUBADDR 0x07#define MCR1_SUBADDR 0x08#define MCR2_SUBADDR 0x09#define RCERA_SUBADDR 0x0A#define RCERB_SUBADDR 0x0B#define XCERA_SUBADDR 0x0C#define XCERB_SUBADDR 0x0D#define PCR_SUBADDR 0x0E/*/* Subregister Read / Write */*/#define MCBSP_SUBREG_WRITE(port, subaddr, value (REG_WRITE(SPSA_AD

20、DR(port, subaddr,(REG_WRITE(MCBSP_ACCSUB_ADDR(port, value#define MCBSP_SUBREG_READ(port, subaddr (REG_WRITE(SPSA_ADDR(port, subaddr,(REG_READ(MCBSP_ACCSUB_ADDR(port#define DMA_SUBREG_WRITE(chan, subaddr, value (subaddr=0x1E ?(REG_WRITE(DMSBA_ADDR, (subaddr, REG_WRITE(DMSAI_ADDR, value:(REG_WRITE(DMS

21、BA_ADDR, (chan*5+subaddr, REG_WRITE(DMSAI_ADDR,value #define DMA_SUBREG_READ(chan, subaddr (subaddr=0x1E ?(REG_WRITE(DMSBA_ADDR, (subaddr, REG_READ(DMSAI_ADDR:(REG_WRITE(DMSBA_ADDR, (chan*5+subaddr, REG_READ(DMSAI_ADDR /* Subregister Bit Field Read / Write */#define MCBSP_SUBREG_BITWRITE(port, subad

22、dr, bit, size, value REG_WRITE(MCBSP_ACCSUB_ADDR(port, (REG_WRITE(SPSA_ADDR(port,subaddr, REG_READ(MCBSP_ACCSUB_ADDR(port & CREATE_FIELD(bit, size | (value(bit #define DMA_SUBREG_BITWRITE(chan, subaddr, bit, size, value (subaddr=0x1E ?(REG_WRITE(DMSBA_ADDR, (REG_WRITE(DMSBA_ADDR, subaddr,REG_READ(DM

23、A_ACCSUB_ADDR & CREATE_FIELD(bit, size | (value (bit#define DMA_SUBREG_BITREAD(chan, subaddr, bit, size (subaddr=0x1E ?(unsigned int (REG_WRITE(DMSBA_ADDR, subaddr,(REG_READ(DMA_ACCSUB_ADDR & CREATE_FIELD(bit, size (bit :(unsigned int (REG_WRITE(DMSBA_ADDR, (chan*5+subaddr,(REG_READ(DMA_ACCSUB_ADDR

24、& CREATE_FIELD(bit, size (bit 在mcbsp54.h头文件中,定义了与MCBSP相关的宏函数(MACRO FUNCTIONS)和函数,其中的函数和宏函数列表如下:/* MCBSP_BYTES_PER_WORD - return # of bytes required to hold # */* of bits indicated by wdlen */* MCBSP_ENABLE( - starts serial port receive and/or transmit */* MCBSP_TX_RESET( - reset transmit side of ser

25、ial port */* MCBSP_RX_RESET( - reset receive side of serial port */* MCBSP_DRR1_READ( - read data value from serial port */* use instead: MCBSP_SUBREG_READ(. , DRR1_SUBADDR, . */* MCBSP_DRR2_READ( - read data value from serial port */* use instead: MCBSP_SUBREG_READ(. , DRR2_SUBADDR, . */* MCBSP_DRR

26、12_READ( - read data value from serial port */* return value as unsigned long */* MCBSP_DXR12_WRITE( - write data value from serial port */* MCBSP_IO_ENABLE( - place port in general purpose I/O mode */* MCBSP_IO_DISABLE( - take port out of general purpose I/O mode */* MCBSP_FRAME_SYNC_ENABLE - sets

27、FRST bit in SPCR */* MCBSP_FRAME_SYNC_RESET - clrs FRST bit in SPCR */* MCBSP_SAMPLE_RATE_ENABLE- sets GRST bit in SPCR */* MCBSP_SAMPLE_RATE_RESET - clrs GRST bit in SPCR */* MCBSP_RRDY - returns selected ports RRDY */* MCBSP_XRDY - returns selected ports XRDY */* MCBSP_LOOPBACK_ENABLE - places sel

28、ected port in loopback */* MCBSP_LOOPBACK_DISABLE - takes port out of DLB */3.5 McBSP数据通信流程C54串口通过16bit宽度的控制寄存器与内部总线通信。(1数据接收过程:数据从输入引脚(DR移位到接收移位寄存器(RSR,然后拷贝数据到接收缓冲寄存器(RBR,接着把数据拷贝到数据接收寄存器(DRR,CPU或者DMA控制器读取DRR.数据输出过程:CPU或者DMA把数据写到数据传输寄存器(DXR),在通过寄存器(XSR)移位到数据输出引脚DX。对串口寄存器的访问是间接寻址方式。例如要对MCBSP数据寄存器进行访问

29、,首先写串口控制寄存器子地址SPCR到子地址寄存器SRSA,然后对数据寄存器进行访问。(2数据发送过程:McBSP 设置成双相帧,第一相长度为#strtbits+#databits+#paritybits,第二相长度为2#stop bits,要传输的帧的长度RxPKTBITS就是这些相的总和。从图1可以看出:异步信号线一直为高直到有数据发送,当一个包发送,首先发送起始位,所以信号变低,类似于帧的下降沿同步。接收过程:第一相长度为#startbits+#databits+#paritybits,第二相长度为8 bits。通过把接收数据线和DR 以及和帧同步FSR接在一起,就可以完成接收的工作。当

30、数据线变低后我们就触发McBSP 开始接收数据包。为防止MCBSP 再次触发我们设置在接受数据包期间忽略所有的帧同步。但是由于使用mcbsp做通用IO接口时,发送过程定义比较复杂,不及系统通用IO引脚的XF简单明了,所以在这里我们选用后者进行数据的发送引脚。调用程序大体如下所示:asm(“SSBX XF”;/XF输出置高电平; asm(“RSBX XF”;/XF输出置低电平(3DMAC54DMA包含独立的六条传输通道,可以完成内存、外存和外部借口之间的传输。而不需要CPU的干涉。DMA可以设成自动缓冲模式(ABU Mode,这相当于实现了FIFO功能。该模式为DMA传输提供一个环形缓冲区。通过设置位和寄存器,可以在缓冲区半满或者全满是产生中断。对于DMA操作,关键是对源地址、目标地址、操作数寄存器的正确设置。串口接收DMA寄存器的设置:STMDMSRC1,DMSA; /设置子地址STMDRR10,DMSD

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1