基于DSP的串口通信设计与实现毕业论文_第1页
基于DSP的串口通信设计与实现毕业论文_第2页
基于DSP的串口通信设计与实现毕业论文_第3页
基于DSP的串口通信设计与实现毕业论文_第4页
基于DSP的串口通信设计与实现毕业论文_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

1、基于dsp的串口通信设计与实现 摘 要 本次毕业设计的主要工作就是基于在tms320f2812 dsp芯片的sci(同步串行通信)口上的串口通信的设计与实现。由于tms320f2812包含了两个串行通信接口(sci)模块,所以sci模块提供了dsp与其他标准nrz格式的异步外围之间的数字通讯。sci接收者和发送者皆采用双总线模式,因为每一个皆有自己独自的使能位和中断位。故本文以sci模块的全双工式通信系统的分析与设计为主线。首先了解串行通信理论的有关概念,并提出了一个既能同时进行,又能够独立进行发送和接收操作的可行方案。因此,为了保证串口通信过程中数据的完整性,最主要的还是fifo时钟系统的设

2、计。故本文的重点又是基于sci模块的fifo设计。 关键字:dsp ; tms320f2812 sci ;sci口fifo; abstract the main graduation design is based on tms320f2812 dsp chip sci (synchronous serial communication) serial communication port on the design and implementation.the tms320f2812 includes two serial communication interface (sci) modu

3、le, so sci module provides dsp and other standard asynchronous nrz format digital communication between peripheral.sci receiver and transmitter by key dual-bus mode, because each has its own own bit and interrupt enable bit.therefore, this papers full-duplex type sci module communication systems ana

4、lysis and design of the main line.serial communication theory to first understand the relevant concepts, and presents a both at the same time, but also capable of independent operations to send and receive options.therefore, the process of serial communications in order to ensure data integrity, the

5、 most important thing is fifo clock system design.therefore, the focus of this paper is designed based on fifo sci module. keyword:dsp ;tms320f2812 sci ; sci fifo ; 目 录第一章 绪 论- 1 -1.1 引言- 1 -1.2 dsp发展简介- 1 -1.3 论文各章节的安排- 2 -第二章 tms320f2812 dsp及sci口结构与原理- 3 -2.1 tms320f2812 dsp结构与原理- 3 -2.2 tms320f28

6、12 sci结构与原理- 5 -2.3 sci模块发送和接收数据的工作原理- 7 -2.4 sci数据格式- 8 -2.5 sci通信波特率- 12 -2.6 sci fifo描述- 13 -第三章 串口通信硬件与软件设计- 17 -3.1 基于tms320f2812的dsp最小系统设计- 17 -3.1.1电源及复位电路的设计- 17 -3.1.2 时钟电路设计- 18 -3.1.3 dsp与jtag接口设计- 19 -3.2 串口通信硬件设计- 19 -3.3 串口通信软件设计- 21 -第四章 总结与展望- 26 -4.1 结论- 26 -4.2 展望- 26 -致 谢- 27 -参考文

7、献- 28 - 第一章 绪 论1.1 引言 串口是计算机上一种非常通用通信设备的协议,同时也是仪器仪表设备通用的通信协议,也还可以用来获取远程采集设备的数据。串口通信的概念非常简单,串口按位发送和接收字节。可以在使用一根线发送数据的同时用另一根线接收数据,它很简单并且能够实现远距离通信。 本文主要研究的是基于dsp串口通信在tms320f2812 sci口的设计与实现。而dsp是一种独特的微处理器,是以数字信号来处理大量信息的器件。其工作原理是接收模拟信号,转换为0或1的数字信号。再对数字信号进行修改、删除、强化,并在其他系统芯片中把数字数据解译回模拟数据或实际环境格式。它不仅具有可编程性,而

8、且其实时运行速度可达每秒数以千万条复杂指令程序,远远超过通用微处理器,是数字化电子世界中日益重要的电脑芯片。它的强大数据处理能力和高运行速度,是最值得称道的两大特色。dsp优点主要如下所示: 对元件值的容限不敏感,受温度、环境等外部参与影响小;容易实现集成;vlsi可以分时复用,共享处理器;方便调整处理器的系数实现自适应滤波;可实现模拟处理不能实现的功能:线性相位、多抽样率处理、级联、易于存储等;可用于频率非常低的信号。dsp技术的应用:主要是在处理语音、图像/图形、军事、仪器仪表、自动控制、医疗、家用电器和生物医学信号处理等等方向的应用。1.2 dsp发展简介dsp产业在约40年的历程中经历

