微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 模拟电路设计 > 基于CY7C68013A的USB控制系统设计研究

基于CY7C68013A的USB控制系统设计研究

时间:10-29 来源:互联网 点击:
3.4 上位机界面设计

为了能够很好地控制USB设备,需要编写上位机控制界面。界面程序在VC++6.O环境下开发,该环境具有编程简单、快捷等的特点,便于开发可视化程序。Cypress公司为EZ_USB系列芯片提供了开发库CyAPI.lib,使用其中的控制函数类,可以在VC++6.0环境下开发界面程序。建立MFC(exe)工程后,在工程中加入CyAPI.lib,并且在主文件头部添加EZ-USB开发环境中提供的CyAPI.h,cyioctl.h头文件。利用库中的控制函数,如VendorID,ProductID等,可以获取USB设备的描述信息,同时也可以编写相关的控制功能程序。

3.5 系统设计中关键问题

(1)一个设备只能有一个设备描述符,可以有多个配置描述符,多个接口描述符,以及多个端点描述符。
(2)设备描述符中VID,PID要与驱动中的相一致,否则不能自动加载相应的固件程序。
(3)固件程序必须转换为.spt格式,用于固件加载的驱动程序和固件程序应放在一个文件夹。
(4)端点0为缺省控制端点,其可设置最大数据包长度为64 B,在设备描述符中wMaxPacketSize字段描述。
(5)传输模式有中断传输、块传输、同步传输、控制传输四类,需根据自己设计需求选择,同时注意最大数据包长度的设置。

4 驱动程序

对于USB设备,Windows操作系统要想对其实现操作,必须借助于驱动程序来实现。主机和驱动程序直接通信,交换数据,而驱动程序则和硬件资源进行通信,从而很好地控制USB设备。Cypress提供的开发环境中自带了相关的驱动程序CyLoad.sys和CyUSB.sys,可以直接使用,缩短了系统的开发周期。其中CyLoad.sys用于主机向USB设备下载固件程序,CyUSB.sys实现主机和固件程序通信。为了在CyLoad.sys的帮助下实现固件的自动下载,固件程序CyLoad.HEX必须转换为适合自动下载的CyLoad.spt文件,并且与CyLoad.sys一起放在CyLoad文件夹下,拷贝到系统system32目录下。在安装文件CyUSB.inf中设置的PID,VID必须和描述符中的一致,使得能够自动加载对应固件。

5 实验

实验系统,采用CY7C68013A-56pin作为USB设备芯片,实现控制LED和读取I/O数据功能。由于芯片采用3.3 V电压供电,因此可以从主机USB口取电,经LM317电压调整芯片转换为3.3 V,也可外接3.3 V电压供电。在PD口接LED,显示TD_Poll(void)实现的功能(灯亮/灭间隔300 ms),而PA口LED用于显示判断主机发送数据。PB口接高/低电平,用于主机读取该口数据,可以验证主机接收数据的正确性。

初始化子程序:




主机控制界面运行如图4所示。



界面中的USB Information分类框中为USB描述相关信息,由主机通过标准请求获得。Operation分类框中为主机向USB设备PA口发送数据,以及从USB设备的PB读取数据的情况。

6 结语

采用CY7C68013A实现USB控制系统,无论在固件程序编写、主机控制界面开发,以及设备驱动程序的使用等方面,都具有简单、方便的优点。系统采用设备固件存放在主机上的方法,不但简化了硬件设计,节约元器件成本,而且也提高了设备的可靠性。同时,此法对以后固件升级或更改设备功能,也十分简便,只需把固件修改好并放到主机相应位置,在USB设备再次插入主机时,就可以实现固件自动更新。文中给出一些设计过程中需要注意的关键问题,对于USB控制设备的设计具有一定的指导作用。上述系统和程序经过实际运行,工作稳定、可靠。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top