基于CY7C646xx的通用串行总线接口
1 USB简介
UBS(Universal Serial Bus)是一种标准的计算机与外设的连接接口,1995年问世,并由Compaq,Digital Equipment Corp.(现属Compaq),IBM,Intel,Microsoft,NEC及Northern Telecom七家计算机与通信工业领域的领先公司组成的联盟定义和推广。1996年,该联盟公布了USB 1.1规范。其后,随着USB的完善和应用的需求,促进了高速USB2.0规范在1999年发布。目前已经成为外设的流行接口选择。
USB具有诸多特性和特点。USB统一了各种接口设备的连接头,如通信接口、打印机接口、显示器接口、音响输入/输出设备、存储设备等都采用相同的USB接口规范;USB即插即用,能自动检测与配置系统的资源;USB完全支持"热插拔",在开机的状态下,可以插入和拔离USB设备;USB接口规范1.1所支持的传输速度可达12 Mb/s(USBl.1),USB2.0规范支持的传输速度达到480 Mb/s;USB支持斗种不同传输速度和不同传输质量的数据传输方式,即批量传输方式、中断传输方式、控制传输方式和同步传输方式,能够满足不同设备的不同需求;USB连接设备最多可达127个;USB采用单一专用的接口型号,所有的USB设备的接口型号完全统一,并且使用USB集线器来增加扩充的连接端口白的数目等。
2 CY7C646xx系列
CY7C646xx系列是Cypress公司开发的全速的USB接口系列中的一种,该系列针对USB外围设备设计,除了具有典型的USB特性之外,还具有三个关键特性:
1)该系列提供"软"的应用方案,即基于片内RAM,支持即时动态固件(Firmware)下载功能,允许无限制的扩充和更新;
2)该系列能够达到USBl.1协议的传输速度要求,向用户提供足够的端口、缓冲区和传输速度;
3)该系列对USB的底层协议实现高度硬件集成,简化了硬件固件代码的编程,加速了USB通信的掌握过程,更易于开发,其内部结构框图如图1所示。
该系列通过USB总线(包括+5V、地、D+、D-)和计算机相连;转发器固化到芯片内部;串行接口引擎(亦称USB核)具有完整的USB设备功能,完全能够响应主机对设备的标准请求,具有3种USB配置,每种配置1个或16个端点。完全支持4种标准的USB数据传输类型(控制传输、批量传输、中断传输和同步传输);芯片内部的程序数据随机存储器(RAM)具有8 KB的容量;芯片内嵌入增强的8051微处理器。具有所有的8051资源,即5个I/O口,2个通用异步转发器(UART),3个计数器/定时器,扩展的中断系统等;芯片利用从属FIFO或者通用可编程接口(CPIF)和外部逻辑(诸如DSP等)进行数据传输。
3 USB接口系统的结构
USB接口的结构如图2所示。计算机采用Windows操作系统,用户程序通过设备驱动程序访问目标板。在目标板端上,CY7C646xx把TMS320VC33型数字信号处垣器和计算机通过USB总线建立通信链路,用CPLD进行目标板的控制。TMS320VC33通过CY7C646xx内置的从属FIFO和CY7C646xx进行数据交换。
在本方案中,CY7C646xx采用无EEPROM的列举方式,即当目标板插入USB端口时,操作系统进行USB常规描述符请求,CY7C646xx将内置的PID、VID和DID回复主机请求;主机动态加载"固件下载驱动程序",由该驱动程序将8051程序代码和数据下载至CYTC646xx内的RAM中,实现"软"开发目的;该驱动程序重置启动8051,重新列举设备,下载至RAM中的程序回复主机的USB描述符请求,主机加载"数据通信驱动程序",完成USB设备的安装。应用程序通过"数据通信驱动程序"和CY7C646xx建立通信,完成数据传输。
4 驱动程序的编写
USB设备驱动程序采用一种新的驱动模型--WDM(windows driver model)。WDM通过提供一种灵活的方式来简化驱动程序的开发,在实现对新硬件支持的基础上减少并降低所必须开发的驱动程序的数量和复杂性。可以应用Cypress公司提供编写CY7C646xx系列驱动程序框架源代码进行相应的修改和添加,生成所需要的驱动程序。
4.1 固件下载驱动程序
利用代码转换工具hex2c.exe,将生成的8051固件代码(hex文件)转换为C文件;将C文件中的相应代码拷贝到所提供的源代码程序之一的firmware.c相应部分;利用WindowsDDK工具将各个源文件编译成.sys文件。
修改相应的INF文件,将"%USB\VID_0547PID_1004.DeviceDesc%=EZUSBDev.Dev,USB\VID_PID_'中的VID及PID修改为相应的"预设USB设备"的相应VID和PID,在本应用中,VID.为0547,PID为2235;紧接在此语句之后应加入相同的语句,PID和VID应为所下载的固件代码所能提供的PID和VID,保证外设第二次列举后能根据此PID和VID找到相应的支持主机和电路通信的驱动程序。
4.2 支持主机和电路通信的驱动程序
由Cypress公司提供的G
- 通用串行总线架构(USB)的目的主要基于以下三方面考虑(12-15)
- 通用串行总线(USB)电缆隔离器电路(12-15)
- 解决通用串行总线(USB)控制器有感叹号(12-14)
- USB通用串行总线内部结构解析(12-14)
- 基于ARM Cortex3的低功耗无源USB-CAN透明传输的实(10-08)
- USB数据通信接□模块的通用串行总线简介(10-17)