当前位置:首页 > 嵌入式 > 嵌入式硬件
[导读]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键盘设计的实例。

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

在这篇文章中,小编将对usb的相关内容和情况加以介绍以帮助大家增进对它的了解程度,和小编一起来阅读以下内容吧。

关键字: USB USB隔离诊断

今天,小编将在这篇文章中为大家带来Type-C接口的有关报道,通过阅读这篇文章,大家可以对Type-C接口具备清晰的认识,主要内容如下。

关键字: Type-C USB

一直以来,Type-C接口都是大家的关注焦点之一。因此针对大家的兴趣点所在,小编将为大家带来Type-C接口的相关介绍,详细内容请看下文。

关键字: Type-C USB

随着科技的飞速发展和智能手机的普及,USB调试模式已成为许多科技爱好者和开发者不可或缺的工具。通过USB调试模式,用户可以连接手机与电脑,实现数据传输、应用安装、系统调试等多种功能。本文将深入探讨USB调试模式的打开方法...

关键字: USB 智能手机

USB 2.0与USB 3.0到底有什么不同,今天来深入探索两者之间的区别。随着科技的不断进步和设备的不断升级,USB接口作为连接设备的重要桥梁,也在不断发展。USB 2.0和USB 3.0是两种广泛使用的USB接口标准...

关键字: USB 智能手机 USB 3.0

随着科技的飞速发展,智能手机已成为我们日常生活中不可或缺的一部分。作为手机与电脑或其他设备之间的桥梁,USB(通用串行总线)连接在我们的日常生活中扮演着重要的角色。本文将深入探讨USB如何连接手机,并详细介绍USB连接手...

关键字: USB 智能手机

嵌入式处理器是一种特殊的计算机处理器,它被设计用于嵌入到各种设备和系统中,以实现特定的功能。由于其低功耗、高性能和可靠性等特点,嵌入式处理器在许多领域都有广泛的应用,如汽车电子、工业控制、医疗设备等。本文将对嵌入式处理器...

关键字: 嵌入式处理器 嵌入式系统

虽然 USB 几乎完全取代那些旧电缆和连接器,但 UART 绝对不会成为过去。您会发现许多 DIY 电子项目都使用 UART。

关键字: UART 串口通信 USB

USB(Universal Serial Bus)是一种通用的串行总线标准,它被广泛应用于连接计算机及其外部设备。USB通信系统具有以下特点:

关键字: USB 串行总线 计算机

USB Type-C接口将是下述内容的主要介绍对象,通过这篇文章,小编希望大家可以对它的相关情况以及信息有所认识和了解,详细内容如下。

关键字: USB Type-C
关闭
关闭