基于DSP基于DSP的串行通信实现下位机部分.docx
《基于DSP基于DSP的串行通信实现下位机部分.docx》由会员分享,可在线阅读,更多相关《基于DSP基于DSP的串行通信实现下位机部分.docx(15页珍藏版)》请在冰豆网上搜索。
基于DSP基于DSP的串行通信实现下位机部分
第1章绪论
1.1课题研究的意义及背景
随着现代信息技术的发展以及网络的广泛应用,串行通信技术已经日臻成熟。
由于其具有线路简单、应用灵活、可靠性高等一系列优点,所以长期以来在数据采集、数据通讯、故障检测、计算机远程监控等方面都有着广泛的应用。
串行通信就是数据在一根传输线上由低位到高位一位一位地顺序传输。
通常计算机之间、计算机与串行外设之间以及实时多处理机分级分部控制系统中,各CPU间都采用串行通信方式交换数据。
串行通信的特点是通信距离远,通信成本低,但通信过程中要求数据有固定的格式,所以通信过程的控制要比并行通信复杂。
串行通信的基本方式可分为同步串行方式和异步串行方式,两者本质上都是保证数据正确发送和接收的同步方式,区别在于异步串行方式是字符同步,而同步串行方式是字符之间、位与位之间都同步。
异步串行通信口它包括了RS232、RS499、RS423、RS422和RS485等接口标准规范和总线标准规范。
1969年,美国电子工业协会(EIA)公布了RS-232C作为串行通信接口的电气标准,该标准定义了数据终端设备(DTE)和数据通信设备(DCE)间按位串行传输的接口信息,合理安排了接口的电气信号和机械要求,在世界范围内得到了广泛的应用。
但它采用单端驱动非差分接收电路,因而存在着传输距离不太远(最大传输距离15m)和传送速率不太高(最大位速率为20Kb/s)的问题。
远距离串行通信必须使用Modem,增加了成本。
在分布式控制系统和工业局部网络中,传输距离常介于近距离(<20m)和远距离(>2km)之间的情况,这时RS-232C(25脚连接器)不能采用,用Modem又不经济,因而需要制定新的串行通信接口标准。
1977年EIA制定了RS-449。
它除了保留与RS-232C兼容的特点外,还在提高传输速率,增加传输距离及改进电气特性等方面作了很大努力,并增加了10个控制信号。
与RS-449同时推出的还有RS-422和RS-423,它们是RS-449的标准子集。
另外,还有RS-485,它是RS-422的变形。
RS-422、RS-423是全双工的,而RS-485是半双工的。
RS-422标准规定采用平衡驱动差分接收电路,提高了数据传输速率(最大位速率为10Mb/s),增加了传输距离(最大传输距离1200m)。
RS-423标准规定采用单端驱动差分接收电路,其电气性能与RS-232C几乎相同,并设计成可连接RS-232C和RS-422。
它一端可与RS-422连接,另一端则可与RS-232C连接,提供了一种从旧技术到新技术过渡的手段。
同时又提高位速率(最大为300Kb/s)和传输距离(最大为600m)。
PC机的串行接口基本上都采用异步通信方式。
COM口是PC上异步串行通信口的简写。
由于历史原因,IBM的PC外部接口配置为RS232,成为实际上的PC界默认标准。
所以现在PC机的COM口均为RS232,这要求与PC机进行串口通信的设备要满RS232的串行通信协议。
随着串行通信的广泛应用,一些芯片也集成了串行通信模块,这使得这些芯片与PC机通信的应用在工业领域快速地发展起来。
DSP芯片就是其中一种,并且随着它的性能不断的提高,在工业控制和网络通信等方面得到了广泛的应用。
1.2DSP芯片简介
DSP发展历程大致分为三个阶段:
70年代理论先行,80年代产品普及,90年代突飞猛进。
在DSP出现之前数字信号处理只能依靠MPU来完成。
因此,直到70年代,有人才提出了DSP的理论和算法基础。
随着大规模集成电路技术的发展,1982年世界上诞生了首枚DSP芯片。
这种DSP器件采用微米工艺NMOS技术制作,虽功耗和尺寸稍大,但运算速度却比MPU快了几十倍,尤其在语音合成和编码中得到了广泛应用。
DSP芯片的问世是个里程碑,它标志着DSP应用系统由大型系统向小型化迈进了一大步。
至80年代中期,随着CMOS技术的进步与发展,第二代基于CMOS工艺的DSP芯片应运而生,其存储容量和运算速度都得到成倍提高,成为语音处理、图像硬件处理技术的基础。
80年代后期,第三代DSP芯片问世,运算速度进一步提高,其应用于范围逐步扩大到通信、计算机领域。
90年代DSP发展最快,相继出现了第四代和第五代DSP器件。
现在的DSP属于第五代产品,它与第四代相比,系统集成度更高,将DSP芯核及外围元件综合集成在单一芯片上。
这种集成度极高的DSP芯片不仅在通信、计算机领域大显身手,而且逐渐渗透到人们日常消费领域。
经过20多年的发展,DSP产品的应用已扩大到人们的学习、工作和生活的各个方面,并逐渐成为电子产品更新换代的决定因素。
目前,对DSP爆炸性需求的时代已经来临,前景十分可观。
DSP系统是以数字信号处理为基础,因此具有数字处理的全部优点:
(1)接口方便。
DSP系统与其它以现代数字技术为基础的系统或设备都是相互兼容的,与这样的系统接口以实现某种功能要比模拟系统与这些系统接口容易得多;
(2)编程方便。
DSP系统中的可编程DSP芯片可使设计人员在开发过程中灵活方便地对软件进行修改和升级;
(3)稳定性好。
DSP系统以数字处理为基础,受环境温度以及噪声的影响较小,可靠性高;
(4)精度高。
16位数字系统可以达到
的精度;
(5)可重复性好。
模拟系统的性能受元器件参数性能变化比较大,而数字系统基本不受影响,因此数字系统便于测试、调试和大规模生产;
(6)集成方便。
DSP系统中的数字部件有高度的规范性,便于大规模集成。
当然,数字信号处理也存在一定的缺点。
比如对于简单的信号处理任务,如与模拟交换线的电话接口,若采用DSP则使成本增加。
DSP系统中的高速时钟可能带来高频干扰和电磁泄漏等问题,而且DSP系统消耗的功率也较大。
此外,DSP技术更新的速度快,数学知识要求多,开发和调试工具还不尽完善。
虽然DSP系统存在着一些缺点,但其突出的优点已经使之在通信、语音、图像、雷达、生物医学、工业控制、仪器仪表等许多领域得到越来越广泛的应用。
随着DSP芯片性能价格比的不断提高,可以预见DSP芯片将会在更多的领域内得到更为广泛的应用。
1.3课题分析
串行通信的基本方式可分为同步串行方式和异步串行方式,两者本质上都是保证数据正确发送和接收的同步方式,区别在于异步串行方式是字符同步,而同步串行方式是字符之间、位与位之间都同步。
异步串行通信口包括了RS232、RS499、RS423、RS422和RS485等接口标准规范和总线标准规范,因为RS232的线路简单、应用灵活而得到广泛的应用。
PC的串行接口基本上都采用异步通信方式,COM口是PC上异步串行通信口的简写。
由于历史原因,IBM的PC外部接口配置为RS232,成为实际上的PC界默认标准。
所以现在PC的COM口均为RS232,这就要求与PC进行串口通信的设备需要满足RS232的串行通信协议。
随着串行通信的广泛应用,一些芯片也集成了串行通信模块,这使得这些芯片与PC机通信的应用在工业领域快速地发展起来。
DSP芯片就是其中一种,并且随着它的性能不断的提高,在工业控制和网络通信等方面得到了广泛的应用。
本系统包括三部分,分别为串行通信模块、数据采集模块、显示模块。
主要功能是利用DSP的片上资源实现与PC的串行通信、DSP与上位机串行通讯之间的简单协议设计实现及联合调试、模拟量的采集上传,发送和接收数据的显示。
其系统框图如图1.1所示。
图1.1系统总体结构框图
因为DSP是TTL(5V)电平,而PC是RS-232(15V)电平。
所以在DSP的SCI输入端RXD和输出端TXD与RS-232电缆之间应接入电平转换器。
常用的有MC1488发送器,MC1489接收器,MC145406收发器,这些芯片均需要±12V电源。
为减少电源数量,现有多种内部含有电源变换的电平转换芯片,如MC145407、MAX232等。
本方案选择MAX232,它有两对转换器,完全满足课题所需。
DSP通过连接一个ADC0809就可实现数据的采集,但是它占有较多的IO口线,同时还有速度匹配的问题不容易实现,占用板子的空间也比较大。
而DSP内部含有A/D模块,其硬件由模拟输入管脚、模拟输入多路开关、排序器、ADC转换器、数字多路开关和寄存器组成,它们的工作由相应的配置寄存器控制。
A/D转换最小时间可达到500ns时间,16个模拟输入通道通过一个模拟开关共用一个10bit的A/D转换器,各通道的选通由ADC的控制寄存器控制,通过时分复用方式完成所有的转换,转换结果也可由控制寄存器决定结果放到任意一个结果寄存器中,在测量点较少时就外部可以不用接入模拟开关,所以系统选择DSP芯片内部的AD模块。
通过加上一些少量的外围电路,应用DSP内部含有A/D模块通过相应的寄存器控制完全可以实现少量点的数据采集。
显示可以用数码LED和液晶LCD来完成,前者可以用移位寄存器74LS164来驱动,74LS164是8位串入并出移位寄存器,可以实现LED的显示,但是显示的位数较多时,需占用较多的I/O口线,占用板子的空间也较大。
后者它将LCD控制器、驱动器、RAM、ROM和LCD显示器集成到了一块PCB板上。
这种模块与DSP芯片借口简单,使用方便。
本系统选用液晶显示模块作为系统的显示器。
第2章DSP的SCI和A/D的原理
2.1DSP的SCI模块原理
TMS320LF2407ADSP内部集成有串行通信接口SCI模块。
SCI模块支持DSP与其它使用标准格式外设之间的数字通信。
SCI接收器和发送器是双缓冲的,每一个都有自己单独的使能和中断标志位。
两者可以独立工作,也可以在全双工的方式下同时工作。
为确保数据的完整性,SCI还可以对接受到的数据进行间断检测、奇偶性校验、超时和帧出错的检查。
通过一个16位的波特率选择寄存器,数据传输的速度可以被编程为65000多种不同的方式。
SCI模块的特征有
(1)两个外部引脚:
SCITXD:
SCI发送数据引脚,SCIRXD:
SCI接收数据引脚。
(2)通过一个16位的波特率选择寄存器,可编程为64K种不同速率的波特率;在40MHz的CPU时钟方式下,波特率范围从76bps到1875Kbps。
(3)数据格式:
一个启始位;1—8位的可编程数据字长度;可选择的奇/偶/无校验位;一个或两个停止位。
(4)四种错误检测标志位:
奇偶错、超时、帧出错或间断检测。
(5)两种唤醒多处理器方式:
空闲线或地址位唤醒。
(6)半双工或全双工操作。
(7)双缓冲的接收和发送功能。
(8)发送和接收的操作可以利用状态标志位通过中断驱动或查询算法来完成。
发送器:
TXRDY标志(发送缓冲寄存器准备接受另一个字符)和TXEMPTY标志(发送移位寄存器空);接收器:
RXRDY标志(接收缓冲寄存器准备接收另一个字符)、BRKDT标(间断条件发生)和RXEERR标志(监视4个中断条件)。
(9)发送器和接收器的中断位可独立使能(除BRKDT外)。
(10)不返回零(NRZ)格式。
SCI模块的10个控制寄存器地址位于7050h—705Fh之间。
2.1.1SCI的相关寄存器
TMS320LF2407ADSP中与串行通信有关的寄存器在完成SCI模块串行通信功能中起着至关重要的作用,对SCI模块串行通信的控制、操作方式和通信协议的选择、波特率和字符格式的选择、中断优先级的选择和使能等都是通过寄存器来完成的,SCI模块的编程主要也是对这些寄存器进行操作。
因此熟练掌握这些寄存器的使用对进行DSP串行通信编程是非常重要的。
下面是2407ADSP中与串行通信有关的寄存器:
通信控制寄存器:
SCICCR。
定义了用于SCI的字符格式、协议和通信模式,地址为7050h。
SCI控制寄存器1:
SCICTL1。
控制着接收器和发送器使能位、TXWAKE和SLEEP功能、内部时钟使能以及串行通信接口的软件复位。
其地址为7051h。
波特率选择寄存器:
SCIHBAUD和SCILBAUD。
SCIHBAUD(高字节)和SCILBAUD(低字节)连接在一起形成16位波特率值。
其地址分别为7052h和7053h。
SCI控制寄存器2:
SCICTL2。
用来反映发送准备好和发送缓冲器空及使能间断检测和SCITXBUF中断。
其地址为7054h。
接口状态寄存器:
SCIRXST。
包括7个接收状态标志位,其中2个可产生中断请求。
每次将一个完整的数据传送到接收缓冲器(SCIRXEMU和SCIRXBUF)时,这些状态标志位都被更新。
每次读接收缓冲器时,标志位被清除。
其地址为7055h。
接收数据缓冲寄存器:
SCIRXBUF和SCIRXEMU。
接收数据从RXSHF传送到接收数据缓冲寄存器中。
当传送操作完成时,RXRDY标志位置位,这表明接收到的数据已经准备好。
两个寄存器中存放着相同的数据;它们有分开的地址但在物理上并不是分开的缓冲器。
它们的区别是:
SCIRXEMU寄存器主要是由仿真器(EMU)使用,读SCIRXEMU操作并不清除RXRDY标志位,而读SCIRXBUF操作会清除该标志位。
其地址分别为7056h和7057h。
发送数据缓冲寄存器:
SCITXBUF。
发送的数据被写入到发送数据缓冲寄存器中。
数据从该寄存器传送到发送移位寄存器(TXSHF)的操作将置位TXRDY标志位,这表明可向SCITXBUF寄存器写入新数据
还有优先级/仿真控制寄存器:
SCIPRI;中断屏蔽寄存器:
IMR;外设中断向量寄存器:
PIVR。
系统控制与状态寄存器1:
SCSR1;I/O多路控制寄存器A:
MCRA等等。
2.1.2波特率计算
TMS320LF2407A中的串行通信接口模块的通信速率是由芯片时钟(CLKOUT)和波特率选择寄存器(SCIHBAUD和SCILBAUD)共同决定的。
其波特率共有64K
种可供选择。
采用30MHz时钟输出时,其波特率最小为57.2bps,最大可达1875Kbps。
可通过设置波特率选择寄存器SCIHBAUD(高位)和SCILBAUD(低位)来组成一个16位的字并将该字转换为十进制即可得到一个0~65535的值,而这个被定义为BRR的十进制值则可用来设置串行通信接口模块的波特率。
具体波特率的设置方法如下:
(1)当BRR=0时,波特率=芯片时钟频率/16;
(2)当1≤BRR≤65535时,波特率=芯片时钟频率/[(BRR+1)×8]。
2.2DSP的A/D模块原理
带内置采样和保持的10位模数转换模块ADC,最小转换时间为500ns;具有多达16个的模拟输入通道(ADCIN0—ADCIN15);具有自动排序的能力,一次可执行最多16个通道的“自动转换”,而每次要转换的通道都可通过编程来选择;两个独立的最多可选择8个转换通道的排序器可以独立工作,也可以级连后工作,排序控制器可决定模拟通道转换的顺序;可单独访问的16个转换结果寄存器;多个触发源启动转换:
软件设置启动标志、事件管理器(共两个)提供多个事件源、外部ADCSOC引脚;灵活的中断控制,采样和保持获取时间窗口有单独的预定标控制,并且内置校验模式和自测试模式。
2.2.1A/D转换过程
A/D转换模块接到启动转换信号后,按照排序器的设置,开始转换第一个通道的数据;经过一个采样时间的延迟后,将采样结果放入转换结果寄存器保存;按顺序进行下一个通道的转换;转换结束,设置标志,也可发出中断;如果为连续转换方式则重新开始转换过程;否则等待下一个启动信号。
A/D转换相对于计算机来说是一个较为缓慢的过程,一般采用中断方式启动转换或保存结果,这样在CPU忙于其它工作时可以少占用处理时间。
设计转换程序应首先考虑处理过程如何与A/D转换的时间相匹配,根据实际需要选择适当的触发转换的手段,也要能及时地保存结果。
2.2.2A/D转换的相关寄存器
掌握2407ADSP的A/D转换模块相关的寄存器是非常重要的,正是这些寄存器的相互作用实现了简单的数据采样功能,下面介绍一下主要的寄存器的功能。
ADCTRL1主要负责A/D模块的复位,采样/保持窗口时间的预定标系数,转换时间的预定标,转换模式的选择,中断的优先级,校准等。
ADCTRL2主要负责事件触发使能,触发的形式,中断的模式的选择,排序器的忙闲标志位,排序器的复位。
其它寄存器MAXCONV负责转换的次数,AUTUSEQSR负责排序器当前的状态,CHSELSEQn负责通道的选择,RESULTn负责采样结果的存放等。
第3章硬件设计
本课题采用DSP的240xA系列单片机LF2407A作为核心部件,由片内SCI模块和外围电路组成串口通信接口和上位机进行通信,并把结果送入液晶显示。
再由片内AD模块和外围电路组成数据采集系统,然后把结果通过串口通信送给上位机,同时送入LCD显示其十六进制值和实际值。
硬件系统主要由LF2407A最小系统模块、串口通信模块、数据采集模块、显示模块等组成,本章就各部分的具体设计作简单介绍。
3.1DSP最小系统
该系统由电源电路、时钟电路、复位电路等组成。
电源电路为最小系统板提供必要的电源。
时钟电路是为LF2407A芯片提供一个系统时钟。
复位电路主要提供一个复位信号,它们三部分是DSP最小系统板正常工作的前提。
3.1.1电源电路设计
LF2407A使用的是5V电源输入,输入后在板上要对其进行降压,使其降为3.3V的内部电源。
电路如图3.1所示。
图3.1电源电路
此电路可同时产生+5V和+3.3V的直流电源。
这种设计主要是为了一些系统板芯片工作电压的需要例如MAX232E需要+5V电源而LF2407A需要+3.3V电源。
VDD是经过变压整流滤波后的直流电源输入,范围为8V到12V。
三端集成稳压器7805和电容C1,C2共同构成产生+5电源的电路,其中C1、C2为滤波电容,用来消除低频和高频干扰。
7805输出的+5V电源经IPS7133稳压到3.3V,C3、C4也是起滤除干扰作用的。
3.1.2时钟电路设计
TMS320LF2407A上集成有PLL(锁相环)时钟模块,可以为DSP芯片及外设提供所需的时钟信号。
PLL可提供4种时钟信号:
供CPU内核、片内寄存器、片内设备使用的CPUCLK;系统时钟SYSCLK,一般为CPUCLK的1/2或1/4;供模拟模块使用的ACLK,一般为1MHz;供WATCHDOG计数/实时中断模块使用的WDCLK,一般为16KHz。
PLL模块可以按照4、2、1.33、1、0.8、0.66、0.57、0.5的倍率进行倍频或分频。
此系统的时钟信号由外部提供,由于TMS320LF2407A的速度可达30MIPS,所以选择10MHZ的晶振,从XTALI/CLXIN和XTAL2输入,经PLLF和PLLF2倍频成20MHZ信号,供DSP使用。
电路图如图3.2所示:
图3.2时钟电路
2407A器件的PLL模块需要外部的RC元件进行回路滤波。
保持回路滤波的元件(R13,C18,C19)要接到PLLF和PLLF2引脚。
PLL电路的所有走线应尽可能短。
在PLLVCCA需要接一个旁路电容C20,以减少高频干扰。
3.1.3复位电路设计
LF2407A可以进行多重复位,第一次复位产生与对U10的调整,这个设置将等待LF2407的RESET管脚上的电压到内部电压到达指定范围为止。
系统也可以进行输入输出的复位,内部复位是利用看门狗在RS-管脚拉底的情况下产生的,外部复位时只要选择SW1。
SW1是用户复位开关,按下这个开关,LF2407-A即刻就会复位。
电路图如图3.3所示。
图3.3复位电路
上电后,由于电容C1充电时,使RST产生一段时间低电平后又变成高电平,按下复位键K后松开,也能使RST为一段时间的低电平,从而实现上电或开关复位的操作。
R1和C2起延时作用,确保复位的可靠性。
3.2串行通信模块
2407A芯片内部集成了一个串行通信接口(SCI)模块,该模块是一个标准的通用异步接收/发送(UART)通信接口,有SCITXD(SCI发送输出引脚)和SCIRXD(SCI接收输入引脚)两个外部引脚,引脚的信号电平为TTL类型。
而PC机串口的异步串行通信基于RS232C标准,两者的信号逻辑电平不一致,必须进行信号电平转换。
本设计选用内部含有电压倍增电路的电平变换芯片MAX232,MAX232有两对收/发单元,而实现DSP与PC之间的串口通信只需一对收/发单元即可,所以不但满足课题所需,并且为以后多机通讯提供了扩展的可能。
实际应用中,MAX232器件对电源噪声很敏感,因此MAX232的Vdd引脚必须要对地加1uF去耦电容。
另外,为提高抗干扰能力,添加了四个1uF电容,连接在内部电源引脚输出端。
芯片第7、8引脚分别接到串行插槽的第3、2引脚;9、10引脚接DSP的RXD、TXD引脚。
需要注意的是,MAX232是5V器件,而DSP是3.3V供电,因此需要考虑电平转换,否则将无法正常收发数据。
由于Maxim公司已经注意到这点并推出了专用3.3V供电的器件MAX232E,利用它就可以无需考虑3V到5V的电平转换问题。
MAX232E与处理器的接口电路如图3.4所示。
图3.4MAX232C与处理器的接口电路
3.3数据采集模块
2407A芯片内部有16个模拟输入通道,分别为ADCIN00到ADCIN15。
本系统选用ADCIN00作为模拟输入端口,并在输入端口上加一个1K的电阻R1来解决和DSP芯片内阻抗匹配的问题。
AD模块选用的参考电压为3.3V,由于模拟输入信号未经任何转换就进入DSP,所以必须保证输入的模拟信号的幅度在0到3.3V之间。
外接信号源,则必须用示波器检测信号范围,保证最小值0V最大值3.3V,否则容易损坏DSP芯片的模数采集模块。
本系统模拟源用一个接有3.3电源的10K电位器来代替。
具体电路图如图3.5所示。
图3.5AD模块外围电路图
当按键被按下的时候会产生一个低电平,从而触发LF2407A产生ADC中断,并进行相应的处理。
3.4显示模块的硬件设计
本系统选用液晶显示模块SMC1602作为系统的显示器,它具有简单而功能较强的指令集,可实现字符移动、闪烁等功能。
液晶显示屏上排列着32个5×7点阵的字符显示位,每个显示位可显示1个字符,共分两行,每行16个字符。
一般地,主控CPU与SMC1602B液晶模块的硬件接口有总线方式和模拟口线方式两种,这里,我们以2407A作为主控CPU,使用总线接口方式。
通过数据总线与控制总线,直接采用I/O设备访问形式控制该液晶显示模块。
由于液晶显示模块SMC1602B是8位Μp接口的,故只须将2407A的8位数据口IOPB与之相连即可。
数据口IOPE0、IOPE1和IOPE2分别与模块的使能信号E、读写选择信号R/W和命令数据选择信号RS相连,即可直接对DSP的I/O存储器空间进行相应的操作实现显示的功能。
液晶显示模块SMC1602为标准的16脚接口,其中VSS为地电源,VDD接5V正电源,Vo为液晶显示器对比度调整端,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度,RS为寄存器选择端,高电平时选择数据寄存器、低电平时选择指令寄存器。
RW为读写信号线,高电平时进行读操作,低电平时进行写操作。
当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平、R/W为低电平时可以写入数据。
E端为使能端,当E端口由高电平跳变成低电平时,液晶显示模块执行读写数据操作。
D0-D7为8位双向数据线。
同时在DSP芯片的PB口上加上上拉电阻来提高PB口的驱动能力。
寄存器选择功能由RS和
寻址,共有4种寻址如表3.1所示。
表3.1LCD寄存器选择表
RS
R/W