《电子技术应用》
您所在的位置:首页 > 通信与网络 > 设计应用 > 基于CY7C68013的USB2.0通信接口的设计
基于CY7C68013的USB2.0通信接口的设计
2015年微型机与应用第22期
赵 静,马尚昌
(成都信息工程大学 中国气象局大气探测重点实验室,四川 成都 610225)
摘要: 介绍了一种利用USB通信协议的方法实现下位机与上位机之间的通信传输。该方法以满足符合标准的USB2.0协议为基础,以EZ-USB FX2为设计的基础构架,以Cypress公司推出最具性价比的一种内嵌增强51单片机的芯片CY7C68013为核心,来构建下位机与上位机的数据传输通道。给出了系统的硬件设计方案、固件驱动程序以及计算机端的应用程序设计方法及流程。通过USB数据通信表明,USB2.0高速接口的带宽能够达到480 Mb/s的通信速率,能够充分满足普通接口数据传输所需速率,有效提高了传输效率,并且能将接收到的数据保存在计算机系统中,以备使用。因此,USB2.0通信接口的设计在数据传输的实际运用中有值得探索的价值。
Abstract:
Key words :

  摘  要: 介绍了一种利用USB通信协议的方法实现下位机与上位机之间的通信传输。该方法以满足符合标准的USB2.0协议为基础,以EZ-USB FX2为设计的基础构架,以Cypress公司推出最具性价比的一种内嵌增强51单片机的芯片CY7C68013为核心,来构建下位机与上位机的数据传输通道。给出了系统的硬件设计方案、固件驱动程序以及计算机端的应用程序设计方法及流程。通过USB数据通信表明,USB2.0高速接口的带宽能够达到480 Mb/s的通信速率,能够充分满足普通接口数据传输所需速率,有效提高了传输效率,并且能将接收到的数据保存在计算机系统中,以备使用。因此,USB2.0通信接口的设计在数据传输的实际运用中有值得探索的价值。

  关键词: 数据传输;USB2.0;高速接口;相互通信;驱动程序

0 引言

  随着多媒体技术的发展,对外设与主机之间的数据传输率有了更高的要求,且传统的计算机与外设通过串行、并行或PCI总线传输,要占用计算机系统资源,扩展性较差,而且传输速率和通信距离有限,已无法满足计算机外设发展需求[1],对于传统的RS232串口通信来说也很难满足与上位机之间所需要的10 Mb/s以上的通信速率,因此,USB总线技术应运而生。目前,国内外主要采用USB1.1和USB2.0这两种规范,USB1.1主要用于低速传输要求的场合,支持1.5 Mb/s和12 Mb/s传输速率。而USB2.0规范则能提高到480 Mb/s[2],尽管如此,在某些特定的传输速率与外围设备系统中,外设与USB接口上仍存在不可忽视的瓶颈。

  但是由Cypress公司生产的USB2.0控制器CY7C68013提供了一种独特的接口方式,即通用可编程接口(GPIF)方式,不仅很容易满足USB通信接口的传输要求,并且较传统接口方式而言有如下两大优点[3]:(1)数据传输过程中不需要CPU的干涉,使得传输速率明显提高,从而充分利用USB2.0的传输宽带;(2)由软件设置读写控制,提高传输稳定性。因此,本文把GPIF接口功能的优势综合利用在设计中并合理配置,使数据能够快速下载并上传到计算机上保存及显示。

1 USB接口硬件电路设计

  1.1 系统总体设计框图

  系统的总体设计由电源电平转换电路、串行EEPROM电路、主芯片最小系统电路、引出口电路和PC-USB接口5部分组成,连接框图如图1所示。

001.jpg

  该USB高速接口模块是作为与上位机通信传输的一个重要桥梁,所以PC-USB接口必不可少,用USB线连接完成该电路与计算机的传输总线,采用CY7C68013芯片的GPIF接口模式来完成控制信号的发送与数据的读取。因此,该模块的电源也由USB总线提供。由于USB接口提供的是5 V/500 mA的电源,而由CY7C68013A芯片资料得知工作电压为3.3 V,即需要将5 V电压转换成3.3 V的电平转换模块。串行EEPROM采用24C64(8 KB)来存放PID/VID程序,引出口电路将芯片主要管脚引出,使得与其他外设连接提供方便。

  1.2 主芯片最小系统

  采用的CY7C68013A芯片,较100和128引脚封装,其56引脚封装的缺少部分管脚功能,虽然不能在线仿真,但可进行简单调试,通过厂商的请求可以完成。具体设计如图2所示。

