VB6.0环境下基于USB的虚拟串口通讯实现

摘要:以FTDI公司的FT232BL芯片为核心设计并实现了基于USB接口的计算机与单片机之间的虚拟串口通讯。单片机采用Philips公司P89系列单片机,完成数据的存储。计算机在Windows环境下利用MSComm通讯控件实现上位机与下位机之间的数据传输。在此提出了PC机对虚拟串口的自动识别方法,并提供了程序的源代码。实验结果表明,用虚拟串口实现计算机与单片机之间的USB通信,具有速度快,软件实现简单等优点。

关键词:VB6.0; USB口; FT232BL; 虚拟串口

中图分类号:TN91934文献标识码:A文章编号:1004373X(2012)06004504

Implementation of communication through virtual serial port based on USB

NING Hui, SUN Xueyan, LIU Jian, ZHANG Jianguo

(Beijing Aeronautical Technology Research Center, Beijing 100076, China)

Abstract: The communication between SCM and USB port based computer through virtual serial port is designed and implemented by taking FT232BL of FTDI Incorperated as a kernel. The data storage is completed by Philips P89 series MCU. The data tranmission between host computer and lower computers is achieved by means of MSComm communication control in the Windows environment. The method that PC automatically identifies the virtual serial port is presented. The source code of the program is provided. The experimental result shows that the USB communication between SCM and PC implemented by virtual serial port is speedy and easy to implement by software.

Keywords: VB6.0; USB port; FT232BL; virtual serial port

收稿日期:201109230引言

数据传输是现代通讯过程中的一个重要环节,在数据传输过程中,不仅要求数据传输的准确率要高,而且要求速度快、连接方便。传统的RS 232串口通讯和并口通讯都存在传输速度低、扩展性差、安装麻烦等缺点,而基于USB接口的数据传输系统能够较好地解决这些问题。目前,USB接口以其传输速率高、即插即用、支持热插拔等优点,逐步成为PC机的标准接口。

本文中的数据传输系统采用了USB接口进行上位机与下位机之间的数据通讯。下位机采用Philips 公司P89系列单片机,完成数据的存储。上位机通过VB6.0编程,实现上位机与下位机之间的数据传输。

1数据传输系统的总体设计

系统的硬件部分主要包括2部分:上位机端和下位机端。上位机采用PC机或笔记本电脑,操作系统为Windows XP,实现上位机和下位机之间的数据传输、显示、处理、存储及查询功能。系统的下位机采用philips公司P89系列单片机,完成数据的存储。下位机为一个手持的数据存储仪,由USB转串口数据转换模块、TTL转RS 422总线模块、中央处理模块、显示模块、存储模块、电源模块等组成。上位机与下位机的连接利用PC机自带的USB接口,原理框图如图1所示。

图1数据传输系统原理框图把数据记录卡插入数据存储仪内,可把卡内数据转存到存储模块。数据存储仪通过USB口与PC机连接,把所存数据传输到上位机,上位机对数据进行显示、处理及存储。

系统采用FTDI公司的FT232BL芯片作为USB转串口模块,可以和单片机的内置串口直接连接,使单片机通过USB口和PC机通讯。芯片一方面可以接收从PC机发来的USB数据,并将其转换为串行I/O数据格式发送给单片机串口;另一方面可把单片机从串口发出的数据转换为USB的数据格式传回PC机。与其他USB接口芯片相比,用FT232BL芯片进行USB外设开发,只需熟悉单片机编程及简单的VC或VB 编程,而无需考虑固件设计以及驱动程序的编写,从而能大大缩短USB外设产品的开发周期。

2硬件电路设计

2.1FT232BL芯片简介

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)寄存器之间的数据传递。

图2FT232BL内部结构框图 通用异步收发器(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.2FT232BL电路设计

根据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是数据传输系统实际运行的结果。

图4运行结果5结语

该系统通过调试,已成功应用到项目中,运行稳定、可靠,满足了设计需求和功能,对开发类似的系统具有很好的参考价值。

参考文献

[1]李长林.Visual Basic 串口通信技术与典型实例[M].北京:清华大学出版社,2006.

[2]杨思俊.基于VB6.0的太阳能发电基站电源的上位机软件设计[J].科技广场,2011(1):133135.

[3]马兴,童卓,周丽娟.基于VB的PC机与单片机间串口通讯及程序设计[J].兵工自动化,2010(10):9496.

[4]程来星,胡明钦,张英波.基于VB的计算机串口通信的应用研究[J].无锡职业技术学院学报,2011(2):5861.

[5]夏中权.USB虚拟串口的通信[J].电脑编程技巧与维护,2008(10):7679.

[6]杨杨,潘洪跃.基于虚拟串口的数据采集系统的设计与实现[J].大众科技,2008(4):7375.

[7]徐锋.基于FT245BM的快速USB接口设计[J].电子工程师,2007(3):5961.

[8]林水明,章坚武,骆懿.基于FT245BM的简易USB接口开发[J].单片机与嵌入式系统应用,2003(1):3840.

[9]陈三凤,刘晓波.基于VB6.0与单片机串行通信的数据采集系统设计[J].计算机应用,2004(1):6668.

[10]王永磊,何强,韩壮志.基于USB的PDA与DSP的虚拟串口通讯实现\[J\].仪表技术,2009(6):3638.

推荐访问:串口 通讯 虚拟 环境 VB6