在各种单片机应用系统的设计中,常常遇到单片机与PC的通信问题,在速度要求不高、传送距离不远的场合一般采用RS 232标准串行接口实现,在传送距离较远的场合,也有学者研究通过网络实现PC间的通信。但是,要同时满足高速度和远距离PC与单片机通信这是一个迫切需 要解决的问题。随着信息技术的发展,计算机和网络越来越普及,对单片机的远程控制与测量的要求也越来越多。本文在结合现有研究的基础上,对相关的设计进行 一定的改进和创新,设计一个远程通信系统,他由3部分构成:远端PC、本地端PC和单片机系统。通过VB可视化编程,远端PC利用局域网向本地端PC发出 命令,本地端PC接到命令后,自动与单片机通过打印机接口以EPP1.9协议进行通信(串行接口作为备用通信口),并将接到的单片机数据实时传送给远端 PC,以实现高速远程情况下PC与单片机通信的要求。
1 系统结构与设计
系统构成如图1所示,远端PC通过局域网和本地PC通信,在通信中使用Winsock控件和TCP/1P协议;本地端PC通过并行通信接口或串 行通信接口与单片机通信,在并口通信中使用WINIO并口通信驱动程序、EPP协议和LPT打印机接口,在串口通信中使用MsComm控件、RS 232C协议和COM口。在此结构中,本地PC端起到中继的作用,当本地端PC接收到从远端PC传送过来的命令,在选择通信方式后,与单片机通信,使单片 机向远端PC传送数据。
2 远端PC与本地端PC通信设计
TCP/IP是目前在网络通信中广泛采用的一组完整的网络协议,该协议的核心是TCP,IP和UDP协议。TCP/IP网络环境下应用程序通过 网络系统编程界面套接字(Socket)实现与内核的交互。利用Socket通信编程接口编写程序,其目的是在TCP/IP所组建网络的不同机器之间利用 客户/服务器模式建立通信连接,开发人员只要提供一些基本的连接信息,其余由操作系统内核完成。WinSock(Windows Socket)是Windows操作系统下的通用的TCP/IP应用程序的网络编程接口,通过调用WinSock的接口函数来调用TCP/IP的各种功 能。在VB 6.0中,WinSock控件对Windows Sockets API进行封装,使用程序员可以不必了解TCP/IP或调用底层WinSock API的具体细节,只要设置好相应属性,在触发的事件过程中作好相应处理,就能编写出网络应用程序。
远端PC与本地端PC通信通过VB 6.0调用WinSock控件实现,图2(a),(b)分别为其控制界面。需说明以下几点:远端PC选择好要连接的本地端PC的IP地址和网络传送端口 后,再发起联机申请;本地端PC网络传送端口必须和远端PC传送端口一致,串行端口选择是COM1/COM2,并行端口输入并口地址(378H);远端 PC在命令输入区输入命令后,发送命令按钮才有效;回传数据区存放单片机传送回来的实时数据并可保存成文本文件,信息区存放网络工作状态、远端PC的命 令,及单片机数据传送情况。其工作过程如图2(c)所示。
3 本地端PC与单片机通信设计
3.1 本地端PC与单片机并口通信设计
3.1.1 并行通信接口及协议
在速率要求较高的场合,可以利用PC机上的打印机接口(CENTRONICS标准,DB-25芯针座,TTL电平)实现。并口通信有SPP、EPP和ECP三种工作模式。本文采用EPP协议。
(1)EPP协议
增强型并行接口协议EPP(Enhanced Parallel Port),为PC和外设之间定义了并行双向通信的标准,该协议通过硬件自动握手,能达到500 kB/S~2 MB/s的通信速率,适合大量数据传输的外设进行告诉通信。EPP分为EPP1.7和EPP1.9,二者之间的区别是:EPP1.9需要判断超时(避免出 现“死循环”)以及nwait信号是否有效,而EPP1.7不需要判断,传输速度更快。EPP协议支持4种操作,包括数据写出、地址写出、数据读取和地址 读取。
(2) EPP协议的寄存器地址及一些主要的引脚定义,如表1,表2所示。