002.jpg

  其最小系统中包含24 MHz晶振振荡电路,晶振两边的电容大小范围可取22 pF~30 pF和复位电路,复位电路1 k/0.1 F的RC电路,系统能够正常上电复位。SCL是漏极开路输出,SDA引脚是漏极迟滞输入,在与EEPROM的SCL和SDA连接时,必须外接1.5 k~10 k的上拉电阻。PB0-PB7、PD0-PD7均为双向I/O口引脚,也是复用引脚,可分别作为GPIF数据总线的低8位和高8位。CLKOUT引脚时钟输出可为12/24/48 MHz,作为其他外设的时钟。端点2配置为写设备地址,端点6配置为读设备地址,每个端点都设置为4个缓冲区[4]。IFCLK为接口时钟,作为同步时钟数据的输入输出。

  1.3 硬件部分工作过程

  数据传输通信的主要控制芯片为CY7C68013,主要完成信号处理和单片机控制功能。系统的数据传输模块通过USB连接到计算机,按下复位键后上电复位,功能设备将被识别并枚举[1]。在设计中将程序下载到串行E2PROM中,主控芯片首先检测FX2的启动模式,若检测到E2PROM存在且首字节是0xC2,则按C2加载。下载固件,根据USB描述符配置信息上电复位完成重枚举[5]。再转移到片内8.5 KB的RAM存放数据和程序进行软配置,配置特定端点缓冲区来进行数据的高速传输与读取。其中采用GPIF可编程接口方式利用FX2的GPIF方式构建USB数据传输通道,由软件编程输出读写控制波形读取FIFO标识,控制FIFO的选通,可对外部通用总线接口进行访问。

2 USB接口软件程序设计

  2.1 固件程序设计

  固件程序是指用于控制硬件系统、完成芯片的初始化的代码,存储在USB接口芯片或微控器中,所以FX2要先下载固件再使用,处理各种设备的请求,完善对芯片的配置,对主机与外部设备间的数据传输作出相应处理,达到主机与外设通信的目的。Cypress公司为了降低用户对固件编程的难度,提供了一套配套的固件程序开发框架,可直接在Keil C51环境中进行编译,并可在固件库里调用一些函数、常量或数据结构来修改自己的程序。

  固件框架的源文件包括由Keil提供的8051头文件,库函数声明以及变量、宏和数据类型定义,FX2寄存器头文件,固件框架源文件,用户可修改的钩子函数,用户可修改的USB描述符列表,EZ-USB库文件和中断跳转目标文件[6]。在上电复位程序起始时,固件程序首先会自动初始化所有的内部变量,接着调用初始化函数TD_Init(),固件就会把USB接口设置为未配置状态并开启中断使能,循环延时间隔1 s后开始设备重枚举直到端点0接收到Setup包为止退出循环。只要检测到了Setup包,固件构架就会启动与PC主机合作的分配器,执行任务调度。固件程序框架如图3所示。

003.jpg

  2.2 应用程序设计

  应用程序编写最主要的问题是实现上位机向外部设备发送指定命令数据包,设备能够接收到上位机传递的指定数量的数据以及在通过执行命令后能够向其返送数据,达到上位机与设备能够相互通信的效果。主机应用程序通过驱动程序来完成对设备的控制和通信,采用具有友好界面的VC++6.0软件编写测试系统的应用程序,充分利用VC++的MFC框架的丰富资源,在与设备通信时首先通过Win32函数CreateFile()来取得访问设备驱动程序的句柄[7]。得到句柄后向设备提交相应的IOCTL控制码,进行读写和控制操作完成相应操作后,通过Win32函数DeviceIoControl()关闭设备结束一次数据传输操作。在用户编写的TD_Poll()函数中,检测到有命令数据包传送,单片机将读取EP2端点的数据,直到EP2端点的数据为空,获得上位机发送来的命令数据包。根据命令字的定义来执行相应操作,并向命令EP6端点写数据发送给主机。

3 测试结果

  在系统测试中,单片机与上位机的通信由用户自己编译的执行软件BulkLoop.exe来体现。

004.jpg

  由软件编程向单片机发送数据,由控制按钮点击实现特定指令发送,在没有获取设备信息时显示的是运用软件界面信息,如图4(a)所示,单片机在接收到数据处理后接口电路中LED灯亮暗显示,同时获取设备信息。单片机通过模拟按键向上位机发送特定数据,上位机接收数据,显示的是设备信息,如图4(b)所示。

4 结论

  利用Cypress公司提供的USB2.0高速接口芯片CY7C68013A芯片,完成了硬件设计与软件程序的设计,使之达到了单片机与上位机通信的效果。在以后各个领域上的数据传输通信存在着必不可少的使用价值。

  芯片所具有的可编程特性大大提高了系统工作的准确性与可靠性,数据稳定性高,不易丢失,便于数据的传输和处理。再加上USB接口设备具有热插拔和即插即用的特性,使模块更具有较高的实用价值,是值得推广的优良设计。

参考文献

  [1] 刘吉名,裴东兴.基于CY7C68013的USB2_0数据传输模块设计[J].电子测量实验室,2008,31(3):94-96.

  [2] 张晶.基于USB2.0接口的数字图像通信模块设计[D].南京:南京理工大学,2008.

  [3] 李英伟,王成儒,练秋生,等.USB2.0原理与工程开发(第二版)[M].北京:国防工业出版社,2007.

  [4] 赵林,孟令军,于磊,等.基于CY7C68013A的USB2.0高速接口设计[J].电子技术应用,2014,40(1):131-133.

  [5] 陈玉辉,钟洪声,李廷军.基于CY7C68013a的USB2.0接口设计[J].大众科技,2010,134(10):23-24.

  [6] 赵志勇.USB2.0通信接口设计[J].兵工自动化,2005,24(3):56-57.

  [7] 胡文静,陈松.基于EZ-USB芯片CY7C68013的驱动程序设计[Z].岳阳:华东师范大学,2005.


此内容为AET网站原创,未经授权禁止转载。