9、了三个阶段:第一阶段,dsp意味着数字信号处理,并作为一个新的理论体系广为流行。第二个阶段,开始与80年代,dsp从概念走向了产品,tms32010所实现的出色性能和特性备受业界关注。第三个阶段,则是始于21世纪,市场竞争更加激烈,ti及时调整dsp发展战略全局规划,并以全面的产品规划和完善的解决方案,加之全新的开发理念,深化产业化进程。而dsp未来的发展方向主要是这几个方面:、数字信号处理器的内核结构进一步改善,多通道结构和单指令多重数据(simd)、特大指令字组(vlim)将在新的高性能处理器中将占主导地位。2、dsp 和微处理器的融合。3、dsp 和高档cpu的融合。4、dsp 和soc

10、的融合。5、dsp 和fpga的融合。1.3 论文各章节的安排 这次的毕业论文设计,从接到题目后,就开始着手与论文相关质料的查找和论文进度的安排。从了解串口通信的概念到最后选定由tms320f2812 dsp芯片来完成本次的论文设计,再基于对tms320f2812芯片各个引脚的熟悉和了解,最后决定了由tms320f2812的sci模块来实现本次论文所想要达到的目的即基于dsp串口通信的设计与实现。又由于tms320f2812包含了两个串行通信接口(sci)模块,所以sci模块提供了dsp与其他标准nrz格式的异步外围之间的数字通讯。sci接收者和发送者皆采用双总线模式,因为每一个皆有自己独自的

11、使能位和中断位。故本文以sci模块的全双工式通信系统的分析与设计为主线。首先了解串行通信理论的有关概念,并提出了一个既能同时进行,又能够独立进行发送和接收操作的可行方案。因此,为了保证串口通信过程中数据的完整性,最主要的还是fifo时钟系统的设计。故本文的重点又是基于sci模块的fifo设计。论文章节安排: 第一章绪论主要是叙述了dsp应用领域和发展历程。 第二章介绍了tms320f2812 dsp及sci口结构与原理。 第三章介绍了串口通信硬件与软件设计。 第四章为总结和展望。 第二章 tms320f2812 dsp及sci口结构与原理2.1 tms320f2812 dsp结构与原理32位的

12、tms320f2812 dsp整合了dsp和微控制器的最佳特性,能够在一个周期内完成3232位的乘法累加运算,或两个1616位乘法累加运算。此外,由于器件集成了快速的中断管理单元,使得中断延迟时间大幅减少,满足了适时控制的需要。其功能框图如图1所示: 图1 tms320f2812 dsp功能框图归纳起来tms320f2812 dsp有以下特点: 高性能的静态cmos工艺 ,可使主频达到150mhz ,即每个指令周期是 6167ns ;低功率设计(供电电压只有118v和313v) ; 高性能的32位cpu。能够实现16x16和32x32乘操作 ,快速的中断操作 ,寻址程序空间可达4m,寻址数据空

13、间可达4g,在 c/ c + +和汇编语言中代码可得到优化 ,另外还可向下兼容 tms320f24x/ lf240x处理器的代码; 片上存储器:闪存 128k字 ,单访问双口 ram(saram) 18k字; 启动只读存储器 rom4k字 ,具有软件启动模式并包含标准的数学表; 时钟和系统控制采用锁相环技术pll来控制系统各模块所需要的频率; 具有很强的外围通讯功能:包括同步串行口spi ,通用异步串行口sci ,增强的 ecan 和多通道缓存串行口mcbsp。 可以在一个周期内对任何内存地址完成读取、修改、写入操作,使得效率及程序代码达到最佳。此外,还提供多种自动指令提高了程序的执行效率,简

14、化了程序的开发。 针对嵌入式控制领域应用的特殊要求,已推出一款针对c28x内核的c编辑器,能够提供非常杰出的1.1c汇编语言转换比例。c28x dsp的内核还支持iq变换函数库,使研发人员很方便的使用便宜的定点dsp来实现浮点运算。 在串行通信的应用中,tms320f2812含有两个接口:外设接口spi和通信接口sci,本文研究的是基于tms320f2812串行通信接口sci的设计与实现。 而tms320f2812串行通信接口(sci)是一个双线通信异步串行通信接口。为减少串口通信时cpu的开销,tms320f2812的串口支持16级接收和发送fifo。串行通信接口支持与cpu以及其它使用非归

