与RS 232总线的数据传输速率相比,USB的传输速率高达480 Mb/s,因此很多计算机的RS 232串行接口都被USB接口所替换,但是很多仪器仪表、控制终端、远程终端等设备的接口还是沿用RS 232。为解决两个接口之间的转换,设计并研制了USB-RS 232接口转换卡。从USB和RS 232通信协议出发,详细介绍USB-RS 232转换卡的设计原理,并以CH341T芯片为例,设计并制作了USB-RS 232转换卡。利用研制的USB-RS 232转换卡连接具有RS 232接口的温湿度传感器,在运行监控程序后,传感器运行稳定,能正确显示温湿度数据,且表明该转换卡可成功地实现RS 232接口与USB接口的转换。
1 USB-RS 232转换卡的组成及其工作原理
1.1 组成
USB-RS 232转换卡的设计原理框图如图1所示,由USB接口模块、UART接口模块、数据缓冲区和协议控制单元组成。各部分功能如下:
USB接口模块 主要提供与USB总线的连接,它需要实现一般USB设备接口的所有功能,以实现与USB主机的数据传输。
UART接口模块 实现标准的RS 232接口的所有功能,以实现与标准RS 232接口的连接。
协议控制单元 通过接收USB接口的命令,对UART接口进行配置(如配置通信波特率、数据位、校验位、停止位、数据量控制信号等)。
数据缓冲区 用来临时保存双方数据传输过程中的数据。
1.2 工作原理
下面以计算机与外设的数据传输为例,介绍USB-RS 232转换卡的工作原理:
当USB-RS 232转换卡连接到USB总线上时,计算机检测到设备的连接后对设备进行初始化配置并启动相关的客户驱动程序;驱动程序给设备发送配置命令以设置RS 232接口的数据传输特性;最后,在数据传输时,计算机上的驱动程序首先将数据包传输给USB接口,USB接口读出实际的有效数据并保存在数据缓冲区中,UART接口则从数据缓冲区中将数据取走并发送给设备。
2 USB-RS 232转换卡的设计
2.1 协议转换模块的设计
根据原理框图,选择恰当的协议转换模块是设计该卡的关键。设计转换卡的方法有好几种:一种方法是采用通用的USB控制器,利用其内置的通用异步收发器(UART)在USB与RS 232之间进行信号转换,例如EZ-USB,PIC16C745,CY7C63001等,若没有内置UART,也可以利用通用I/O接口模拟RS 232的收发过程;另外还可以采用单独的USB接口收发器芯片,如ISP1581,PDI-USBD11/12等,但这种方法需要另配微控制器才能工作;第三种就是采用专用的USB与RS 232转换芯片,如CH341芯片,这种芯片的优点是数据接收和发送的协议转换工作全部由芯片独立完成,无需干预,也不用编写芯片的固件。本文采用CH341的简装版CH341T来设计USB-RS 232转换卡。图2是一个利用CH341T和MAX232进行USB接口设计的硬件框图。如图所示,该硬件系统由4部分组成:USB接口、CH341T、MAX232和RS 232接口。其中,USB接口用于连接USB主机,在此选用USB总线接口的A型连接头;CH341T用于完成USB接口转RS 232接口的所有硬件功能;MAX232用于完成RS 232与TLL/CMOS的电平转换;RS 232接口用于连接RS 232设备。根据实际需要,选择目前广泛应用的DB9连接器。
2.2 硬件电路设计
设计USB转RS 232串口的硬件连接图如图3所示。USB总线包括一对5 V电源线和一对数据信号线。通常,+5 V电源线为红色;接地线为黑色;D+信号线为绿色;D-信号线为白色。USB总线提供的电源电流最大可以达到500 mA,CH341T芯片可以直接使用USB总线提供的5 V电源。C3和C4是高频瓷片电容,C3容量一般为4 700 pF~0.02 μF,用于CH341T内部电源节点的退耦;G容量为0.1μF,用于外部电源的退耦。晶振X1、电容C1和C2用于时钟振荡电路。X1的频率是12 MHz,C1和C2是容量为15~30 pF的高频瓷片电容。MAX232提供电平转换。
2.3 驱动程序
连接USB-RS 232转换卡的计算机,必须安装CH341T的驱动程序CH341SER.EXE,当模块首次连接到计算机的USB端口时,计算机提示找到新硬件,按照提示完成驱动程序的安装。
安装完驱动程序后,可以通过计算机的USB接口提供仿真串口。在逻辑功能方面,使用方法与普通计算机串口完全相同,支持大多数常用的串口监控及调试工具程序,应用程序可以不做任何修改,可以像存取一个标准的物理串口一样访问这个虚拟串口,在保持软硬件兼容的前提下,将原串口产品转换为USB接口。