摘要:在含有人机界面的数字化电源系统中,为更好地发挥DSP的强大运算功能,可采用DSP+51单片机的双CPU结构,因而二者之间的可靠通信至关重要。在此介绍了TMS320F2812型DSP和MCS51系列单片机的一种通信方案的设计与实现,给出对应的程序,并描述在此通信基础上实现的液晶显示电路和结构。该系统具有硬件电路简单、通信可靠、程序编写简单、界面友好等优点。实验证明系统能完整可靠地实现了人机界面功能,具有较高的实用价值。
0 引言
随着计算机和信息技术的飞速发展,数字信号处理技术得到了迅速的发展。数字控制使得电力电子变换控制更为灵活,在CPU计算速度允许的情况下,可实现模拟控制难以做到的复杂控制算法,设计者可以根据自己的系统需求,方便地更改控制器参数,即便是在控制对象改变的情况下,也无需对控制器硬件做修改,只要改变某些软件参数即可,从而大大增强了系统的兼容性。随着DSP的应用逐渐普及,用DSP取代模拟电路中的专用PWM集成电路,已广泛应用于UPS和逆变器控制中。
作为智能化设备,液晶屏和键盘等人机交互装置是数字化电源系统所必不可少的。而DSP的工作频率较高,读写周期很短,主要用于处理实时性要求苛刻、算法复杂的关键性任务,例如对功率开关管的控制,数据采集、分析、处理等,而液晶显示和键盘扫描的任务可由普通的51系列单片机来完成,而DSP和51单片机间的数据交流可采用异步通信方式,即系统采用双CPU结构。
1 系统的结构原理
本文中所采用的DSP和单片机型号分别是TI公司的TMS320F2812和MCS51系列。在系统中,DSP实现与单片机的串口异步通信,单片机将用户的原始设置数据传输到DSP,而DSP将采集到的实时数据信息返回给单片机,单片机不断刷新液晶的显示。系统的基本结构如图1所示。
图1 系统基本结构框图
1.1 串口介绍
本文中DSP是基于串行通信接口模块SCI实现通信的。SCI支持CPU与其他使用标准格式的异步外设之间的数据通信。SCI仅需要2根数据线进行数据传输,虽然传输速度不快,但已经能满足一般的通信要求,而且外围接口电路非常简单。传输的数据长度在一定范围内也是可变的。
MCS51系列单片机内部具有一个全双工串行口,该串行口有4种工作方式,可以通过软件进行设置,由片内定时/计数器产生波特率。串行口的接收和发送数据均可以触发中断,并含有接收、发送缓冲器SBUF,二者共用一个地址。
1.2 单片机与DSP的通信接口电路
SCI接口分为RXD和TXD两个管脚,传统的2个设备异步通信采用RS232或RS485的形式,须另配置对应的RS232和RS485驱动芯片。而本文所提及的采用双CPU结构的数字化电源设备,DSP和51单片机位于同一设备内,距离较短,可省去RS232和RS 485驱动芯片,采用2个CPU的RXD和TXD直接交叉连接即可。但需注意的是,由于DSP的工作电压为3.3V,而MCS51单片机的工作电压为5V,因此二者之间的通信电路需要进行电平转换,如图2所示。
图2 电平转换电路
在该电路中,单片机的TXD端电压高于DSP的RXD端,故仅需要使用分压电路,计算出合适的阻值即可满足要求,而从DSP向单片机传送数据时,需要提升电平,因而采用了光耦电路,将电平提升到单片机的工作电平。这样就能以简单的电路实现电平的转换。需要注意的是,所采用的光耦速率要高于数据传输速率,这样才能保证数据准确高效的传输,以免出现数据丢失。
1.3 单片机与DSP通信的软件实现
在异步通信中必须先规定3件事:一是字符格式,即传输的每一帧数据的格式;二是通信双方要设置为相同的波特率,且该波特率能适应双方的时钟频率;三是通信双方要有约定的通信协议,也就是双方要互相确认后才能传输数据。
在本设计中,DSP和单片机采用的数据帧格式是1位起始位,8位数据位和1位停止位。由于数据包采用校验和的方式进行校验,因而在数据帧格式中没有设置奇偶校验位。因而MCS51单片机应设置工作在串口方式1状态下,此时串行口为8位异步通信接口。为了保证数据传输具有较高的速率,同时又有比较低的传输误码率,因而选择波特率为9600b/s。通过相应的波特率设置计算公式计算出DSP和单片机的初始化时寄存器的初值,即可完成设置。这样就保证了通信双方帧格式的统一和波特率的统一,从而使数据通信正确、可靠。
DSP的串口初始化设置程序如下:
EALLOW;
GpioMuxReg s. GPGMUX. bit. SCIRXDB_GPIOG5 = 1;/ / 设置SCI??RX引脚外设功能
GpioMuxReg s. GPGMUX. bit. SCIT XDB_GPIOG4 = 1;/ / 设置SCI??TX引脚外设功能EDIS;
ScibRegs. SCICCR. all = 0x07; / / 1位停止位,无奇偶校验,8位字符长度,使用空闲线模式协议
ScibRegs. SCICTL1. all = 0x 03;/ / 使能发送和接收缓冲
ScibRegs. SCICTL2. all= 0x 02;/ / 使能RXRDY中断,禁止T XRDY中断
ScibRegs. SCIPRI. all = 0x0000;/ / 禁止接收错误中断和休眠模式
ScibRegs. SCIH BAUD= 0x01;/ / LSPCLK = 37.5MH z,波特率设为9600b/s
ScibRegs. SCILBAUD = 0xE1; ??
ScibRegs. SCICTL1. all = 0x 0023;/ / 重新使能SCI
51单片机串口初始化程序如下:
TMOD= 0x 21;/ / 定时器1工作在方式2,用于产生0串口的波特率
SCON= 0x 50;/ / 串行口0工作在方式1,允许接收,清标志位
TH 0= 0xfd; / / 晶振12MHz,设置波特率为9600b/s
TH 1= 0xfd; PS= 1; / / 串口中断优先
PCON| = 0x 00; / / 波特率不加倍
TR1= 1;
在本设计中,采用自己规定的通信协议,首先DSP发送出握手信号,C51收到握手信号后,进入中断子程序,判断握手信号是否正确,若正确才握手成功,开始接收数据包,接收完成后对数据进行和校验,正确后刷新液晶的显示数据存储区;若错误则放弃本次数据,并将接收数据存储区清零,等待下一次通信。其程序流程图如图3所示。
图3 DSP和单片机的通信程序流程图
DSP向单片机的定时发送程序如下:
ScibRegs. SCITXBUF = Sci_VarRx [ i] ;/ / 将数据包写入发送缓冲区
i+ + ; / / 依次发送数据包
if(i= = 12)i= 0; / / 重新计数
IER | = M_INT1; / / 清除中断标志位
EINT;
PieCtr lReg s. PIEACK. all = PIEACK_GROUP1;
51单片机串口中断服务程序如下:
Rx0_Buffer[ Rx0_Ptr] = SBUF; / / 读取数据到接收数组
RI= 0; / / 清除接收标志位
Rx0_Ptr+ + ; / / 计数加1
Rx_flag= 1;
1.4 单片机与液晶和键盘的接口
系统采用的是D6128×4图形点阵液晶显示器,它主要由行驱动器/列驱动器及128×64全点阵液晶显示器组成,既可以完成图形显示,也可以显示8×4个(16×16点阵)汉字。单片机与液晶模块和键盘的接口电路如图4所示。
图4 单片机与液晶和键盘的接口电路
单片机与液晶之间通过8位数据线进行并口通信,将DSP传来的实时数据传输到液晶显示器进行实时显示。对液晶驱动器的控制具体是通过各个内部寄存器和标志位的操作实现的,单片机写入不同的控制字就能让液晶执行各种不同的功能。DG12864是点阵型液晶,它主要通过对点阵中各点的亮灭来显示不同的内容,通过取模软件可以方便地获得汉字和英文符号等的字模,将程序中所要用到的字模存储在特定的文件中,在程序中根据所要显示的内容调用相应的字模,最终通过并口传输到液晶驱动器的显示RAM区中实现显示。
图5 展示了系统实际运行时的界面
2 结语
本文设计了TMS320F2812和MCS51单片机的串行异步通信接口,并通过单片机实现驱动液晶的实时显示和键盘设置功能。经过实验,证明本方案能够高效准确地实现了上述功能,而且其硬件简单、操作方便。目前这种方案已经可靠地应用于智能充电器的人机界面模块中。