15、零格式的异步外设之间的异步串行数字通信。它的接收器和发送器都是双级缓冲的,有各自独立的控制位与中断位,都可以同时工作在全双工模式下。为保证数据的完整性,串行通信接口对接收的数据进行间断检测、奇偶性、超时和帧错误检查。串行通信接口可以通过16位的波特率选择寄存器,设置多达65000种通信速度。tms320f2812的sci和以往的dsp的sci相比具有两个特点:一是传送、接收都具有独立的fifo;二是波特率可以自动检测。2.2 tms320f2812 sci结构与原理 sci(serial communication interface),即串行通信接口,是一个双线的异步串口,即具有接收和发送两

16、根信号线的异步串口,一般可以看作是 uart(通用异步接收/发送装置)。f2812的sci模块支持dsp与采用nrz标准格式的异步外围设备之间进行数字通信。2812 内部具有两个相同的sci模块,scia和scib,每一个sci模块都各有一个接收器和发送器。sci的接收器和发送器各具有一个16级深度的fifofirst in fist out 先入先出)队列,它们还都有自己独立的使能位和中断位,可以在半双工通信中进行独立的操作,或者在全双工通信中同时进行操作。 首先,我们从图2可以看到,sci模块具有两个引脚,scitxda和scirxda,分别实现发送数据和接收数据的功能,这两个引脚对应于g

17、piof模块的第4和第5位,在编程初始化的时候,需要将gpiofmux寄存器的第4和第5位置为1,才能使得这两个引脚具有发送和接收的功能,否则就是普通的i/o引脚。外部晶振通过pll模块产生了cpu的系统时钟sysclkout,然后sysclkout 经过低速预定标器之后输出低速时钟lspclk供给sci。要保证sci的正常运行,系统控制模块下必须使能sci的时钟,也就是在系统初始化函数中需要将外设时钟控制寄存器pclkcr的sciaenclk位置1。从图2,我们可以清楚的看到scia可以产生两个中断,scirxinta 和scitxinta,即发送中断和接收中断。 图2 scia的 cpu接

18、口 sci相关信号如表1所示:信号名称描述外部信号rxdsci异步串行数据接收信号txdsci异步串行数据发送信号控制信号通信速率低速外设预分频时钟中断信号txint发射中断rxint接收中断 表 1 sci相关信号sci模块的其他一些特点如表2所示:序号 sci模块的特点 1具有4 个错误检测标志:极性(parity)、溢出(overrun)、 帧 (framing)、中断(break)检测。2多处理器模式下具有两种唤醒方式:空闲线方式和地址位方式。通常使用的时候很少遇到多处理器模式,我们采用的是空闲线方式。 3通信工作于半双工或者全双工模式。 4具有双缓冲接收和发送功能,接收缓冲寄存器为s

19、cirxbuf,发送缓冲寄存器为scitxbuf。5发送和接收可以通过中断方式来实现,也可以通过查询方式来实现。6具有独立的发送中断使能位和接收中断使能位。 7scia 模块具有 13 个控制寄存器,值得注意的是,这些寄存器都是 8 位的寄存器,当某器被访问时,数据位于低8 位,高8位为0,因此,把数据写入高8 位将是无效的。 表2 sci模块特点2.3 sci模块发送和接收数据的工作原理 图3 sci模块的工作原理 sci模块的工作原理如图3所示,之所以sci能工作于全双工模式,是因为它有独立的数据发送器和数据接收器,这样能够保证sci既能够同时进行,也能够独立进行发送和接收的操作。 sci

20、发送数据的过程如下:如图3右半部分所示,在fifo功能使能的情况下,首先,发送数据缓冲寄存器scitxbuf从tx fifo中获取由cpu加载的需要发送的数据,然后scitxbuf将数据传输给发送移位寄存器txshf,如果sci的发送功能使能,txshf则将接收到的数据逐位逐位的移到scitxd引脚上。 sci接收数据的过程如下:如图3的左半部分所示,首先,接收移位寄存器 rxshf逐位逐位的接收来自于scirxd引脚的数据,如果sci的接收功能使能,rxshf将这些数据传输给接收缓冲寄存器scirxbuf,cpu就能从scirxbuf读取外部发送来的数据。当然,如果fifo功能使能的话,sc

