VB6.0环境下基于USB的虚拟串口通讯实现
扫描二维码
随时随地手机看文章
摘要:以FTDI公司的FT232BL芯片为核心设计并实现了基于USB接口的计算机与单片机之间的虚拟串口通讯。单片机采用Philips公司P89系列单片机,完成数据的存储。计算机在Windows环境下利用MSComm通讯控件实现上位机与下位机之间的数据传输。在此提出了PC机对虚拟串口的自动识别方法,并提供了程序的源代码。实验结果表明,用虚拟串口实现计算机与单片机之间的USB通信,具有速度快,软件实现简单等优点。
关键词:VB6.0;USB口;FT232BL;虚拟串口
0 引言
数据传输是现代通讯过程中的一个重要环节,在数据传输过程中,不仅要求数据传输的准确率要高,而且要求速度快、连接方便。传统的RS 232串口通讯和并口通讯都存在传输速度低、扩展性差、安装麻烦等缺点,而基于USB接口的数据传输系统能够较好地解决这些问题。目前,USB接口以其传输速率高、即插即用、支持热插拔等优点,逐步成为PC机的标准接口。
本文中的数据传输系统采用了USB接口进行上位机与下位机之间的数据通讯。下位机采用Philips公司P89系列单片机,完成数据的存储。上位机通过VB6.0编程,实现上位机与下位机之间的数据传输。
1 数据传输系统的总体设计
系统的硬件部分主要包括2部分:上位机端和下位机端。上位机采用PC机或笔记本电脑,操作系统为Windows XP,实现上位机和下位机之间的数据传输、显示、处理、存储及查询功能。系统的下位机采用philips公司P89系列单片机,完成数据的存储。下位机为一个手持的数据存储仪,由USB转串口数据转换模块、TTL转RS 422总线模块、中央处理模块、显示模块、存储模块、电源模块等组成。上位机与下位机的连接利用PC机自带的USB接口,原理框图如图1所示。
把数据记录卡插入数据存储仪内,可把卡内数据转存到存储模块。数据存储仪通过USB口与PC机连接,把所存数据传输到上位机,上位机对数据进行显示、处理及存储。
系统采用FTDI公司的FT232BL芯片作为USB转串口模块,可以和单片机的内置串口直接连接,使单片机通过USB口和PC机通讯。芯片一方面可以接收从PC机发来的USB数据,并将其转换为串行I/O数据格式发送给单片机串口;另一方面可把单片机从串口发出的数据转换为USB的数据格式传回PC机。与其他USB接口芯片相比,用FT232BL芯片进行USB外设开发,只需熟悉单片机编程及简单的VC或VB编程,而无需考虑固件设计以及驱动程序的编写,从而能大大缩短USB外设产品的开发周期。
2 硬件电路设计
2.1 FT232BL芯片简介
FT232BL内部结构如图2所示,主要由USB收发器、串行接口引擎(SIE)、USB协议引擎、通用异步收发(UART)先进先出(FIFO)控制器和通用异步收发(UART)转换器等构成。USB收发器提供USB1.1/2.0全速物理接口到USB总线;串行接口引擎主要用于完成USB数据的串/并双向转换,并按照USB2.0规范来完成USB数据流的位填充/位反填充,以及循环冗余校验码(CRC5/CRC16)的产生和检错;USB协议引擎管理来自USB设备控制端口的数据流;通用异步收发(UART)先进先出(FIFO)控制器处理收发通道缓冲与通用异步收发(UART)寄存器之间的数据传递。
通用异步收发器(UART)实现与单片机(如P89V51RD2)的串行接口,通过TXD,RXD,GND3根数据线分别与单片机的RXD,TXD,GND相连,完成与单片机的数据交换。FT232BL内含2个数据缓冲区,一个是128 B的发送缓冲区,另一个是384 B的接收缓冲区。它们均用于USB数据与串行I/O数据的交换缓冲区。
另外,FT232BL还包括1个内置的3.3 V稳压器,1个6 MHz的振荡器、8倍频的时钟倍频器、USB锁相环和电擦除只读存储器接口。
2.2 FT232BL电路设计
根据USB设计规范,USB设备有总线供电和自供电2种方式。考虑到USB通讯功能仅在连接PC机时使用,所以,FT232BL芯片由USB总线供电,电路其他部分通过双触点开关的一个常开触点连到USB总线电源正极上。典型硬件电路如图3所示。采用上电复位方式,通过输出可使单片机复位。时钟电路采用1个6 MHz无源晶振及2个27 pF的陶瓷电容组成。PWREN脚与单片机的P1.7相连,用于判断USB总线是处于挂起状态还是正常状态。在USB接口的电源端接一个磁珠,用以减少主机与设备的干扰;电源端增加了去耦电容和旁路电容,以提高电路的抗干扰性。在印刷电路板的设计中,2根串行数据线的走线应可能短,并且长度相等。图3中的93C46(93C56或93C66)是一片电擦除只读存储器(E2PROM),用于存储产品的VID,PID,设备序列号及一些说明性文字等。这需要用户自己编写,编写的应用程序由FTDI公司提供。用户只需运行相应的VB程序,写入相应的信息即可。该电擦除只读存储器(E2PROM)是可选的。若没有电擦除只读存储器(E2PROM),FT232BL将使用默认的VID,PID(进程标识符),产品描述符和电源描述符,并且没有设备的序列号。
3 上位机的软件设计与编程
3.1 虚拟串口驱动程序安装
当下位机连接到上位机的USB接口时,上位机会检测到新硬件,这时需要安装一个从FTDI公司网站上免费下载的虚拟串口(VCP)驱动程序。该驱动程序适用于Windows 98/2000/ME/XP等不同操作系统。用户可以在这虚拟串口上进行应用程序的开发。该虚拟串口可以像一个标准的物理串口那样被访问,可本质上所有针对虚拟串口的数据通信都是通过USB总线完成的。
3.2 上位机的软件编程
上位机软件采用VB 6.0提供的串口通讯MSComm控件进行应用程序的编写。MSComm控件提供了功能完善的串口数据的发送和接收功能,它有2种处理通信的方式:一种是事件驱动方式,当串口发生事件或错误时,MSComm控件会产生OnComm事件,程序可以捕获该事件进行响应处理;另一种是查询方式,在程序中查询MSComm控件的CommEvent属性的值是否发生变化,从而确定响应处理。
3.2.1 虚拟串口的自动识别
一般来说,上位机操作系统为FT232BL芯片分配的虚拟COM端口是不确定的,下位机连接到同一上位机的不同USB口,其虚拟COM端口号不同,下位机连接到不同的上位机,虚拟COM端口号更是无法确定。为了让上位机能够自动识别下位机连接的虚拟COM口,程序中采用了循环访问各COM口的方式,如果该COM口是存在的则按照通讯协议向该端口发送“3CH”,如果该COM口不存在,则跳过,判断下一个COM口。如果收到下位机回送的“3CH”,则说明通讯检测成功。
程序代码如下:
4 系统运行结果
上位机可以从下位机中读取最多31组数据(数据组数由下位机存储器容量决定),每组数据8 KB,用户可根据需要自行选择查看各组数据。图4是数据传输系统实际运行的结果。
5 结语
该系统通过调试,已成功应用到项目中,运行稳定、可靠,满足了设计需求和功能,对开发类似的系统具有很好的参考价值。