摘要:本文以DSP TMS320F2812 为控制核心,介绍DSP 片内SCI 串行通信接口的特点,分别叙述了上位机与下位机连接的硬件设计过程。介绍了运用TMS320F2812 的SCI 模块和LabView 软件实现DSP 与PC 机串口通信的方法。通过串口通信软硬件的设计,实现了中央处理器与底层控制器DSP 之间的控制信息快速、准确的收发。运用上位机控制界面可以准确地对控制系统进行控制,并提取系统相关波形和参数。
关键词: 电力电子;DSP 控制;串行通信;上位机;SCI
0 引言
TMS320F2812 是基于TMS320C2XX 内核的定点数字信号处理器,集成了多种先进的外设[1] [2],为电机及其运动控制的实现提供了良好的平台。DSP2812 由16 通道的12 位A/D 模块,串行外设口(SPI),串行通信接口(SCI)和时间管理器模块(EVA、EVB)。
在通信领域内,有两种数据通信方式:并行通信和串行通信。随着计算机网络化和微机分级分布式应用系统的发展,通信的功能越来越重要。串行通信是指计算机主机与外设之间以及主机系统与主机系统之间数据的串行传送。使用串口通信时,发送和接收到的每一个字符实际上都是一次一位的传送的,每一位为1 或者为0。DSP2812串行通信接口(SCI)是采用双线制通信的异步串行通信接口(UART)。SCI 模块采用标准非归零数据格式(NRZ),能够实现多CPU 之间或同其他具有兼容格式SCI端口的外设进行数据通信[3]。准确的数据通信可以实现控制系统的简单、快捷的操作和进行数据采集,同时也是实现移动机器人运行的重要技术之一。
1 串口通信硬件设计
SCI 模块的接收器和发送器是双缓冲的,每一个都有自己单独的使能和中断标志位。两者可以单独工作,也可以在全双工模式下同时工作。
串行通信接口RS-232C 是PC 机上的标准配置。RS-232C 标准是美国EIA(电子工业联合会)与BELL 等公司一起开发的1969 年公布的通信协议。它适合于数据传输速率在0~20000b/s 范围内的通信。这个标准对串行通信的有关问题,如信号线功能、电器特性都作了明确规定。由于通行设备厂商都生产与RS-232C 制式兼容的通信设备,因此,它作为一种标准,目前已在微机通信接口中广泛采用。RS-232C 是用正负电压来表示逻辑状态,并且是负逻辑,而TTL 则以高低电平表示逻辑状态,且为正逻辑,两者的规定是不同的。为了能够将TTL 器件与EIA 器件连接,保证二者之间正常通信,必须在它们之间进行电平和逻辑关系的变换[4]。本系统使用Maxim 公司生产的集成芯片MAX232 来实现这一变换,MAX232 芯片功耗低,集成度高,+5v 供电,具有两个接受和发送通道。
2 串口通信软件设计
2.1 DSP 软件设计
SCI 异步通信采用半双工或全双工通信方式。SCI 的数据帧包括1 个起始位、1~8 位的数据位、1 个可选的奇偶校验位和1 或2 个停止位,如图2 所示。每个数据位占用8 个SCICLK时钟周期。接收器在收到一个起始位后开始工作,4 个连续SCICLK 周期的低电平表示有效的起始位,如果没有连续4 个SCICLK 周期的低电平,则处理器重新寻找另一个起始位。
对SCI 数据帧的起始位后面的位,处理器在每位的中间进行3 次采样,确定位的值。3次采样点分别在第4、5、6 三个SCICLK 周期,3 次采样中2 次相同的值即为最终接收位的值。
DSP 软件部分主要包括SCI 模块初始化、发送数据子程序和接受中断子程序。采用SCI接口实现DSP 与外部串口设备的通信,除了硬件上需要电平转换外,还需要根据通信的要求对处理器的SCI 接口模块进行初始化操作。在SCI 初始化程序中主要包括串口通信的引脚功能配置、通信控制、状态选择以及中断配置等[5]。
初始化串口:本设计的波特率可以在前面板任选,通信采用9600,无奇偶校验,8 位数据位,1 位停止位,禁止软硬件握手。
接受与发送:通常情况下LabView 串口VI 接受或发送的都是字符串,所以,如果需要发送或接受十六进制数值,需要在发送或接受之前进行必要的转换。在DSP 中一次连续发送两个八位的十六进制数构成一个完整的十六位的信息,并用一维数组进行存放。
DSP 中采用CCS 软件进行C 语言编程,SCI 初始化程序如下:
void InitSci(void){// Initialize SCI-A:
EALLOW;GpioMuxRegs.GPFMUX.all = 0x0030; //配置SCI-RX,SCI-TXSciaRegs.SCICCR.all = 0x0007; //1 个停止位SciaRegs.SCICTL1.all = 0x0003; //使能TX,RX,内部SCICLKSciaRegs.SCIHBAUD = 1952 >> 8; //设置波特率9600(时钟频率150MHz)SciaRegs.SCILBAUD = 1952 & 0x00FF;SciaRegs.SCICTL1.all = 0x23; //使SCI 退出复位SciaRegs.SCICTL2.bit.RXBKINTENA =1; //使能SCI 接收中断PieVectTable.RXAINT = &SCI_RX_isr; //设置中断向量PieCtrl.PIEIER9.bit.INTx1 = 1;IER|= 0x100;EDIS;}
发送数据子程序如下:
void Sci_Send_data(Uchar data) //DSP 向上位机发送数据{EALLOW;if (SciaRegs.SCICTL2.bit.TXEMPTY == 1) //状态检测{SciaRegs.SCITXBUF = data; //数据移入发送寄存器}
EDIS;}
接受数据中断程序如下:
interrupt void SCI_RX_isr(void) //接受中断,DSP 接收上位机发送的数据{recieve_data = SciaRegs.SCIRXBUF.all; //将接收数据存入变量中s[t]=recieve_data;t++;PieCtrl.PIEACK.all=0x0100; //清除中断标志位EINT;return;}
2.2 上位机软件设计
上位机软件采用Labview 编程系统进行程序开发。与C 和BASIC 一样,Labview也是通用的编程系统,有一个完成任何编程任务的庞大函数库。Labview 的函数库包括数据采集、GPIB、串口控制、数据分析、数据显示及数据存储,等等。Labview 也有传统的程序调试工具,如设置断点、以动画方式显示数据及其子程序(子VI)的结果、单步执行等等,便于程序的调试。它主要的方便就是,一个硬件的情况下,可以通过改变软件,就可以实现不同的仪器仪表的功能,非常方便,是相当于软件即硬件[6]。上位机软件设计如图2 所示,程序启动时需要先选择串口,选择相应的波特率并打开串口。通过上位机程序可以方便的对系统进行控制,包括启动、停车、加速、减速等,并可以提取相关系统信息进行必要的数据采集。
3 程序流程图
4 结论
本文设计了一种DSP TMS320F2812 与PC 机之间进行串口通信的实现方法,给出了系统硬件设计电路和软件设计程序。通过LabView 软件对上位机程序进行软件开发,使端口与底层控制器DSP 能进行有效地接受、发送信息,从而实现系统的快捷操作和直观分析。
本计算机论文来自专业的
计算机论文代写网,如需转载请保留连接:
http://www.zdlunwen.com/sjkby.html
[参考文献] (References)
[1] 苏奎峰,吕强,常天庆等. TMS320X281X DSP 原理及C 程序开发[M]. 北京:北京航空航天大学出版社,2008.
[2] 苏奎峰,蔡昭权,吕强等.TMS320X281X DSP 应用系统设计[M]. 北京:北京航空航天大学出版社,2008.
[3] 张雄伟,曹铁勇. DSP 芯片的原理与开发应用(第2 版) [M]. 北京:电子工业出版社,2000.
[4] 张稳稳,欧阳娴. PC104 串口通信在工程中的应用[J]. 微计算机信息,2006 1-1:57-59.
[5] 曹军军,陈小勤,吴超. TMS320X2812 型数字信号处理器与PC 的串行通信. 国外电子元器件.2005,2(8):38-40[6] 刘君华,贾惠芹.丁晖等. 虚拟仪器图形化编程语言LabVIEW 教程[M]. 西安:西安电子科技大学出版社.2001.