摘 要:介绍了RS485串行通信标准及其接口芯片MAX485,给出了PC与多台TMS320LF2407 DSP之间串行远程数据通讯接口电路。描述了公寓智能供电管理系统中上下微机之间的通讯协议及串行通信软件.
关键词:DSP MAX485 串行通讯
1 引言
本文介绍的分布式公寓智能供电管理系统以一台主控上位PC机为核心,以RS485协议为基础,通过串口连接多台下位机。下位机以TMS320LF2407 DSP为主控芯片。由于下位机要完成每个房间电压、电流信号的实时采集、电量实时计算与负载实时识别等多项任务,算法中包含FFT,计算量大,算法复杂,下位机采用DSP芯片是合理的选择。考虑到DSP原开发软件提供的数据库函数有限,故该系统将一些实时性要求不高的任务,如参数设定、波形显示、电能报表输出等交由上位机处理。本文重点介绍了系统中上下微机之间的串行通讯设计。
2 串行通信接口硬件电路设计
2.1 RS485串行通信标准及MAX485简介
RS485标准是美国电气工业联合会(EIA) 制定的以双绞线作传输线的多点通信标准,采用平衡发送和差分接收,具有较强的抗共模干扰能力,允许双绞线上一个发送器驱动32 个负载设备。它解决了RS232标准传输距离近、信号易受干扰的问题,是工业上广泛采用的串行通信标准。
MAX485是MAXIM公司推出的低功耗串行收发器芯片,该芯片支持RS485协议,采用单+5 V电源工作,内部有一个接收器和驱动器,其电路原理图见图1。图中RO和DI端分别为接收器的输出和驱动器的输入,当与DSP芯片连接时应分别与SCIRXD和SCITXD端相连;/RE和DE端分别为接收和发送的使能端,当/RE为逻辑0时,器件处于接收状态,当DE为逻辑1时,器件处于发送状态,由于MAX485工作在半双工状态,发送和接收共用同一物理信道,该信道必须分时复用,图中的/RE和DE连接端即为控制信号端。MAX485的A端和B端分别为接收和发送的差分信号端,当A引脚电平高于B时,代表发送的数据为1;当A脚电平低于B时,代表发送的数据为0。
2.2 DSP 通信模块介绍
TMS320LF2407 DSP内部有专用的串行通信模块(SCI),可支持异步串行通信和多处理器通信,其接收器和发送器是双缓冲的,收发端均有独立的使能和中断标志位,可以半双工或全双工工作。SCI模块包括SCIRXD(串行通信数据接收)和SCITXD (串行通信数据发送) 两个外部引脚及7个控制类寄存器和3个数据类寄存器。通过初始化控制类寄存器,可设置数据格式、中断使能、中断优先级、波特率等参数。发送数据时,写1到TXWAKE,将数据写入发送数据缓冲寄存器SCITXBUF即可启动一次串行发送;接收数据时,从SCIRXD引脚串行移入数据,存储在SCIRXBUF中,供CPU 读取。
2.3 PC机与DSP串行通信接口电路
由于普通PC机上仅配有RS232接口,若要利用上位微机的串行口来实现RS485标准通信,必须进行RS232与RS485接口转换。本设计采用瑞赛特8520接口卡将串行口的RS232标准电平转换成与TTL 电平兼容的RS485标准电平,该接口卡使用简便、无需再增加任何外围器件,就可利用标准的PC硬件来轻松构造工业级的长距离通信系统。另外,DSP芯片的工作电压为+3.3V,而MAX485的工作电压为+5 V,设计时在二者之间添加了光隔电路,光隔电路既实现了电平转换,又防止了系统模块与通信模块在电气上相互之间的影响。PC机与DSP的串行通信硬件接口电路原理图如图1所示。图中MAX485 的接收使能和发送使能引脚共同由DSP的PC2口控制,以选择某一时刻是接收使能还是发送使能。同时,为保证与传输线阻抗匹配,在差分端口A与B之间跨接了120Ω匹配电阻,以消除通信线路中的信号反射。
3 串口通讯软件设计
3.1 通信协议
为保证串行通信的准确性和可靠性,上、下位机通信双方必须具有相同的通讯协议,即相同的波特率及信息传送格式。因此,本设计规定:
(1)通信双方的波特率为9600bps;
(2) TMS320LF2407 DSP内部的SCI模块提供了两种多机通信模式:空闲线模式和地址位模式,本文中DSP通信采用了较简单的地址位模式,以保证上位机同所选择的下位机可靠通信。因此帧数据格式定义为:8位数据位、1位地址/数据识别位(1表示地址、0表示数据)、1位停止位、无奇偶校验位;
(3)各台下位机不相互通信,且不主动发送命令和数据,同一时刻只有一个下位机发送信息给上位机。为了识别每个下位机,系统通过拨码开关等硬件电路为其分配一个特定地址。进行通讯前,上位机首先通过RS485总线广播地址信息,所有下位机都侦听广播,并中断接收。下位机接收到地址信息后,进行地址比对,若地址相同,则该下位机把本机地址作为应答信号发送回上位机,然后开始准备接收上位机发来的操作数据信息,而其它的下位机因地址不符,从中断返回。上位机接收下位机发回的应答地址信息后,比较地址信息,如果相符,正式发送数据信息,如果不符则重新发送地址信息。下位机收到上位机发送的操作数据包后,根据数据包格式把有效数据做累加,然后与接收到的累加和(即校验码)比较,若相同,则执行相应的操作,并发送成功回馈信息给上位机;若不相同,则说明发送的数据中有错误,将接收数据缓存区清零,并要求上位机重新发送。
3.2 PC上位机软件设计
系统上位机程序采用DELPHI语言编写,它具有功能强大、简便易用和代码执行速度快的特点,是新一代可视化快速应用开发工具。利用DELPHI实现串口通信常用的方法有3种:(1)利用控件,如SPCOMM控件、MSCOMM控件及APRO控件等; (2)使用API函数; (3)调用其他串口通信程序。本系统选用较简单的SPCOMM控件来完成串口选择、波特率设置、帧格式设置、发送和接收缓冲区控制、打开串口等任务,用Timer控件控制发送地址码信息。上位机PC串行通讯流程图如图2所示,其串口通信部分相关程序如下:
procedure Tform1. Timer1Timer(Sender: TObject);
begin
comm1.BaudRate:=9600;comm1.parity:=None;
comm1.StopBits:=_1; comm1.ByteSize:=_8;
oper_comm:=true; //串口接受数据流控制变量
comm1.WriteCommData(@sendbuf,1);
end;
接收程序代码:
procedure Tform1. Comm1ReceiveData(Buffer: Pointer; BufferLength: Word);
Begin
move(buffer︿,(@rbuf)︿,bufferlength);//将缓冲区数据转移到rbuf变量
if oper_comm=true then
begin
判断接受到下位机发送的应答信息,若是则继续执行
sendbuf:=操作命令字符;//发送操作命令
comm1.writecommdata(@sendbuf,1);
oper_comm.:=false;
end;
else begin
接收上传数据并求和校验收到数据
end;
End;
3.3 DSP下位机串行通信软件设计
下位机DSP串行通信的软件设计可采用查询和中断两种方式,设计中采用了中断方式接收数据、查询方式发送数据。程序分为主程序和中断接收服务程序、发送数据程序3个模块。在主程序中对SCI 异步串口进行初始化(包括操作模式、波特率、字符长度、奇偶校验位、停止位位数、中断优先级和使能控制等信息) 。需要注意的是,为了保证通信的稳定可靠,串行通信控制寄存器SCICTL1 的休眠位SLEEP 设置很重要,具体方法为:初始化时将所有下位机DSP的SLEEP位都设成1,使得它们在仅当检测到地址字节时才被中断,在中断服务程序里,将接收的地址与本机地址比对,若相同,则软件清除SLEEP位以确保SCI在接收到每一数据帧都产生中断,否则SLEEP位仍保持以1,以接收下一个地址帧。DSP接收数据中断流程图如图3所示。
4 结束语
本文介绍了公寓智能用电管理系统中利用RS485总线实现PC机和多台DSP的远程串行通信设计方案。实践证明,该设计运行可靠,抗干扰性强、可完成较长距离的串行数据通信任务。该方案对其它基于DSP的远程数据通信设计具有一定的参考价值。
本文的创新点是,利用DSP内部的专用串行通信模块SCI及RS485专用接口芯片MAX485实现了PC机与多台DSP的通信,大大减少了系统的外围设计,通过正确设置SCI中串行通信控制寄存器SCICTL1 的休眠位SLEEP,避免了通信混乱,提高了总线抗串扰的能力。
参考文献
[1] 刘和平,王维俊等著. TMS320LF240x DSP C语言开发应用[M].北京:北京航空航天大学出版社,2003.
[2] 江思敏等著. TMS320LF240x DSP硬件开发教程[M]. 北京:机械工业出版社,2003.6.
[3] 张磊,陈建锋,全力.DSP控制的开关磁阻电机系统远程数据通信的研究.中小型电机,2005,32(2):43-46
[4] 王炼红,章兢.TMS320F2812 DSP与PC机的串口通信设计.微计算机信息,2006,07Z:173-175