新闻中心

EEPW首页>嵌入式系统>设计应用> 基于CY7C646xx的通用串行总线接口

基于CY7C646xx的通用串行总线接口

作者: 时间:2012-04-11 来源:网络 收藏

3 USB接口系统的结构

USB接口的结构如图2所示。计算机采用Windows操作系统,用户程序通过设备驱动程序访问目标板。在目标板端上,把TMS320VC33型数字信号处垣器和计算机通过USB总线建立通信链路,用CPLD进行目标板的控制。TMS320VC33通过内置的从属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公司提供的GPD(General Purpose Driver)模板供用户修改使用。它提供一个上层的程序代码来实现底层的驱动程序的编写,能够完成USB设备的标准请求及Cypress公司的该系列电路所特定的请求和数据的传输。该GPD所提供的接口函数具有通用性,包括打开、关闭设备及USB的I/O操作等。本应用主要采用上述两类接口程序,在没有改变所提供的EZUSB.SYS的驱动程序的情况下,实现主机和外设的数据通信。

5 固件程序的编写

固件程序指的是需要下载到CY7C646xx内RAM中的8051程序代码和数据。需要完成的功能包括初始化CY7C646xx内部的所有用到的寄存器使之与外部电路相配合;对主机的USB标准请求的响应;CY7C646xx的电子仿真实际脱离与重新连接至USB接口的实现;设备休眠状态的启动和终止;完成读取OUT端点和转发至内部从属"写FIFO"及读取内部从属"读FIFO"的数据和转发至IN端点等功能。



评论


相关推荐

技术专区

关闭