上位机采用Visual Basic6.0(以下简称VB)语言编程实现,利用VB 中提供的MSComm 控件可以实现PC 机与下位机的通信。利用MSComm 实现通信有两种方法:一是事件驱动 方法,也就是OnComm 事件。当有数据到达端口或端口状态发生改变或有通信错误产生时, 都将发生OnComm 事件。另一种就是查询方式。查询方式是通过周期性读取缓冲区的信号来发现是否有事件发生并进行处理的方法。本设计中,发送采用查询方式,接受采用事件驱 动方法。MSComm 控件初始化程序如下:
MSComm1.CommPort = 1 '端口号'
MSComm1.Settings = "38400,n,8,1"
'波特率38400bit/s,8 位数据位,无奇偶校验,1 位停止位'
MSComm1.InputLen = 0
MSComm1.InBufferCount = 0 '清空接收缓冲区'
MSComm1.OutBufferCount = 0 '清空'
MSComm1.RThreshold = 1 '接收缓冲区或发送缓冲区中可以接收的字符数'
MSComm1.PortOpen = True
应实际要求,我们要在通信中同时传输数据和控制字符,所以数据传输同时采用ASCⅡ 码和二进制两种形式。这就需要在每次传输前改变MSComm1.InputMode 的属性。
TMS320F2812(SPI 通信中主处理器)在完成时钟和中断初始化后,对其SCI 寄存器进 行设置,使其通信协议和上位机一致。TMS320F2812 采用查询方式给上位机发送数据,中 断方式接受上位机的数据。SCI 寄存器设置如下:
SciaRegs.SCICCR.all=0x0007;
/*一个停止位,禁止奇偶校验,禁止自测,8 个字符*/
SciaRegs.SCICTL1.all=0x0003;
/*禁止接受错误中断,复位,禁止休眠,开启发送使能*/
SciaRegs.SCICTL2.all=0x0002;
/*开接受中断,关发送中断*/
SciaRegs.SCIHBAUD=0x00;
SciaRegs.SCILBAUD=0x79;
/*波特率38400*/
SciaRegs.SCICTL1.all=0x0023;
/*开始使能SCIA*/
5 结束语
以上为解决两个DSP 之间以及DSP 与PC 机之间的通信的软硬件设计方案,当上位机 发送给定信息(位置信息)后,下位机接受到数据并传输给SPI 处理器,上位机和下位机界 面如图6、图7。
系统的最大特点是根据实际需要,采用同时同步和异步两通信方式。双系统间的同步串 行通信,保证了双系统运行的同步性;通过PC 机和上位机的异步串行通信,实现把DSP 采集的一系列数据通过串口发送至PC 机,解决了DSP 存储空间有限的问题,在PC 上可以很方便地对数据进行一些在DSP 上难以实现的处理,得到一些数据曲线等,效果直观便捷。此系统已应用与某一开关磁阻电机电机并联控制系统中,运行稳定,通信性能良好。