21、irxbuf会将数据加载到rx fifo的队列中,cpu再从fifo的队列读取数据。2.4 sci数据格式 在sci中,通信协议体现在sci的数据格式上。通常将sci的数据格式称之为可编程的数据格式,原因就是可以通过sci的通信控制寄存器sciccr来进行设置,规定通信过程中所使用的数据格式。sci 使用的是nrz的数据格式,nrz数据格式包括了如表3所示:序号内容11个起始位21-8个数据位31个奇/偶/非极性位41-2个结束位5在地址位模式下,有1个用于区别数据或者地址的特殊位 表3据格式包数据是18 位,1个字符的长度。将带有格式信息的每一个数据字符叫做一帧。sci有空闲线模式和地址 位

22、模式,若是在两个处理器之间的通信,例如2812和 pc机或者2812和2812之间通信,更适合使用空闲线模式,而地址位模式一般用于多处理器之间的通信。sci通信控制寄存器(sciccr): sciccr定义了sci使用的字符格式、协议和通信模式,如图4和表4所示。 图4 sci通信控制寄存器(sciccr) 位名称功能描述1stop bitssci停止位的个数该位决定的停止位的个数,接收器仅对一个停止位检查 0 一个停止位 1 两个停止位2parity奇偶校验选择位如果parity enable位被置位,则parity确定采用奇校验还是偶校验. 0 奇校验 1 偶校验3paritysci奇偶校

23、验使能位表4 sci通信控制寄存器(sciccr)的功能描述 sci控制寄存器1(scictl1): scictl1控制接收/发送使能、txwake和sleep功能以及sci软件复位,如图5和表5所示。 图5 sci控制寄存器1(scictl1)位名称功能描述1rx err int ena接收错误中断使能位如果由于产生错误而置位了接收错误位(scirxst,位7),则置位该位使能一个接收错位中断。 0 禁止接收错误中断; 1 使能接收错误中断;2sw reset软件复位位(低有效)将0写入该位,初始化sci状态机和操作标志至复位状态。直至将1写入到软件复位位,所有起作用的逻辑都保持确定的复位状

24、态。因此,系统复位后,应将该位置1以重新使能sci。在检测到一个接收器间断(brkdt标志位,位scirxst,位5)后清除该位。 表5 sci控制寄存器1 (scictl1) 的功能描述sci控制寄存器2(scictl2): sci控制寄存器2(scictl2)控制使能接收准备好、间断检测、发送准备中断、发送器准备好及空标志,如图6和表6所示。 图6 sci控制寄存器2 (scictl2)位名称功能描述1txrdy发送缓冲寄存器准备好标志位 当txrdy置位时,表示发送数据缓冲寄存器(scitxbuf)已经准备接收另一个字符。向scitxbuf写数据自动清除txrdy位。如果scitxbuf

25、置位时,中断使能位txint ena(scictl2.0)置位,将会产生一个发送中断请求 。 0 scitxbuf满: 1 scitxbuf准备好接收下一个字符:5-2保留读返回0,写没有影响3rx/bk int接收缓冲器/间断中断使能 该位控制由于rxrdy标志位或brkdt标志位置位引起的中断请求,但是rx/bk int ena 并不能阻止rx/bk int置位。 0 禁止rxrdy/brkdt中断; 1 使能rxrdy/brkdt中断;4tx int enascitxbuf寄存器中断使能位该位控制由txrdy标志位(scictl2.7)置位引起的中断请求。但是它并不能阻止txrdy被置位

26、 0 禁止txrdy中断; 1 使能txrdy中断; 表6 sci控制寄存器2(scictl2)功能描述sci接收器状态寄存器 (scirxst) : scirxst包含7个接收器状态标志位(其中2个能产生中断请求)。每次一个完整的字符发送到接收缓冲器(scirxemu和scirxbuf)后,状态标志位刷新。每次缓冲器被读取时,标志位被清除。 图7给出了寄存器位的关系, 表7给出了sci接收状态寄存器的功能定义。 图7 sci接收器状态寄存器(scirxst) 位名称功能描述1rxrdy接收器准备好标志位2oe超时错误标志位在前一个字符被cpu或dmac完全读走前,当字符被发送到scirxem

