DSP串行通信在减摇水舱试验台架控制系统中的应用
07串行通信接口模块的数据接收和发送均有其独立的外设中断向量,并可使用高优先级或低优先级,中断服务程序可通过检查外设中断向量寄存器的值来转入相应的接收或发送中断处理程序。
在串行通信中,双方必须使用相同的波特率。SCI使用一个16位波特率选择寄存器可获得65000种不同的可编程波特率,波特率由系统时钟SYSCLK频率和波特率选择寄存器决定,不同通信模式下的串行通信接口波特率计算方法如下:
BRR=1到65535时
SCI异步波特率=
BRR=0时
SCI异步波特率=
(BRR为波特率选择寄存器的十六位值)
在本系统的串行通信过程中,波特率设为9600bit/s,八位数据位,一个停止位,奇校验。为了实现通讯,PC机与TMS320LF2407之间必须采用相同的通信协议。
5 串行通信硬件接口电路及软件编程
5.1 硬件接口电路
PC机串行口使用的是标准RS-232-C电平,低电平"0"在+5V~+15V之间,高电平"1"在-5V~-15V之间。而TMS320LF2407的电源为3.3V,低电平"0"在+0.4V~+0.8V之间,高电平"1"在+2.4V~+2.8V之间。为了使二者电平匹配,在DSP与PC机之间必须进行电平逻辑转换,本系统中采用的是MAXIM公司的MAX232集成芯片。具体硬件接口电路如图所示。
图2 DSP与PC机串行通信硬件接口图
DSP中通信程序设计
DSP的SCI模块使用中断来接收PC机所传送来的参数,供控制算法主程序调用,DSP中串行数据接收流程图如图3所示。
图3 DSP串行数据接收流程图
DSP接收的数据为十六位,所以需要对高八位和低八位分别进行接收,高八位左移八位加上低八位,就是所要的十六位数据,接收的数据依次保存在首地址为4002h的连续单元中。下面为SCI模块初始化和接收中断两部分的汇编语言源程序。
SCI初始化程序如下:
LDP #0E1h
SPLK #0003h, MCRA
; 选中SCI输入输出引脚
LDP #0E0h
SPLK #27h, SCICCR
; 1个停止位,八位数据,奇校验,
; 空闲线方式,禁止自测试
SPLK #0003h, SCICTL1
; 允许TX,RX和内部SCICLK
; 禁止RXERR,SLEEP,TXWAKE
SPLK #0002h, SCICTL2
; 允许RX中断,禁止TX中断
SPLK #0002h, SCIHBAUD
SPLK #0008h, SCILBAUD
; 40MHz SYSCLK下,波特率为9600bps
SPLK #0023h, SCICTL1
; 放弃复位SCI
LAR AR0, #SCITXBUF
LAR AR1, #SCIRXBUF
; 载入两个缓冲器的地址
LDP #0
SPLK #04002h, RTB
; 定义接收数据的首地址
SPLK #01h, NUM
; 设置判别高8位还是低8位的变量
SPLK #0, RTD
; 接收数据寄存器
串行数据接收中断程序如下:
SCI_INT:
LDP #0
LACC #02h
SUB NUM
BCND high, GT
; 判断是否为高8位数据
MAR *, AR1
LACC *, AR1
ADD RTD
SACL RTD
LACC RTB
TBLW RTD
ADD #1
SACL RTB
SPLK NUM
high:
; 读高8位数据
MAR *, AR1
LACC *, AR1
SACL RTD
LACC RTD, 8
SACL RTD
SPLK #02h, NUM
PC机中通信程序设计
在PC机中,串口通信的程序是用Visual Basic 6.0开发的,调用的是Microsoft 公司提供的 MSComm 控件。
MSComm 控件为应用程序提供了通过串行接口收发数据的简便方法,在VB、VC、Delphi等语言中均可使用。它提供两种处理通信的方式:事件驱动方式和查询方式。在这里我们采用的是事件驱动方式,这种方式是处理串行端*互作用的一种非常有效的方法,其优点是程序响应及时,可靠性高。在程序中可以利用该控件的OnComm事件来捕获并处理发送和接收等通信事件;OnComm事件还可以检查和处理通信错误。MSComm 控件的主要属性及其功能如表1所示。
表1 MSComm 控件的主要属性及功能
在上位机的程序设计中,首先进行串口参数初始化设置:
Private Sub Form_Load()
If MSComm.PortOpen=True Then
MSComm.PortOpen=False
End If
′关闭串行端口
intPort=1
serSet=″9600,O,8,1 ″
MSComm.CommPort=intPort
′选择串行端口
MSComm.Settings= serest
′设置波特率9600bps,一个停止位,八个数据位,且为奇校验
MSComm.OutBufferSize=512
′设置发送缓冲区大小
MSComm.PortOpen=True
′打开串行端口
串口通信应用程序的界面如图4所示。
图4 上位机通信程序界面
6 结论
在减摇水舱试验台架控制系统中,采用PC机和DSP的主从式结构。为了提高实时控制的效果,需要进行上位机与下位机之间的串行通信。本文设计的串行通信方法,简便可靠,并且在实际应用中取得了良好的效果。
- 在采用FPGA设计DSP系统中仿真的重要性 (06-21)
- 基于 DSP Builder的FIR滤波器的设计与实现(06-21)
- 达芬奇数字媒体片上系统的架构和Linux启动过程(06-02)
- FPGA的DSP性能揭秘(06-16)
- 用CPLD实现DSP与PLX9054之间的连接(07-23)
- DSP+FPGA结构在雷达模拟系统中的应用(01-02)