基于CY7C68013A芯片的USB键盘的设计

基于CY7C68013A芯片的USB键盘的设计,第1张

  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单片机的用户使用。

  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引脚接上拉电阻

  基于CY7C68013A芯片的USB键盘的设计,基于CY7C68013A芯片的USB键盘的设计,第2张

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

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

  基于CY7C68013A芯片的USB键盘的设计,基于CY7C68013A芯片的USB键盘的设计,第3张

  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()子程序用于接收、分析上位机的控制信号,响应上位机请求(标准请求和用户自定义请求)。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/dianzi/2718003.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-17
下一篇 2022-08-17

发表评论

登录后才能评论

评论列表(0条)

保存