27、u和scirxbuf时,sci就置位该位。前一个字符将会被覆盖或丢失。 0 没有检测到超时错误; 1 检测到超时错误;3fe帧错误标志位当检测不到一个期望的停止位时,sci就置位该位。丢失停止位表明没有能够和起始位同步,且字符帧发生了错误。 0 没有检测到帧错误; 1 检测到帧错误;4rxrdy接收器准备好标志位当准备好从scirxbuf寄存器中读一个新的字符时,接收器置位接收器准备好标志位,并且如果rx/bk int ena位(scictl2.1)是1则产生接收器中断。 0 在scirxbuf中没有新的字符; 1 准备好从scirxbuf中读取字符;5保留读返回0,写操作没有影响 表7 sc

28、i接收器状态寄存器 (scirxst)功能描述在空闲线模式下,sci发送或者接收一帧的数据格式如图3所示,其中lsb是数据的最低位,msb是数据的最高位如图8所示。 图8 空闲线模式下sci-帧的数据式具体的定义如图3所示的这些数据格式的寄存器是通信控制寄存器sciccr,其内容如图4所示。使用sciccr进行数据格式编程如图9所示。 图9 sci通信控制寄存器sciccr使用sciccr进行数据格式编程如表8所示:使用sciccr进行数据格式编程 sciaregs.sciccr.bit.scichar=8; /选择数据长度,为8 个数据位 sciaregs.sciccr.bit.parity

29、ena=1; /开启极性功能,值为0的时候取消极性功能 sciaregs.sciccr.bit.parity=0; /在开启极性功能的前提下,该位值为0 时选择偶极性,值为1时选择奇极性 sciaregs.sciccr.bit.stopbits=0; /选择停止位,该位为0时有1 个停止位,该位为1 时有2 个停止位 当然,上述这几个语句,我们也可以合并成如下的语句: sciaregs.sciccr.all=0x13; 表8 sciccr数据编程 空闲线模式中数据格式里没有额外的地址位,在处理10个字节以上的数据块时比地址位模式更为有效,被应用于典型的非多处理器sci通信场合。而地址位模式由于

30、有专门的位来进行识别地址信息,所以数据块之间不需要空闲时间等待,所以这种模式在处理一些小的数据块的时候更为有效。2.5 sci通信波特率 tms320f2812的每个sci都具有两个8位的波特率寄存器,scihbaud和scilbaud,通过编程,可以实现达64k不同的速率。波特率的计算公式如下所示: (1) 因此 (2)其中 brr=波特率选择寄存器中的值,从十进制转换成十六进制后,高8位赋值给 scihbaud,低8位赋值给scilbaud。值得注意的是,式1 所示的波特率公式适用于1brr65535,当brr=0是,波特率如公式(3)所示: (3)brr的值是16位波特率选择寄存器内的值

31、,其选择值如表9所示:理想波特率lspclk时钟频率,37.5mhzbrr实际波特率错误百分比/%24001952(7a0h)240004800976(3d0h)4798-0.049600487(1e1h)96060.0619200243(00f3h)192110.0638400121(0079h)384220.06 表9 波特率值选择表在sci通信时双方都必须以相同的数据格式和波特率进行通信,否则通信会失败。2.6 sci fifo描述 1. 复位:在上电复位时,sci工作在标准sci模式,禁止fifo功能。fifo 的寄存器scifftx、sciffrx和sciffct都被禁止。 2. 标

32、准 sci:标准f24xsci模式,txint/rxint 中断作为 sci的中断源。 3. fifo使能:通过将scifftx寄存器中的sciffen位置 1,使能fifo模式。在任何操作状态下scirst都可以复位fifo模式。 4. 寄存器有效:所有sci寄存器和sci fifo寄存器(scifftx,sciffrx和sciffct)有效。 5. 中断:fifo模式有两个中断,一个是发送fifo中断txint,另一个是接收 fifo中断rxint 。fifo接收、接收错误和接收fifo溢出共用rxint中断。标准sci的 txint 将被禁止,该中断将作为 sci发送 fifo中断使用。

