引言
随着计算机技术、信息处理技术和网络通信技术的迅速发展和广泛应用,各种数据传输接口也不断更新和发展。现在大部分的PC机不带RS232接口,尤其是便携式机。取而代之的是USB接口,USB接口在现场复杂的环境系统设备中数据通信应用更为灵活。
但是,USB接口数据通信协议复杂,与传统以RS232为基础的RS485和红外接口等在硬件上无法直接相连。这对于使用传统接口在外调试人员非常不便。如电力行业技术人员经常到设备现场,需要用便携式机连接设备数据接口,而设备数据接口的主要是红外和RS485两种。虽然目前市面上有很多USB转串口桥接芯片或接口,如CP2102、FT232、PL2303、HL232、CH341等,但其中还没有同时适用红外及UART/RS485接口的芯片。针对上述情况和实际问题,利用带USB接口的单片机可实现红外及UART/RS485接口功能。
1 硬件设计
USB接口(通用串行接口)是基于令牌总线,与RS232串口传输方式完全不同,是一种主从总线,工作时USB主机处于主(控制)模式,设备处于从(被控制)模式。本设计是工作在从模式的设备接口。多接口通信主要由USB转UART主控单片机、RS485串行通信接口、红外接口、编程接口等组成,整体框架如图1所示。
图1 USBUART/RS485/红外接口转换器框图
1.1 USB转UART主控单片机
USB转UART主控单片机除有USB转UART功能外,还要实现红外输出的38 kHz方波、RS485收发控制使能以及自动识别选用接口功能。选择的ATmegaXU2(AVR系列)带USB接口单片机,与其他带USB接口的单片机比较而言,简便易用,费用低,进入AVR系列单片机开发的门槛也相对低, 软件资源丰富,程序容易开发。ATmega8U2/16U2芯片是高性能、低功耗的8位AVR带USB接口微控制器。其芯片特性、内部结构、引脚说明等限于篇幅本文不做介绍。转换器电路图如图2所示。
图2 USBUART/RS485/红外接口转换器电路图
1.2 RS485接口
RS485通信接口是工业上广泛采用的接口标准。本设计选用Maxim公司的MAX485芯片。其功能是将单片机的TTL电平转换为RS485电平,RO和DI端(图2中U3)分别为接收器的输出和驱动器的输入端,与单片机连接时只需分别与单片机的RXD和TXD相连即可;RE和DE端分别为接收和发送的使能端,当RE为逻辑0时,器件处于接收状态;当DE为逻辑1时,器件处于发送状态。A端和B端分别为接收和发送的差分信号端,当A引脚的电平高于B时,代表发送的数据为1;当A的电平低于B端时,代表发送的数据为0。由于它使用一对线传送差分信号,MAX485只能工作在半双工状态。所以需用单片机的一个信号控制MAX485的接收和发送状态的转换。这里避免使用TXD信号控制RE和DE,靠电阻下拉或上拉A、B端电位进行收和发转换。
1.3 红外接口
(1) 红外信号接收电路
红外接收选用HS0038红外接收和解调一体化模块电路。通过它将红外信号直接转换为TTL电平输出。图2中U2的OUT引脚经电阻和接口选择跳线与ATmega8U2(U1)的RXD1引脚连接。
(2) 红外信号发送电路
从图2中ATmega8U2(U1)的OC1A、TXD1引脚同时分别输出38 kHz红外载波和发送信号,分别经电阻送至两个串联的三极管9012基极;两个三极管又与红外发送管LD271、电阻串联构成红外发送电路。
(3) 其他电路
编程接口电路、USB接口电路、RS485接口和串口外接电路在图2中也有所显示。图中S1、S2、S3是3选1跳线,S2、S3分别接到ATmega8U2的PD1和PD0引脚,供软件(固件)识别选择(UART、RS485、红外接口其中之一)跳线。
2 ATmega8U2固件程序的设计
ATmega8U2芯片是Atmel(爱特梅尔)公司的AVR系列单片机。Atmel公司网站提供AVR Studio集成环境(IDE)开发软件(相对新的版本才支持ATmega8U2芯片)免费下载。本固件程序采用AVR Studio 5版本汇编编译并烧写。
(1) ATmega8U2初始化程序
初始化程序流程:设置堆栈地址→检测接口跳线(检测到红外跳线加载38 kHz红外线载波)→初始化串口(含初始波特率)→初始化USB接口→初始化定时器→存储器及寄存器初始化。
(2) 主程序
主程序是闭合循环体。不断检查串口接收缓存是否有数据,并装入IN端点发送;不断检查OUT端点缓存是否有数据,并向串口发送。主程序流程图如图3所示。
图3 主程序流程图
(3) 中断程序
固件设置3个中断源,分别是串口接收中断、USB端点中断和USB设备中断。串口接收中断是确保串口接收数据不丢失,程序处理流程如图4所示。USB端点中断处理端点0事务,如USB枚举和串口设置等由USB端点中断完成,程序处理流程如图5所示。USB设备中断处理USB总线各种状态,程序处理流程如图6所示。
3 驱动程序
在USB标准中,通信设备类(Communication Device Class)简称CDC类,是USB标准协会定义的专门给各种通信设备使用的USB子类(具体内容参阅《USB Class Definitions for Communication Devices》)。大部分PC机操作系统都带有支持CDC类的设备驱动程序,本设计符合USB接口CDC类规范要求,满足微软CDC类中Windows自带USB虚拟串口驱动条件,可以自动识别,免去编写专用设备驱动过程。
利用INF文件模板进行快速定制安装设备驱动。在INF文件中修改相应两部分内容:
图4 串口接收中断处理流程图图5 USB端点中断处理流程图
◆ [DeviceList]部分,包括产品VID与PID码信息。
◆ [Strings]部分,包含硬件设备标识字符串和设备描述字符串。
4 驱动程序安装
将接口设备插入主机后,按安装提示提供INF文件的路径,如果一切顺利,即插即用已经完成了安装过程,一个新的串行设备出现在硬件管理器中(系统自动分配串口号)。
图6 USB设备中断处理流程图
结语
本设计集成了UART、RS485和红外通信三种常用接口与USB总线接口桥接,为满足不同场合数据传输的需要,实现与PC机系统虚拟串口通信,具有使用灵活性和通用性、高性能、低成本。经过实际工件中的应用,效果达到设计要求。