元器件交易网-中发网全新升级平台
关注我们:
首页 > 解决方案 > 正文

CH372的USB高速接口的设计原理

  本文针对现有与计算机通信的高速接口存在的问题,以STC89C58为核心,基于USB接口芯片CH372设计了一个高速接口,详细介绍了硬件电路设计,下位机固件程序设计和上位机应用程序设计。结果表明,该接口能很好完成高速通信,有较高的可靠性,可用于检测测量控制系统的高速数据采集和监控调试等场合,具有很大的应用价值。

  0 引言

  在现代科学研究和工业现场应用中,信号采集和图像处理等诸多领域,对高速的数据通信要求越来越高。传统的高速数据通信多是基于PCI,ISA等接口的数据卡,存在过多占用系统资源、设计复杂、不便携带、价格较高和扩展性差等缺点。因此提出一种基于USB接口芯片CH372实现的高速接口。USB(Universal Serial Bus,通用串行总线)是在1995年被提出来的,并由Compaq,Digital Equipment Corp,IBM,Intel,Microsoft,NEC和Northern Telecom等7家公司定义和推广[1]。由于其具有的易扩展,支持热插拔,价格低廉,使用方便等优点,应用广泛,已成为计算机外设的主流必备接口之一,具有低速和高速两种模式,在USB2.0高速模式下,速率可达480Mbps,满足大部分高速通信的要求。

  1 CH372芯片介绍

  CH372是沁恒公司生产的USB总线的通用设备接口芯片。在本地端,CH372具有8位数据总线和读、写、片选控制线以及中断输出,可以方便地挂接到单片机/DSP/MCU/MPU等控制器的系统总线上;在计算机系统中,CH372的配套软件提供了简洁易用的操作接口,与本地端的单片机通讯就如同读写文件。同时,CH372内置了USB通讯中的底层协议,具有省事的内置固件模式和灵活的外置固件模式。在内置固件模式下,CH372自动处理默认端点0的所有事务,本地端单片机只要负责数据交换,所以单片机程序非常简洁。在外置固件模式下,由外部单片机根据需要自行处理各种USB请求,从而可以实现符合各种USB 类规范的设备[2]。

  CH372为全速USB,兼容USB2.0,即插即用,外围元器件简单,只需要晶体和电容。提供一对主端点和一对辅助端点,支持控制传输、批量传输、中断传输等多种传输模式。通用Windows驱动程序提供设备级接口,通过DLL提供API应用层接口。可以自定义厂商标识( Vendor ID) 和产品标识( Product ID) 。主端点上传下传缓冲区各64 字节,辅助端点上传下传缓冲区各8字节[2]。由于CH372内置了USB底层通讯协议,且提供驱动程序,大大节省了开发者的开发时间,提高效率,降低了成本。

  2 硬件设计

  CH372与单片机连接可选择总线扩展或非总线扩展的方式,在本设计中,AT89C58和CH375采用地址/数据复用的总线扩展方式连接。

  CH372芯片的八位数据线与单片机P0口连接,RD#和WR#则分别连接到单片机的读选通输出引脚和写选通输出引脚,片选信号CS#为低时选中芯片,INT#用于接单片机中断引脚INT0,中断请求为低电平有效。当A0引脚为高电平时选择命令端口,可以写入新的命令,或者读出中断标志;当A0引脚为低电平时选择数据端口,可以读写数据[3]。

  CH372的UD+和UD-引脚直接连接到USB总线上。R1是为了芯片安全而串接保险电阻,大小为1Ω。CH 372芯片内置了电源上电复位电路,一般情况下,不需要外部提供复位。CH372的VCC接+5V电源,在VCC和GND之间的0.1μF电解电容C2用于外部电源退耦,电容C1选用独石电容或者高频瓷片电容,用于CH372内部电源节点退耦。在设计PCB时,退耦电容C1和C2要尽量靠近CH372的相连引脚;使D+和D-信号线尽量平行布线,尽量在两侧提供地线或者覆铜,减少来自外界的信号干扰;尽量缩短XI和XO引脚相关信号线的长度,为了减少高频时钟对外界的干扰,可以在相关元器件周边环绕地线或者覆铜。

  3 软件设计

  3.1 下位机固件程序设计

  下位机固件程序是与CH372相连的单片机中执行的代码,配合相应上位机应用程序,实现数据通信。

  固件程序主要分为初始化程序模块和中断程序模块,下面分别介绍:

  初始化程序模块:初始化程序首先向CH372发送测试工作状态的命令,检查CH372是否正常工作,如不正常,重复发送硬件复位命令多次。然后设置外部自定义的USB设备VID和PID,此项操作为可选,不执行该命令则使用默认的VID和PID。接下来设置USB的工作模式,这是必须要有的操作。最后,置外部信号为低电平触发,清中断标志,允许CH372中断。

  中断程序模块:USB协议规定,任何传输都必须由主机发起。上位机发送命令给CH372后,CH372通过中断的方式通知单片机。CH372支持所有的四种USB数据传输方式。可根据具体应用使用相应传输方式。进入中断后,首先获取中断状态并情中断标志,然后根据读取的中断状态进行对应操作。如果是端点下传,则从当前USB中断的端点缓冲区读取数据块,根据与上位机应用层约定的命令进行操作,并释放缓冲区。如果是数据发送,则从下位机的指定地址缓冲区中读取数据块,上传数据。

  3.2 上位机固件程序设计

  上位机程序由设备驱动程序和应用程序组成[4],CH372已经提供了设备驱动程序,开发者可以直接使用。CH372在计算机端还提供了应用层接口,应用层接口是由CH372动态链接库DLL提供的面向功能应用的API。CH372动态链接库提供的API包括:设备管理API、数据传输API和中断处理API。开发者只需要调用相应的接口函数,就可以方便实现对CH372的操作,大大提高了开发效率。

  上位机程序采用Visual Studio 2010编写,DLL负责与内核态的USB功能驱动程序通信。对上位机程序来说,CH372是一个拥有设备名称的文件。程序提供对设备打开、关闭,对参数的设置以及通信数据的显示等功能。上位机程序与下位机程序约定命令结构,识别命令与数据包,方便分析。上位机首先加载动态链接库CH372DLL.DLL,然后调用OpenDevice函数打开设备,采用定时查询的方式,发送命令给CH372,获取采集数据,进而对数据做相应处理。

  4 测试和结论

  通过上位机程序测试了数据传输准确性和速度。在STC89C58,24M晶振条件下,上传和下传速度均已达到1MBps,同时具有较高准确性。本文详细介绍了基于CH372的高速接口的硬件和软件实现,实现了高速的数据通信,该设计硬件电路简单,使用方便,有很好的可靠性和稳定性,采用独立的USB接口芯片,便于替换升级各领域系统的接口,可以方便地移植到其它控制器中,在工业领域具有广泛的应用前景。

扫描左侧的二维码

科技圈最新动态一手掌握
每日砸蛋,中奖率100%