33、 6. 缓冲: 发送和接收缓冲器增加了两个16级的fifo, 发送fifo寄存器是6位长度,接收fifo寄存器都是10位长度。标准sci的一个字的发送缓冲器作为发送fifo和移位寄存器间的发送缓冲器。只有移位寄存器的最后一位被移出后,一个字的发送缓冲才从发送 fifo装载。在使能fifo后,经过一个可选择的延迟(sciffct),txshf被直接装载而不使用 txbuf。 7. 延迟发送:fifo 中的数据传送到发送移位寄存器的速率是可编程的,可以通过sciffct 寄存器的位 fftxdly(7-0)设置发送数据间的延迟。fftxdly(7-0)确定延迟的sci波特率时钟周期数,8位寄存器可

34、以定义0个波特率时钟周期的最小延迟到256个波特率始终周期的最大延迟。当使用0延迟时,sci模块的 fifo数据移出时数据没有延时,一位紧接一位地从fifo移出,实现数据的连续发送。当选择256个波特率时钟延迟时,sci模块工作在最大延迟模式,fifo移出的每个数据字之间有256个波特率时钟延迟。在慢速sci/uart的通信时,可编程延迟减少cpu对sci通信的开销。 8.fifo状态位:发送和接收 fifo都有状态位txffst或rxffst(位12-0),这些状态位显示当前fifo内有用数据的个数。当发送fifo复位位txfifo和接收复位位rxfifo将fifo指针复位为0时,状态位清零

35、。一旦这些位被设置为1,则fifo从开始运行。 9.可编程的中断级:发送和接收fifo都能产生cpu中断,只要发送fifo状态位txffst(位 12-8)与中断触发优先级位txffil(位 4-0)相匹配,就能产生一个中断触发,从而为sci的发送和接收提供了一个可编程的中断触发逻辑。接收fifo的默认触发优先级为0x11111,发送fifo的默认触发优先级为0x00000。0x00000 。fifo模式下sci中断的操作和配置如图10所示: 图10 sci fifo 中断标志和使能逻辑位大多数的sci硬件模块不支持自动波特率检测,而在tms320f2812处理器上, 增强功能的sci模块硬件

36、支持自动波特率检测逻辑和发送/接受fifo操作。自动波特率检测逻辑主要解决中断过程中波特率的确定问题。16字的fifo可极大减少通信中断次数以提高通信速率。通过设置scihbaud, scilbaud 的值可到64k种不同的波特率,本系统的外部晶振 20mhz 经过 pll5 倍频后达100mhz, 该系统中的pc 与 dsp 的通信速率设置为19 200 bps, 通过对sci 的进行初始化即可。计算机端利用串口调试助手实现接收显示, 将其设置成与dsp 相同的波特率、有无校验位、数据位长度、停止位长度以及数据位数即可正常显示收/ 发数据。在两个不同时钟域中传送数据时,异步先进先出( fif

37、o, first in firstout)通常被用来保证数据传送的安全性。将某一个时钟域中的数据安全地传送到另一个时钟域中 ,需要多异步时钟设计技术。1、在同步fifo中的应用 设计同步fifo时 ,首先要充分认识到它的特点 所谓“同步”是指读写时钟是同步的。根据这个特点 ,设计者可以使用一个计数器来记录fifo的使用情况 ,并把计数器的值作为产生fifo状态信号的判据。当计数器的值为0时 , empty信号有效;当计数器的值达到fifo的最大深度时 , full信号有效。2、在异步fifo中的应用 在异步 fifo的设计中,由于fifo两端的时钟不是同步的,上面介绍的设计方法就行不通了。异步

38、fifo的空满信号只有通过比较读写指针来生成。通常使用“超前”的指针工作方式,即读写指针指向的是下一个应该被读或应该被写的地址。当fifo执行写操作的时候,首先,将数据写入指针指向的存储地址;随后 ,写指针增加 ,指针指向下一个写操作时数据需要存放的地址。为了保证异步fifo设计的安全性和正确性 ,需要注意以下几点: (1) 在设计指针控制逻辑的时候 ,所设计出的指针控制逻辑能够保证读写操作的绝对正确和安全;能够保证读写逻辑同存储器通信时,能及时、高效地传输数据;能够对亚稳态的出现有一定抑制作用。 (2) 对读写指针、握手信号进行比较的时候 ,必须保证信号是在同一个时钟域中进行比较 (可以是写

39、时钟域同步到读 ,也可以是读时钟域同步到写 );也必须保证数据同步所引入的延时对fifo状态信号的正确性没有影响。只有严格把握上面几点 ,才有可能设计出符合要求的异步 fifo。 第三章 串口通信硬件与软件设计 3.1 基于tms320f2812的dsp最小系统设计 一个典型的dsp最小系统如图11所示,包括了复位电路、时钟电路及jtag接口电路等等。 图11 dsp最小系统3.1.1电源及复位电路的设计 dsp系统一般都采用多电源系统 ,电源及复位电路的设计对于系统性能有重要影响。tms320f2812是一个较低功耗芯片 ,核电压为1.8v , io电压为3.3v。本设计采用ti公司的 tp

