通用串行总线USB(Universal Serial Bus)是由Intel、Compaq、Digital、IBM、Microsoft、NEC、Nerthern Telecom七家世界著名的计算机和通信公司共同推出的新一代总线接口标准。作为一种PC机与外设之间的高速通信接口,USB具有连接灵活、可热插拔、一种接口适合多种设备、速度高(USB1.1协议支持12Mb/s,USB2.0协议支持480Mb/s)、自动配置、无需定位及运行安装程序、可为外设提供电源、低功耗、低成本、高可靠性等优点,因而在数码相机、便携式仪器、便携式存储设备等产品中广泛应用。
但是,USB接口的开发一般要求设计人员对USB的标准、Firmware(固件)编程及驱动程序的编写等有较深入的理解,因此限制了一般的硬件工程师对USB接口产品的开发使用。我们在便携式无线抄表系统中使用的USB接口芯片CH371,使用简单、性能卓越,价格低廉,只要熟悉单片机编程及简单的VB或VC应用程序编程,一般的硬件工程师在极短的周期内就能很容易地开发出相应的USB产品。
1 USB总线的通用接口芯片CH371简介
CH371是一个USB总线的通用接口芯片,如图1所示。在本地端,CH371具有8位数据总线和读、写、片选控制线以及中断输出,可以方便地挂接到单片机、DSP等控制器的系统总线上。在计算机系统中,CH371的配套软件提供了简洁易用的操作接口,与本地端的单片机通信就如读写硬盘中的文件。CH371屏蔽了USB通信中的所有协议,在计算机应用层与本地端控制器之间提供端对端的连接。使用CH371,不需要了解任何USB协议或者固件程序,甚至驱动程序,就可以轻松地将并口、串口的产品升级到USB接口。它具有以下特点:
*屏蔽USB协议,在计算机应用层与本地端之间提供端对端的连接。
*两种通信模式:单向数据流模式、请求加应答模式,支持伪中断。
*自动完成USB配置过程,完全不需要本地端控制器作任何处理。
*标准的USB V1.1接口,即插即用,D 引脚内置上拉电阻。
*内置4个端点,支持USB的控制传输、批量传输、中断传输。
*通用Windows驱动程序,提供设备级接口和应用层接口。
*通用的本地8位数据总线,4线控制,即读选通、写选通、写选输入、中断输出。
*占用16个地址,可选直接地址方式或者复用地址方式。
*内置输入输出缓冲区,以中断方式通知本地端控制器传输数据。
*内置硬件实现的I2C主接口,应用层可以直接读写外挂的I2C从设备。
*在主控方式下可以提供16根输入信号线或者12根独立控制的输出信号线。
*内置上电复位,提供高电平有效复位输出和低电平有效复位输出。
*内置可选的看门狗电路Watch-Dog,为本地端控制器提供监控。
2 基于CH371 USB接口的硬件设计
图2给出的是CH371与MCU的硬件接口简图。对MCU AT89C52的硬件连接比较简单,主要是在该系统的设计中,如晶振的选择连接以及复位电路等,没有什么特殊的要求,而CH371的复位完全可以采用单片机复位电路产生的复位信号。带I2C接口的串行EEPROM 24C01的作用是存储产品的VID、PID、设备序列号等信息,只要地址不相同,就可以挂接多片带I2C接口的外围芯片,用户可以利用提供的动态连接库的函数,非常方便地完成对串地EEPROM的读出和写入。系统设计中,也可以没有EEPROM,CH371将使用默认的VID、PID、产品描述符和电源描述符,并且没有设备的序列号。
需要注意的是:最好在USB连接器的1和4之间跨接1个100μF的电解电容和1个0.1μF的独石或瓷片电容;12MHz晶振的外壳最好接地;阻抗匹配电阻为80Ω~150Ω。
3 信息传输软件实现流程
下位机数据上传子程序流程简图如图3所示。
下位机中断服务程序流程如图4所示。
对于计算机应用层的程序,在计算机上装载WINCHIPHEAD提供的CH371的通用驱动程序后,不必再考虑USB通信协议、固件程序、驱动程序、自动配置过程和底层数据传输过程。只需要根据提供的动态连接库的接口函数,用VB或VC编制自己的应用程序即可。
结语
从目前实际应用来看,系统的设计是成功的。尤其是基于CH371的USB接口,具有硬件设计简单、软件编程容易、成本低、传输速率快、可靠性高等特点。相信基于CH371的USB接口新产品将会越来越多。