天津大学2010届本科生毕业设计(论文)
XCLKINX1X220M 图3-1 TMS320F2808的时钟电路
DSP要求复位信号从低到高之前,时钟必须已经稳定工作了若干时间(毫秒级) ,同时对复位信号的低电平宽度也有要求,而且复位信号上不应有毛刺出现,可以说复位电路对微处理器来说非常重要。本文采用的复位电路如图18所示,延迟电路加上反相施密特触发器可以保证电路板加电后,无需手动复位或外加复位,DSP就能正常启动和工作。
Vcc反相施密特10K触发器DSPReset10?F 图3-2 TMS320F2808的复位电路
3、上位机通讯电路
在惯导系统中,需要导航计算机对加速度信息进行存储、分析等处理,这就使得在再平衡回路设计中要考虑与导航计算机的通讯。在TMS320F2808中有两个串行通讯(SCI)接口,在本次设计中我们将SCIA用作和上位机通讯的接口。由于PC机串行口使用的是标准RS-232-C电平,与DSP并不匹配,所以在DSP和PC机之间采用MAXIM公司的MAX232进行电平转换。
3.2 开发工具CCS简介
CCS是TI推出的用于开发其DSP芯片的集成开发环境,它采用了windows风格界面,集编辑,编译,链接,软件仿真,硬件调试以及实时跟踪功能于一体,极大地方便了DSP程序的设计与开发[13]。
本课题使用的是CCSV3.3版本,安装CCS之后运行软件之前,需要首先运行CCS的设置程序。该设置程序用于建立CCS集成开发环境与目标板或者simulator之间的通信接口。CCS是一个开放的环境,通过设置不同的驱动完成
11
天津大学2010届本科生毕业设计(论文)
对不同环境的支持。本课题使用了ICETEK-5100USB2.0A仿真器来实现程序的在线调试和下载。
在windows环境下安装CCS3.3软件后,在桌面上会出现Setup和应用程序的两个快捷按钮。Setup主要用来配置所需要开发的处理器类型,硬件设备的选择情况等,应用程序启动CCS IDE开发环境,编写,调试以及优化代码。为了使开发环境能够通过仿真器同目标硬件系统建立可靠的联系,必须安装相关的驱动程序。不同版本的驱动支持的软硬件有所区别。
目标系统配置选择好开发板和处理器之后,需要添加GEL文件,即通用扩展语言,它类似于C语言,可以用来配置CCS开发环境,也可以用来初始化目标CPU。CCS提供了丰富的内嵌GEL函数,用户也可以自己定义GEL函数[14]。在处理器属性的GEL文件窗内为每个处理器选择用户的GEL文件。然后保存并退出,开始程序的编写。
3.3 SPI程序相关
SPI(Serial Peripheral Interface--串行外设接口)总线系统是一种同步串行外设接口,它可以使MCU与各种外围设备以串行方式进行通信以交换信息。外围设置 FLASHRAM、网络控制器、LCD显示驱动器、A/D转换器和MCU等。SPI总线系统可直接与各个厂家生产的多种标准外围器件直接接口,该接口一般使用4条线:串行时钟线(SCK)、主机输入/从机输出数据线MISO、主机输出/从机输入数据线MOSI和低电平有效的从机选择线SS。SPI有主控和从动两种工作模式。有125种可编程的波特率。数据字长1~16位。在点对点的通信中,SPI接口不需要进行寻址操作,且为全双工通信,显得简单高效。在多个从器件的系统中,每个从器件需要独立的使能信号,硬件上比I2C系统要稍微复杂一些。SPI接口在内部硬件实际上是两个简单的移位寄存器,传输的数据8位,在主器件产生的从器件使能信号和移位脉冲下,按位传输,高位在前,低位在后。
本课题中DSP工作在主机输入从机输出的模式,把ADS1271转化后的数字信号传输到DSP中进行后续处理。SPI程序使用中断的方式编写,ePWM模块提供时序信号,由于ADS1271输出的数字信号是24位,而SPI的数据字长最多时16位,因此需要在程序中用两个变量data1和data2分别存储数据的高低位,然后连接起来存入变量data中让后续SCI程序处理。具体的程序参见附录。
3.4 SCI程序相关
SCI串行外设接口总线系统是一种两线异步串行外设接口,也可以使MCU与各种外围设备以串行方式进行通信,也就是通常所说的UART。SCI模块支持CPU和其他使用标准不归零格式的外部设备之间的异步数字通信。为了减少CPU的开销,串行通信接口SCI接收器和发送器都有一个16级深的FIFO缓冲器,且有各自的使能位和中断位。它们能够在半双工模式下分时工作或者在全双工模式下同时工作。为了保证数据的完整性,SCI模块会对接受数据进行中断检测、奇偶校验、溢出和帧信息错误检测等。此外,通过一个16位的波特率选择寄存器,可以对波特率进行编程。SCI模块有两个外部引脚:发送输出引脚SCITXD和接受输入引脚SCIRXD。数据字的格式包括一个启动位,数据字长度(1~8)位可编程,可以选择奇校验、偶校验和无奇偶校验工作模式,可以选择一个或两个停止位。F2808的SCI和以往的DSP的SCI相比具有两个特点:一是传送、接收都具有独立的FIFO:二是波特率可以自动检测。自动波特率检测
12
天津大学2010届本科生毕业设计(论文)
逻辑主要解决通信过程中终端波特率的确定问题。而其16字的FIFO可大大减少通信中断次数,提高通信速率。SCI有一个16位的波特率选择寄存器,通过改变寄存器的值可以得到多于65000种的波特率。
本课题中DSP利用SPI接收到表头在同一位置时发出的5个数据之后分别通过子函数把5个数据转化成字符串格式以便发送,接着编写字符串连接子函数把5个字符串连接起来一起加上帧头?*?之后发送出去,详细程序参见附录。 DSP程序的流程图如下: N 等待中断 初始化系统各模块 N Y 关中断 定义各变量及函数 中断次数大于等于5 开始 数据转化为字符串逐个连接在‘*’之后 用SCI发送字符是否中断 串 通过SPI接受数 据 图3-3 DSP程序流程图
Y 结束
13
天津大学2010届本科生毕业设计(论文)
第四章 LabVIEW程序
4.1 LabVIEW简介
LabVIEW是一种程序开发环境,由美国国家仪器(NI)公司研制开发的,
类似于C和BASIC开发环境,但是LabVIEW与其他计算机语言的显著区别是:其他计算机语言都是采用基于文本的语言产生代码,而LabVIEW使用的是图形化编辑语言G编写程序,产生的程序是框图的形式。
与C和BASIC一样,LabVIEW也是通用的编程系统,有一个完成任何编程任务的庞大函数 库。LabVIEW的函数库包括数据采集、GPIB、串口控制、数据分析、数据显示及数据存储,等等。LabVIEW也有传统的程序调试工具,如设置断 点、以动画方式显示数据及其子程序(子VI)的结果、单步执行等等,便于程序的调试。
虚拟仪器(virtual instrumentation)是基于计算机的仪器。计算机和仪器的密切结合是目前仪器发展的一个重要方向。粗略地说这种结合有两种方式,一种是将计算机装入仪器,其典型的例子就是所谓智能化的仪器。随着计算机功能的日益强大以及其体积的日趋缩小,这类仪器功能也越来越强大,目前已经出现含嵌入式系统的仪器。另一种方式是将仪器装入计算机。以通用的计算机硬件及操作系统为依托,实现各种仪器功能。虚拟仪器主要是指这种方式。
4.2 串口说明
串口通信是计算机上一种非常通用设备通信方式,同时也是仪器仪表设备
通用的通信方式。RS-232总线是早期采用的通用串行总线,很多GPIB兼容的设备也带有RS-232口。串口通信的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同 时用另一根线接收数据,能够实现远距离通信。串口通信主要用于ASCII码字符的传输。在开发DSP的控制系统时需要测试DSP的串行通信接口(SCI),模拟实现上位机与下位机即PC与DSP通信。PC机的串口通信软件可用VC++或VB编写,但是这些高级语言程序代码冗长复杂,不便进行功能拓展。如果对串口数据进行分析,则需推翻原有程序结构,重新编制代码。而图形化编程语言LabVIEW的出现为串口调试与数据分析带来了极大方便。LabVIEW提供了各种图形化程序,用户不必熟悉串口总线,利用提供的图形化驱动程序就可以驱动串口通信。本课题开发了基于LabVIEW的串口调试程序,并成功实现了PC与DSP
[15]
的串行通信。
4.3 LabVIEW程序说明
考虑到软件的实用性和开放性,采用VISA(虚拟仪器软件规范)接口模块来进行编程。VISA是应用于仪器编程的标准I/O应用程序接口,是工业界通用的仪器驱动器标准API(应用程序接口),采用面向对象编程,具有很好的兼容性、扩展性和独立性。例如本课题编写的VISA接口程序,当外部设备变更时,只需要更换几个程序模块即可,很方便而且开发效率高[16]。
LabVIEW 的功能模块VISA中包含串行通信常用功能的模块。串口通信使用的VISA库中的串口通信函数包括VISA配置串口,VISA写入,VISA读取。VISA关闭等。VISA配置串口用于串口的初始化,可以设置VISA资源名称,波特率,
14
天津大学2010届本科生毕业设计(论文)
数据位,停止位等信息,本课题所用串口波特率是9600,8位数据位,1位停止位,这些可以通过前面板很方便地设置。VISA读取是这个课题中的主要节点,将串口中的数据读出,然后利用LabVIEW强大的数据处理功能进行分析处理,它需要连接VISA资源名称,byte count端用于设置所要读取的字符数。VISA关闭用于把打开的VISA资源关闭。为了串口读取数据的准确,在读取之前加一个延时模块,延时时间可用前面板输入。LabVIEW从缓冲区中读出字符串流,判别帧头?*?,然后读取接下来的40个字符,字符流在截取字符串VI的作用下分成5段并转化成数值,除去信号处理电路的增益就可以得到采样电阻上的电压值,以此值作为加速度计的输出。根据第五章介绍的实验方法,程序需要在四个位置分别记录数值,这个操作通过一个分支结构来控制。接着程序把电压值以表格的形式存在文本文档中以便日后查询。最后表头在各个位置时得到5个电压值会被平均,通过第五章中的公式就可以求出模型方程的系数。由于数据都是成行地出现,所以程序中使用了很多数组处理的VI,例如,数组合成,多维数组拆分为一维数组等。程序中还使用数理统计中的求均值VI。这些VI的使用大大简化了程序的设计,而不用去整理大段的代码,正体现了图形化编程软件的优势。 LabVIEW程序的流程图如下: 把字符串拆违5段,开始 每段转化为数据 串口初始化 除掉电路中产 生的倍数,存入 Y 文本文档 1秒的延时 取出数据, N 计算参数 帧头是‘*’ 结束 图4-1 LabVIEW程序流程图
15