40、s767d318电源芯片。该芯片属于线性降压型dc/dc变换芯片 ,可以由5v电源同时产生两种不同的电压( 3.3v、1.8v 或2.5v ) ,其最 大 输出电流为1000ma ,可以同时满足一片dsp芯片和少量外围电路的供电需要 ,如图12所示。该芯片自带电源监控及复位管理功能 ,可以方便地实现电源及复位电路设计。复位电路原理图如图13所示。 图12 电源电路原理图 图13 复位电路原理图3.1.2 时钟电路设计 tms320f2812 dsp的时钟可以有两种连接方式,即外部振荡器方式和谐振器方式。如果使用内部振荡器,则必须在x1/xcl kin和x2两个引脚之间连接一个石英晶体。如果采用

41、外部时钟,可将输入时钟信号直接连到x1/cl kin 引脚上,x2 悬空。本设计采用的是外部有源时钟方式,直接选择一个3.3v 供电的30mhz有源晶振实现。系统工作是通过编程选择5倍频的pll功能,可实现f2812的最高工作频率(150mhz) 。晶振电路如图14所示: 图14 晶振电路原理图3.1.3 dsp与jtag接口设计 dsp仿真器通过dsp芯片上提供的扫描仿真引脚实现仿真功能,扫描仿真消除了传统电路仿真存在的电缆过长会引起的信号失真及仿真插头的可靠性差等问题。采用扫描仿真,使得在线仿真成为可能,给调试带来极大方便。jtag接口电路如图15所示: 图15 jtag电路原理图 3.2

42、 串口通信硬件设计串行通信是指使用一条数据线(另外需要地线,可能还需要控制线),将数据一位一位地依次传输,每一位数据占据一个固定的时间长度。其只需要少数几条线就可以在系统间交换信息,特别使用于计算机与计算机、计算机与外设之间的远距离通信。使用串口通信时,发送和接收到的每一个字符实际上都是一次一位的传送的,每一位为1或者为0。如图16所示: 图16 串口通信 tms320f2812芯片内部集成了一个串行通信接口(sci)模块,该模块是一个标准的通用异步接收/发送(uart)通信接口,通信接口有scitxd(sci发送输出引脚)和scirxd(sci接收输入引脚)两个外部引脚,引脚的信号电平为tt

43、l类型。而dsp串口的异步串行通信基于rs232c标准,两者的信号逻辑电平不一致,必须进行信号电平转换。tms320f2812接口电路如图17所示: 图17 tms320f2812 接口电路 以rs232c通信标准进行通信,在保证通信准确性的前提下,通信距离一般以不超过12m为宜,在工业控制现场很受限制。为保证硬件设计的兼容性和易扩展性,能够应用于不同场合,在dsp硬件电路板端还采用了一个max489芯片,添加了一个rs485/rs422通信接口。因为max489芯片功耗低,集成度高,+5v供电,具有两个接收和发送通道。由于tms320lf2812采用+3.3v供电,所以在max489与tms

44、320lf2812之间必须加电平转换电路。 实际使用过程中,系统在选择不同的通信标准时,切换十分方便。如图6所示,当跳线端子jump2与jump3的2、3脚短接时,scitxd接通max232芯片的t1i引脚,scirxd接通max232芯片的r1o引脚,即dsp的通信接口与max232芯片相连,此时系统采用rs232c的通信标准。当跳线端子jump2与jump3的1、2脚短接时,scitxd接通max489芯片的di引脚,scirxd接通max489芯片的ro引脚,即dsp的通信接口与max489芯片相连,此时系统采用rs485/422的通信标准,dsp端只需添加一个rs232c/rs485

