当前位置:首页 > 嵌入式 > 嵌入式硬件
[导读]1、CY7C68013A芯片简介一个典型的USB应用系统由USB设备、USB主机和USB电缆组成,USB主机一般指具有USB接口的计算机,连接到主机USB端口的外部设备一般称为USB设备。Cypress

1、CY7C68013A芯片简介

一个典型的USB应用系统由USB设备、USB主机和USB电缆组成,USB主机一般指具有USB接口的计算机,连接到主机USB端口的外部设备一般称为USB设备。

Cypress的EZ-USB FX2系列芯片是世界上第一款集成了USB2.0协议的微处理器,EZ-USB FX2LP系列是其低功耗版本,使用比较多的是CY7 C68013A。

FX2LP芯片的内部主要包括高性能微处理器内核、USB2.0收发器、智能引擎(SIE)、增强8051内核、16K的RAM,4K的FIFO、IO接口、数据总线、地址总线和通用可编程接口等。EZ-USB FX2LP的CPU采用的是增强型8051内核,指令集和标准的8051完全兼容,因此非常便于熟悉51单片机的用户使用。

根据内部资源和引脚数量的不同,CY7C68013A芯片一共提供了三种不同的封装。本文以CYTC68013A-56pin为例进行说明,该封装提供了PA、PB、PD共3个8位并行I/O端口。

2、开发环境的搭建

USB接口设备的开发比较复杂,需要涉及USB固件程序、USB驱动程序、上位机程序开发和电路板设计等诸多方面。

2.1 固件开发环境

USB功能设备的硬件功能主要由硬件上的微处理器来实现,微处理器是由芯片上的固件程序控制的。由于FX2LP的CPU采取了8051内核,因此,固件开发环境仍然可以使用51系列单片机的常用开发软件--Keil μVision。

2.2 Cypress开发包

Cypress公司为EZ-USB芯片提供了一个开发包,CY3684 EZ-USB FX2LP Development Kit,里面包含了典型的固件代码,用户可以参考使用。另外,该开发包还提供了通用USB驱动程序、典型的硬件电路、上位机操作函数说明等。

2.3 上位机开发环境

USB功能设备需要连接到计算机上使用,因此需要上位机的程序开发,一般可以使用微软的Visual Studio来实现。USB设备开发的上位机程序通过USB设备的驱动程序来和USB设备进行通信。

驱动程序的开发可以使用微软的DDK开发驱动程序,也可以使用Driver Studio软件。针对Cypress公司的EZ-USB系列芯片,也可以直接使用Cypress的通用驱动程序,这是一种更加简单的开发方式。

3、USB键盘的设计

3.1 电路设计

图1是CY7C68013A-56pin的典型连接。电压调整芯片将USB接口的5 V电压转换为芯片的工作电压3.3 V;类似51系列单片机,时钟振荡电路接入晶振和两个瓷片电容;SCL与SDL引脚接上拉电阻。

 


键盘设计十分简单,CYTC68013A-56pin有PA、PB、PD三组24个IO端口,利用这些IO端口,就可设计常用的矩阵键盘,如图2所示,键的数目可达12*12个。和51单片机实现的键盘一样,固件程序需要对行和列进行扫描,采用轮询或中断的方式,对按下的键值进行判断。

另外,在制作电路板的时候,注意D+和D-的走线尽量的短而且相等,晶振尽量靠近芯片。

 


3.2 USB芯片的固件程序设计

EZ-USB FX2LP芯片采用的是一种软配置模式。也就是USB设备的各种驱动程序都保存在上位机,上电后,USB主机首先将程序下载到RAM中,然后从RAM开始执行。在这个过程中,有两次“枚举”:刚加电时,USB内核中没有固件,将被枚举为一个默认的USB设备;主机下载固件程序之后,在内核中执行固件程序,就会重新识别并枚举这个USB设备,这个过程被称为“重枚举”。在第一次枚举时,根据芯片有没有连接E2PROM,以及E2PROM中第一个字节的值,有不同的处理方式。当没有外接E2PROM时,将根据驱动程序中提供的VID,PID和DID,把主机上对应的固件程序下载到片内的RAM中,并执行固件代码。

