DSP与计算机的异步串行通信.doc_第1页
DSP与计算机的异步串行通信.doc_第2页
DSP与计算机的异步串行通信.doc_第3页
DSP与计算机的异步串行通信.doc_第4页
DSP与计算机的异步串行通信.doc_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

DSP与计算机的异步串行通信1 绪论1.1 设计背景在DSP芯片出现之前,数字信号处理只能依靠通用微处理器来完成,由于微处理器芯片速度较低,难以满足高速实时处理的要求。1965年库利和图基发表了著名的快速傅立叶变换FFT,极大地降低了傅立叶变换的计算量,从而为数字信号的实时处理奠定了算法的基础。与此同时,伴随集成电路技术的发展,各大集成电路厂商为生产通用DSP芯片做了大量的工作。1978年AMI公司生产第一片DSP芯片S2811。1979年美国Intel公司发布了商用可编程DSP器件Intel2920,由于内部没有单周期的硬件乘法器,使芯片的运算速度,数据处理能力和运算精度受到了很大的限制。运算速度大哟为单指令周期200250ns,应用范围仅局限于军事或航空领域。随着时间的推移,许多国际上著名集成电路厂家都相继推出自己的DSP产品。这个时期的DSP器件在硬件结构上更适合数字信号处理的要求,能进行硬件乘法,硬件FFT变换和单指令滤波处理,其单指令周期为80100ns,20实际80年代后期,以TI公司的TMS320C30为代表的第三代DSP芯片问世,伴随着运算速度的进一步提高,其应用范围逐步扩大到通信,计算机领域。在2000年以后,DSP制造商不仅信号处理能力更加完善,而且是系统开发更加方便,程序编辑更加灵活,功耗进一步降低,成本不断下降。尤其是各种通用外设集成到片上,大大地提高了数字信号处理能力。这一时期的DSP运算速度可达到单指令周期10ms左右,可在Windows环境下直接应用C语言编程,使用方便灵活,使DSP芯片不仅在通信,计算机领域得到了广泛的应用,而且逐步渗透到了人们的日常消费领域。目前DSP芯片的发展非常迅速。硬件结构方面主要是向多处理器的并行处理结构,便于外部数据交换的串行总线传输,大容量片上RAM和ROM,程序加密,增加IO驱动能力,外围电路内装化,低功耗等方面发展。软件方面主要是综合平台的完善,使DSP的应用开发更加灵活方便。1.2 设计目的通过本次课程设计,综合运用数字信号处理、DSP技术课程以及其他有关先修课程的理论和生产实际知识去分析和解决具体问题,并使所学知识得到进一步巩固、深化和发展。初步培养学生对工程设计的独立工作能力、电子系统设计的一般方法。通过课程设计树立正确的设计思想,提高学生分析问题、解决问题的能力。进行设计基本技能的训练,如查阅设计资料和手册、程序的设计、调试等。本题目要求实现DSP与计算机的异步串行通信,设计目的在于了解DSP与PC机串行通信的实现软硬件方案,了解DSP的中断系统,掌握DSP的I/O工作方式。1.3 设计任务设计DSP与PC的异步通讯接口电路,实现串行数据的发送与接收;通过编写DSP程序,实现DSP与PC机之间的数据交换; 要求详细叙述DSP与PC异步通讯接口设计方案以及控制的编程;按要求编写课程设计报告书,正确、完整的阐述设计和实验结果;在报告中绘制程序的流程图,并文字说明。2 设计原理TMS320C5402已在通信与信息系统、信号与信息处理和自动化控制领域有了广泛的应用。该芯片提供了多通道缓冲串行接口M c B S P(Multichannel Buffered SerialPorts)与外部设备进行通信。因为McBSP是同步串行接口,而计算机RS-2 3 2 接口为通用异步接口U A R T(Universal Asynchronous Receiverand Transmitter),要使计算机与C54 进行通信,必须在DSP方面加一个专门的软件实现。2.1 TMS320C5402简介TMS320C5402是C5000系列中性价比较高的一颗芯片。独特的6总线哈佛结构,使其能够6条流水线同时工作,工作频率达到100MHz。C5402除了使用C54x系列中常用的通用IO口(General Purpose IO,简称GPIO)外,还为用户提供了多个可选的GPIO:HPI8和McBSP。TMS320C5402的主要特性有:(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) 低功耗,工作电源3.3V和1.8V(内核)。2.2 UART工作原理2.1.1 异步串行通信的格式定义发送一个完整的字节信息,必须有“起始位”、“若干数据位”、“奇偶校验位”和“停止位”;必须定义每位信息的时间宽度每秒发送的信息位个数,即为“波特率”。DSP5402系统中常用的波特率从30019 200 b/s。当波特率为1200b/s时,每个信息位的时间宽度为1/1200833s;无数据通信时,数据线空闲状态应该是高电平,“起始位”为低电平,数据位低位先发且后跟奇偶校验位(若有),“停止位”为高电平,如图1所示:图 1 异步串行通信时序按最基本的异步串行通信时序,软件实现UART在不同架构的单片机上有多种方法。数据接收是关键,异步通信没有可参照的时钟信号,发送方随时都可能发送数据,任何时刻串行数据到来时,系统都应该及时准确地接收。比较而言,本机发送串行数据相对容易,只要对发送出去的电平做持续时间的定时即可。2.1.2 实现方法(1)三倍速采样法三倍速采样法顾名思义就是以三倍于波特率的频率对接收引脚Rx 进行采样,保证检测到“起始位”,又可以调整采样的时间间隔;将有效数据位的采样点控制在码元的中间1/3处,最大限度地减少误码,提高接收的准确性。我们把图1 的起始位和部分数据位放大,如图2 所示,把每个信息位分成三等份,每等份的时间宽度设为ts,以方便分析。图2 始位和部分数据位放大以三倍频对信息位进行采样时,每个信息位都将可能被采样到三次。当处于空闲状态并检测起始位时,最早检测到起始位低电平的时刻必将落在S0 阴影区,虽然每次具体的采样点会在此S0 阴影区随机变化。检测到起始位低电平后,间隔4ts 时间,正好是第一位数据位的中间1/3 处(图2 中Ds 阴影区)。此后的数据位、校验位和停止位的采样间隔都是3ts,所有采样点均落在码元的中间1/3 处,采样数据最可靠。DSP采用此法实现软件UART 时,硬件上只要任意定义两个I/O 引脚,分别初始化成输入(串行数据接收)和输出(串行数据发送)即可;软件上只要实现定时采样,定时时间间隔在中档以上有中断机制的单片机上可以用不同的定时器(TMR0、TMR1、TMR2 等)通过定时中断实现。对于1200 b/s 波特率,码元宽度为833s,采样时间间隔即为278s。整个串行接收或发送是一个过程控制问题,用状态机方式实现最为高效简易。图3 给出了串行接收的参考状态机转移过程。图3 串行接收的参考状态机转移过程(2)起始位中断捕捉、定时采样法实现此法的硬件条件是DSP有外部脉冲下降沿中断触发功能, RB0/INT 外部中断脚,CCP1/CCP2 脉冲沿捕捉脚,PORTB 的第4/5/6/7 电平变化中断脚等都可以满足。另外需配备一个定时器,以定时中断方式对接收码元正确采样,或发送串行数据流。其关键的异步接收工作原理简介如图4所示。图4 异步接收工作原理设串行数据位宽度为td。起始位到来时刻(图4 A 点)的下降沿触发一个中断并立即响应该中断。在此中断服务中立即关闭本中断使能位(后续的数据流变化无需触发中断),开启定时器,使其在 1.5td 后产生定时中断,用于采样第一个数据位(确保S0 采样点落在数据位的中心位置处);在处理下降沿中断服务的最后,再检测接收端是否还是0 电平,以区分窄脉冲干扰。在S0 点采样到第一个数据位后的所有采样间隔都是1td,直到收到停止位后,关闭定时器中断,重新开放下降沿捕捉中断,准备接收下一个字节。异步数据接收和发送的状态机控制流程,除了起始位判断和定时时间参数设置与前述方式不同外,其它几乎一样,此处不再重复。此法的好处是可以实现较高的通信波特率。对于通信不是很频繁的系统,此软件UART几乎不耗MCU运行带宽,9600b/s 接收或发送在4 MHz 运行的DSP上即可轻松实现;另外,由于下降沿中断可以唤醒处于睡眠的DSP,故极易实现通信唤醒的功能。缺点是不能全双工通信(除非另外单独用一个定时器实现发送定时),异步接收的引脚必须有下降沿触发中断的能力。在此次实验中,我们选用的是第一种方法来实现。(3)分频系数计算McBSP时钟频率也就是采样频率。TMS320C54x系列DSP的McBSP时钟频率可以由DSP主时钟分频得到。通过对寄存器设置可以设定分频系数。分频系数div可由如下公式得到: 计算后div若非整数则需取整。分频寄存器只有8bit,故最大分频值是256。DSP5402主频为100 MHz,串口波特率设定为9600,则:div=100M (169600)2.2 多通道缓冲串行口McBSP的结构及工作原理C54多通道缓冲串行口(McBSP)主要特点如下:双缓冲区发送,三缓冲区接收以便数据的连续性;接收与发送的帧同步、时钟信号独立;多通道发送和接收,最多可以到达128个通道;数据大小可为8,12,16,20,24和32字长;率和A 率压缩;帧同步、数据时钟极性可编程;内部时钟和帧同步可自行设定。TMS32OC54x系列DSP的每个McBSP接口有6个信号线:BSFX (帧同步脉冲发送)、BFSR (帧同步脉冲接收)、BCLKX(发送数据时钟)、BCLKR(接收数据时钟)、BDX (串口数据发送)、BDR(串口数据接收)。应用时将BFSR和BDR连在一起都和异步串口的发送数据线连接,将BDX和异步串口的接收数据线连接,其余悬空即可。为了模拟异步接口,必须要设计一种方案使McBSP能检测和产生UART的数据帧。因为不能和UART数据帧同步,所以不能保证同步串口的时钟和UART数据帧的起始位的上升沿或下降沿对齐。这样UART数据帧和同步串口间会有偏移,同时也会因DSP的同步串口时钟频率和UART数据帧的波特率不匹配而产生数据的速率偏移。为了减少这两个偏移,可以采用过采样技术,即同步串口对UART数据流进行过采样,然后再识别或产生UART的数据帧。同时采用过采样技术也有利于高速的SPI和低速的UART数据流相匹配。过采样的采样速率可以有多种选择,因为C54x系列DSP数据位数是16bit,为了便于处理本文采用16倍采样率过采样。图5 McBSP口对UART数据采样时钟的理想时序2.3 McBSP管脚作为通用I/O脚通过设置SPCR1,2的(R/X)RST0和PCR的(R/X)IOEN1,可以使MCBSP作为通用I/O引脚。对于FS(R/X)管脚, FS(R/X)M0使作为通用输入管脚。FS(R/X)P(R/X)M和CLK(R/X)P对CLK(R/X)的作用相似。当发送器作为通用I/O时,PCR中的DXSTAT值驱动DX管脚输出。DR总是作为输入脚,其状态有DRSTAT反映。如果CLKS要作为通用输入使用,则收发器必须同时处于复位状态且(R/X)IOEN1,管脚的状态由CLKSSTAT反映。具体寄存器如下:图6 寄存器状态2.4 McBSP在CCS集成开发环境下的相关头文件在CCS集成开发环境中,与MCBSP相关的头文件有:regs54xx.h和mcbsp54.h。它们位于C:tic5400dsk5402include目录下。在这两个头文件中,定义了MCBSP串口的寄存器资源以及使用方法。在regs54xx.h头文件中,定义了MCBSP中寄存器的地址和基本寻址方式,以及寄存器的各各比特域和访问方法。2.5 McBSP数据通信流程C54串口通过16bit宽度的控制寄存器与内部总线通信。(1)数据接收过程数据从输入引脚(DR)移位到接收移位寄存器(RSR),然后拷贝数据到接收缓冲寄存器(RBR),接着把数据拷贝到数据接收寄存器(DRR),CPU或者DMA控制器读取DRR.数据输出过程:CPU或者DMA把数据写到数据传输寄存器(DXR),在通过寄存器(XSR)移位到数据输出引脚DX。对串口寄存器的访问是间接寻址方式。例如要对MCBSP数据寄存器进行访问,首先写串口控制寄存器子地址SPCR到子地址寄存器SRSA,然后对数据寄存器进行访问。(2)数据发送过程McBSP 设置成双相帧,第一相长度为#strtbits+#databits+#paritybits,第二相长度为2#stop bits,要传输的帧的长度RxPKTBITS就是这些相的总和。从图1可以看出:异步信号线一直为高直到有数据发送,当一个包发送,首先发送起始位,所以信号变低,类似于帧的下降沿同步。接收过程:第一相长度为#startbits+#databits+#paritybits,第二相长度为8 bits。通过把接收数据线和DR 以及和帧同步FSR接在一起,就可以完成接收的工作。当数据线变低后我们就触发McBSP 开始接收数据包。为防止McBSP 再次触发我们设置在接受数据包期间忽略所有的帧同步。但是由于使用McBSP做通用IO接口时,发送过程定义比较复杂,不及系统通用IO引脚的XF简单明了,所以在这里我们选用后者进行数据的发送引脚。调用程序大体如下所示:asm(“SSBX XF”);/XF输出置高电平; asm(“RSBX XF”);/XF输出置低电平。(3)DMAC54DMA包含独立的六条传输通道,可以完成内存、外存和外部借口之间的传输。而不需要CPU的干涉。DMA可以设成自动缓冲模式(ABU Mode),这相当于实现了FIFO功能。该模式为DMA传输提供一个环形缓冲区。通过设置位和寄存器,可以在缓冲区半满或者全满是产生中断。对于DMA操作,关键是对源地址、目标地址、操作数寄存器的正确设置。(4)使用McBSP实现UART通信数据格式同步通信依赖三个独立的信号来传输和接收数据:数据、时钟、帧同步。然而作为异步通信,传输数据只需要一根线,根本不需要时钟,它的通信格式完全由软件实现。软件共分为3个大的部分:串口的初始化;串口的接收;串口的发送。串口初始化。主要功能是:McBSP和DMA寄存器。McBSP 产生正确的时钟、帧同步和波特率。DMA 必须使接收通道使能和正确的中断输出,我们利用DMA 通道4 接收,通道5 发送。串口的接收。接收分为两个过程:首先当新包刚接收时候所进行的操作;其次怎样从Buffer 中读取该包。第一个过程由DMA 中断服务程序UARTDMARxISR实现,我们使用了ABU方式。第二个过程由用户调用线程UARTRxChar 实现,流程图如图4所示。串口的发送。发送分为两个过程:首先把新包放到发送Buffer中去;其次当一个新包刚发送时候,应进行的操作,对于DMA寄存器的设置类似于接收,只是源地址为DMA缓冲区,目的地址是McBSP的DXR寄存器。第一个过程由用户调用线程UARTTxChar来实现;第二个过程由DMA发送中断服务程序UARTDMATxISR 实现。3 设计过程首先按照MAX202的管脚图将电平转化器接好,它可以使DSP的5V电压与RS232的12V电压相匹配,完成信息传送。然后按照硬件连接图将各个部件连接起来。其中BDR和BFSR是McBSP的输入管脚,XF是通用I/O接口的输出管脚,它们都位于拓展槽中。软件流程图:图7 发送过程流程图图8 接收过程流程图硬件连接图:图9 硬件连接图4 设计程序的调试和运行结果4.1 程序运行过程按照上面所述编写好程序后,进行编译,结果如图10所示:图 10 软件编译界面1在编译程序之前,还要做一些准备工作,即这项工程的文件添加等。如library的库文件就需要自己从TI(或CCS5000)文件夹中寻找添加:(1)drv5402.lib是软件仿真所用的仿真器所必需的库文件;(2)dsk5402.lib是驱动DSK板所必需的库文件;(3)rts.lib,这个库提供目标DSP运行时间支持。其次本程序所使用的配置文件有:(1)-c,即源程序文件;(2)-o,uart.out即输出文件(默认在Debug目录);(3)-l rts.lib等库文件。在编译之前,还应设置一下编译环境,虽然本程序没有对其修改。2在Project菜单中选择Build Options选项有如图11所示的对话框,在此设置头文件及库文件的路径。图11 Build Options选项对话框3在调试无错的情况下选择load程序在调试无错后,选择file菜单中的load programme,使程序可以在板子上运行。选择load programme后进入对话框,选择.out文件,一般该文件都缺省在Bug文件夹中。4.2 cmd程序及解释:.cmd 文件类型及作用:.cmd 是链接器命令文件,用于存储器配置;.cmd 文件结构:.cmd 由两条链接伪指令来描述:MEMORY 和SECTIONS;其中:MEMORY 定义用户目标系统存储器的配置;SECTIONS 控制段的构建和存储器的分配。首先存储器空间是需要配置的,因为 DSP 不同的空间占用相同的地址,因此需要人工分配。5402.cmd全文及其解释如下:/* C5402 DSK DSP Memory Map*/MEMORY /The memory directive(存储器指令)/*缺省模式下:PAGE 0 指程序存储器,Origin 为存储器的起始地址,length 为*/*程序代码所占空间,如PARAM,程序起始地址为1000h,程序所占空间efdh*/*可推出PRAM 的结束地址为1efdh*/PAGE 0:PARAM : origin=0x1000, length=0x0efd/*缺省模式下:PAGE 1 指数据存储器,数据存储的起始、终止地址及长度与上类同*/DARAM : origin=0x2000, length=0x2000/* DSP Memory Allocation :DSP 的存储器空间分配*/SECTIONS /The sections directive/* Property 在name 之后,用于描述各输出段的内容和分配*/*Run allocation:定义该段的运行空间及地址*/*以.cinit 为例,.cinit PRAM PAGE 0 的作用:把.cinit 输出段分配到PAGE 0 中的*/* PARAM,存储信息为:origin = 1000h, length = efdh。下同,类似代码注释从略*/.text : PARAM PAGE 0.cinit: PARAM PAGE 0.data: DARAM PAGE 1.bss: DARAM PAGE 1.const: DARAM PAGE 1根据上面的具体文件作以下补充:sections是COFF文件中最重要的概念,它至少包含以下三个段:.text 段:包含可执行代码;.data 段:包含初始化数据;.bss 段:为未初始化变量保留存储空间。其他为自定义段(或汇编器生成段),如:.usect段,.sect段,.cinit段等。初始化代码段:包含数据或可执行代码,C/C+ compiler 产生下面的初始化段:.cinit 段:包含初始化变量表和常数,C/C+ 的全局变量;.const 段:包含由C/C+限定的字符串常数和数据;(假如 constant也不是定义为 volatile).text 段:包含所有的可执行代码,还有字符串汇编产生的常数。.cmd文件的细节问题:未初始化段:存储器中的保留空间(通常是 RAM)。程序可以在运行时使用这个空间,建立和存储变量。汇编器compiler 建立如下未初始化段:.bss段:为global and static variables保留空间。当使用-c 链接选项,程序启动时,C/C+ boot 程序将.cinit段的数据拷出,存到.bss段中。.stack 段:为C/C+系统堆栈system stack分配存储器,其存储器可以传送变量。链接命令语言是ASCII码形式的文件。它支持C语言的“/* */”作为注释,但不支持“/”,链接命令文件中的常数可以采用汇编语言格式,也可以采用C语言格式,或者混用。4.3 串口调试助手测试实验结果一个很好小巧的串口调试助手,支持常用的300-115200bps波特率,能设置校验、数据位和停止位,能以ASCII码或十六进制接收或发送任何数据或字符(包括中文),可以任意设定自动发送周期,并能将接收数据保存成文本文件,能发送任意大小的文本文件,背景颜色可选,窗口可钉在最上层,有利于观察数据。6 心得体会两周的课程设计设计实习结束了,整个体会还是很多的。课程设计是培养学生运用所学的专业知识,发现,提出,分析和解决实际问题,锻炼实际动手能力的重要环节,是对学生实际工作能力的具体训练和考察,随着科学技术日新月异的发展,DSP已经成为当今芯片世界中比较活跃的领域,在生活中可以说遍布我们生活之中。通过这次DSP课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正掌握知识,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,是无法避免的,不可能一蹴而就,同时在设计的过程中找到自己学习DSP的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,通过这次课程设计之后,把以前所学过的知识点重新温故,同时加强理解,在实践中学习,才是学习DSP的最好方法。因此,在这两周的时间里,使我对DSP有了进一步的了解,对我们的专业有了更进一步的了解,对自己的专业前途有了更广泛的认识。将自己所学的东西,充分的灵活运动起来,这是我们最应该做的事,也是完成设计的必要条件。经过这次DSP课程设计的学习,我们不仅掌握了设计内容要求,更大的收获是掌握了自主学习的方法。我们这次选择的题目是软件实现异步串行接口UART的硬件功能,对于从来没有接触过UART概念的我们来说,这个题目相对难度比较大。开始的时候我们根本不知道从何下手,只能到处找资料,读很多的文章。但是文章的实现方法各有不同,在概念没有了解透彻的时候根本就无济于事。所以我们将重心转向了对UART硬件原理的学习中,了解了它的硬件功能才知道如何使用软件去实现它。最后我们的软件调试还是大都由我们自己完成的,我们采用的方法是中断定时器法来实现的,所以我们参考书上的例子,对我们的程序进行补充。输入管脚我们选用mcbsp的RX来实现,因为它的读取数据相应比BIO接口简单很多,输出我们则选用通用接口中的XF,他可以直接赋值,简单方便。但是当初我们并不敢确定两种接口可以混用,经过老师的细心指导,我们才解决了这一个问题。在调试过程中,我们经过无数次失败熟练掌握了ccs的基本使用方法。很多错误都是我们从来没有见过的,起初根本不知道如何下手去改正。但经过自己的努力和老师的指导,我们还是完成了软件部分的设计。软件调试成功后硬件的第一个问题就是要我们自己焊一块小

温馨提示

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

评论

0/150

提交评论