45、转换器即可进行通信接口电平转换。3.3 串口通信软件设计- 在dsp端的软件程序设计中,通过中断方式接收发送端发送过来的数据包,并校验确认后接收有效数据,再将发送端所需的数据打包回送。基于dsp功能模块化的特点,其串行通信汇编程序的编制主要分三个步骤:(1)初始化设置时钟源模块,得到所需的cpuclk和sysclk(因为计算波特率时与之有关); (2)设置sci模块,初始化各sci控制寄存器; (3)编写串行通信中断服务子程序,即可完成dsp发送端与接收端之间的串行通信。 sci模块采用了一个比较经典的通信类模型,很好的体现了分层结构,应用层调接口函数对缓冲区进行操作,不直接操作硬件。应用层只

46、需 要将需要发送的字节送入缓冲区,驱动程序会自行判断是否启动首次发送,启动首次发送后,应用程序不再需要参与发送流程,驱动会自动完成全部的工作,直到缓冲区为空。当sci接受到数据后,会触发接收中断,由接收中断负责将收到的数据送入到缓冲区。在串行通信中断服务子程序的编制过程中,参考图18所示的dsp串行通信流程图 接线引脚(rxd) 发送引脚(txd)发送移位寄存器接收移位寄存器 sci数据寄存器mcu内部总线sci状态寄存器sci波特率寄存器sci控制寄存器 图 18 sci程序流程图 而通常使用的有两种方式:一种是查询方式,另一种是中断方式。 1、查询方式,就是程序不断去查询状态标志位,看看s

47、ci是不是已经做好了数据发送或者接收的准备。 当数据发送时,需要查询的是位于sci控制寄存器2(scictl2)的第7位txready,发送缓冲寄存器就绪标志。当这个位为1的时候,表明发送数据缓冲寄存器scitxbuf已经准备好开始接收并发送下一个数据了。当数据写入scitxbuf,txready自动会清零,如果txena使能了,发送移位寄存器txshf就会把scitxbuf里面的数据发送出去。当数据接收时,需要查询的是sci接收状态寄存器(scirxst)中的rxrdy,接收器就绪标志。当从scirxbuf寄存器中已经准备好一个字符的数据,等待cpu去读时,rxrdy位就会置1。当数据被cp

48、u从scirxbuf 读出后,或者系统复位,都可以使rxrdy清0。其流程图如图20所示。 2、中断方式,根据前面所学的三级中断的知识,必须使能外设自己的中断、pie中断和cpu中断。scia的发送和接收中断分别位于pie模块第9组的第1和第2 位,同时对应于cpu中断的int9。前面所述的txrdy是中断标志位,当该位置1时,就会产生发送中断事件,如果各级中断都已经使能,则会响应sci的发送中断函数。当接收中断标志位rxrdy置1时,就会产生接收中断标志。如果各级中断已经使能,则会响应sci的接收中断。其流程图如21所示。 特别注意:外设中断的标志位一定要手动复位,在这里sci是个例外,原因

49、如下:当发送器缓冲寄存器scitxbuf做好准备发送数据时,txrdy置1,但是当cpu将数据写入scitxbuf的时候,txrdy自动会清0。而当接收器缓冲寄存器已经准备好数据等待cpu去读取时,rxrdy置1,当cpu将数据从scirxbuf读出时,rxrdy也会自动清0。这是和其他外设中断不一样的地方。 图20 查询方式流程图 图21 中断方式流程图1、使用查询方式发送或者接收数据的程序结构如下:调用主程序:/发送程序if (sciatx_ready() = 1) sciaregs.scitxbuf =sci_senddata; /sci_senddata 为需要发送的数据/接收程序if

50、(sciarx_ready() = 1) sci_receivedata = sciaregs.scirxbuf.all; /sci_receivedata 用于存放 接收的数据/发送就绪标志状态查询函数int sciatx_ready(void) unsigned int i; if(sciaregs.scictl2.bit.txrdy = 1) i = 1;/返回 1 说明发送器已经准备就绪,可以接收新的数据进行发送 else i = 0; return(i);/接收就绪标志状态查询函数int sciarx_ready(void) unsigned int i; if(sciaregs.scirxst.bit.rxrdy = 1) i = 1

温馨提示

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

评论

0/150

提交评论