在USB外设普及后,目前围绕在计算机周围的各式各样的连接线将有所改观,取而代之的是各种USB接口外设。同时,通过集线器或交换机扩展总线功能使普通用户能够非常方便地添加更多外设,无传统接口的计算机目前已成为现实。但RS232自1969年由美国电气工业协会推荐以来,由于接口和通信协议比较简单而在计算机串行通信领域得到广泛的使用,而且许多长期从事RS232应用系统开发的专业人士或嵌入式应用人员并不像普通用户那样对无传统接口RS232的计算机的出现感到非常满意。许多一直采用RS232接口的传统设备,使用人员既不需要也不希望改变。总之,各个方面都加剧了对添加USB/RS232转换器的需求。
1USB与RS232接口转换设计方案的选择
RS232与USB接口虽然都属于串行接口,但是它们的数据格式、通信协议以及信号电平定义和机械连接方式都完全不同。其中USB接口相对比较复杂,相关资料可查看参考文献。设计USB/RS232转换器的方法可以分为两大类:一类是采用全面系统的设计,采用内含USB单元的微处理器,要求它具有内置的通用异步收发器(UART)在USB与RS232之间进行信号转换,这样的控制器包括CY7C68013、PIC16C745、68HC705JB4和C541U系列等,也可以采用USB接口芯片如PDIUSBD12、USBN9604等与微控制器组合工作;第二类是采用专用的USB/RS232双向转换芯片,如CP2102、FT232BM等,这种方法不用编写芯片的固件,并且芯片生产商直接提供驱动程序,数据收发和协议转换工作全部由芯片独立完成,而无需干预。这两类方案各有利弊,本文分别采用具有代表性的芯片对这两大类方案进行了深入的研究。
2控制器CY7C68013的功能及转换器的设计
2.1GY7C68013的主要特点
CY7C68013芯片包括一块增强型805l内核,能完成每个指令周期只需要4个时钟周期,时钟频率可以配置为12/24/48MHz;集成一个串行接口引擎(SIE)和一个USB2.0收发器;共有7个输入输出端口:EP0、EP1OUT、EPIlN、EP2、EP4、EP6、EP8,其中EP2、EP4、EP6、EP8分别可以被配置为批量/中断/同步传输模式,传输方向均可配置为输入和输出;内置有两组UART,可以实现在单个芯片开发电路上有两路RS232信号输入和输出。
CY7C68013是一个全面集成的解决方案,它采用更少的电路空间,并缩短开发时间。CY7C68013结构框图如下图所示。
2.2 CY7C68013的应用
CYPRESS公司提供了CY7C68013芯片的开发工具包下载,其中包括KeiluVision2集成开发环境(限制版)、通用驱动程序EZUSB.SYS以及控制平台(controlpane1)。利用好这些开发工具可以缩短开发周期,获得较高的效率。
USB/RS232转换系统的软件部分包括固件、应用程序和驱动程序。其中,固件程序是指运行在设备CPU中的程序,是整个程序设计的核心,可采用汇编语言和C语言设计。只有在该程序运行时,外设才能具有给定的功能。USB设备固件程序的主要功能是控制FX2接受并处理USB驱动程序的请求,实现RS232与USB接口转换。
USB/RS232转换器的固件程序主要包括设备描述符表、固件程序架构源码、内部接口函数和中断函数。描述符表是USB设备与主机建立数据通信之前用来先向主机通报自己的具体配置。固件程序结构如下图所示,
其中内部接口函数TDInit()完成CY7C68013的初始化包括对各个端点的配置,TDSuspend()是使设备进入挂起状态的函数,TDResume()是在外部要求下重启设备的函数。通过SETUP事务处理可以设置和更改用户所需要的波特率。程序在该固件架构内部运行直到出现中断,进入中断函数。固件中包括输出端点2、输入端点6和UART中断服务程序,其中端点2、端点6分享了同一个USB中断源(INT2)。
通用驱动用于完成外设和应用程序的通信及控制,一般可以不用编写,使用CYPRESS公司编好的驱动EZUSB.sys。应用程序也可以暂时使用已有的控制平台,如下图所示。
CY7C68013可以有两种工作方式:一种方式是用户通过控制平台把固件程序下载到FX2的RAM中使FX2的微控制器重启, 同时模拟断开与USB总线的连接以完成对外设的重新设置,这样可使主机能够根据新的设置来安装通用驱动程序,重新枚举外设为一个新的USB设备;另一种方式是固件代码存储在EEPROM 中,当设备上电时,EEPROM中的代码被自动下载到FX2芯片中的RA M 中,由8051执行。实现这个过程需要两个驱动程序,即通用驱动程序EZUSB.sys和下载固件的驱动程序。在Windows的设备驱动工具包(DDK)的支持下,对FX2软件开发包提供的EZ.LOADER驱动程序作相应的修改,就可以实现下载固件驱动程序的定制。
CY7C68013可以有两种工作方式:一种方式是用户通过控制平台把固件程序下载到FX2的RAM中使FX2的微控制器重启, 同时模拟断开与USB总线的连接以完成对外设的重新设置,这样可使主机能够根据新的设置来安装通用驱动程序,重新枚举外设为一个新的USB设备;另一种方式是固件代码存储在EEPROM 中,当设备上电时,EEPROM中的代码被自动下载到FX2芯片中的RA M 中,由8051执行。实现这个过程需要两个驱动程序,即通用驱动程序EZUSB.sys和下载固件的驱动程序。在Windows的设备驱动工具包(DDK)的支持下,对FX2软件开发包提供的EZ.LOADER驱动程序作相应的修改,就可以实现下载固件驱动程序的定制。
以上对CY7C68013的开发工作是在Windows环境下进行的,所开发的USB/RS232转换器属于用户自定义类设备。通过利用CYPRESS公司提供的开发平台,减少了开发周期,并证实了该方案的可行性。如果需要在其它系统中应用该设备,只需参考Windows下的驱动程序做相应修改,而固件程序不需要变动。
3 CP2102芯片的功能与应用
2004年,SILICON LABORA TORIES推出了USB TO RS232接口转换芯片CP21 02。该芯片作为USB/RS232双向转换芯片,一方面可以从主机接收USB数据并将其转换为RS232信息流格式发送给外设;另一方面可从RS232外设接收数据转换为USB数据格式传送回主机。这些工作全部有芯片自动完成,开发者不用考虑固件的设计。CP2102的高兼容免专利费驱动可在包括Windows 98sE/2o00/xP、MACOS.9/OS.X和Linux2.40及以上版本的操作系统上模拟成传统COM端口,并允许基于COM端口的应用很方便地转换成USB接口应用。利用USB大容量传输模式、大型数据缓冲器和自动流量控制的优势,CP2102有能力达到比传统通用异步收发端口更高大的吞吐量。其波特率支持from300bpsto1Mbps。