USB固件程序是USB设备功能的核心,通过两次枚举,固件程序被下载到CY7C68013A的芯片里(程序也可以放在外接的EEPROM芯片里),用于配置芯片工作在需要的状态下。

固件程序使用Keil μVision来编写。可以参考Cypress的例程。大体步骤是:

(1)初始化休眠模式、远程唤醒等。

(2)初始化用户设备,主要是‘TD_Init()子程序。负责整个USB设备的初始化过程。

(3)定向描述符。

(4)把所用中断打开,并开启8051全局中断EA=1.由于EZ-USB设备启动需要重列举,因而需要通过设置和判断USBCS寄存器的RENUM和DISCON位来模拟设备物理上的断开和连接过程。

(5)用户外围设备控制功能的实现放在TD_Poll()子程序中,同时主循环中的SetupCommand()子程序用于接收、分析上位机的控制信号,响应上位机请求(标准请求和用户自定义请求)。

3.3 USB通用驱动程序的使用

USB设备的使用需要驱动程序的支持,Cypress提供了通用的USB驱动程序。

该驱动包括两部分:CyLoad.sys和CyUsb.sys,前者用于固件程序的下载,后者用于主机和固件程序的通信。这两个驱动程序提供的引导文件分别是CyLoad.inf和CyUSB.inf,用户可以直接使用,也可以根据需要进行改动。

为了在CyLoad.sys的帮助下实现固件的自动下载,固件程序CyLoad.HEX必须转换为适合自动下载的CyLoad.spt文件,并且与CyLoa d.sys一起放在CyLoad文件夹下,拷贝到系统system32目录下。在安装文件CyUSB.inf中设置的PID,VID必须和描述符中的一致,使得能够自动加载对应固件。

USB设备使用时,必须首先安装驱动程序,注意分别安装上面提到的下载驱动CyLoad.sys和通信驱动CyUsb.sys.安装驱动之后,可以使用Cypress提供的主机控制函数库CyAPI.lib开发主机程序,通过驱动程序和USB设备进行通信。

3.4 USB主机的应用程序设计

USB主机程序可以使用Cypress提供的CyAPI.lib库来进行编程。CyAPI.lib对应Cypress提供的驱动程序CyUsb.sys,为其提供了简单而且功能强大的C++编程接口,通过CyAPI.lib库提供的函数,可以对USB设备进行读写操作,这些函数主要是Open,Close和XferData.

本文以VC++6.0为例,描述创建USB设备应用程序的步骤。[!--empirenews.page--]

(1)新建工程,并将CyAPI.h,CyAPI.lib,cyioctl.h三个文件加载到项目中。

CyAPI.h中定义了CCyUSBDevice、CCyControlEndPoint等几个重要的类;而cyioctl.h中则定义了读取USB设备的几个重要的结构和宏。

(2)在相应的文件中(视、框架或者对话框,依具体情况),包含头文件CyAPI.h和cyioefl.h.

然后定义USB设备全局变量和控制端点全局变量,并进行初始化:

CCyUSBDevice*USBDevice=new CCyUSBDevice();

CCyControlEndPoint*ept=USBDevice-》ControlEndPt;

(3)在程序执行时,采用中断方式,或者轮询方式交换数据。以轮询方式为例,则在帧循环中加入如下代码:

 


首先判断设备是否打开,然后指定操作码,ept-》XferData()完成传输,实现从端口读数据,或者向端口写数据。数据传输的方向由ept-》DirecTIon来设置。

(4)结束程序时,关闭USBDevice.

USBDevice-》Close;

4、结论

EZ-USB FX2芯片实现USB系统,软硬件程序设计,相比较而言,简单、方便。本文介绍了设计USB系统的大体步骤,给出了USB键盘设计的实例。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