| SY2100 EZ-USB开发板使用指南 |
| 随着计算机(PC)的广泛应用,它的外部设备也越来越多,例如常见的打印机、扫描仪、游戏机、甚至摄录机、数码相机以及控制领域各式各样的外接设备,这些设备都需要一个端口与PC相连接,过去常用的方法是通过串口或并口与其连接,外围设备多了,每个外设都需要一个I/O口,这样一来,I/O口就越来越不够用了。目前的PCI/O模式中,外设通常都被映射为CPU的I/O地址,同时被分配一个中断请求(IRQ)。在有些情况也可能是一个DMA通道。系统就将这些资源分配给指定的外部设设备。现在这种地址分配形式已经成为一种标准,应用系统开发者必须根据指定的设备进行访问。
一直沿用的这种模式,有其许多不完善的地方,对于不同的I/O端口,外设开发者在设计阶段就必须指定一个或几个地址给外设使用,这给开发者带来很多不便,系统运行时也会浪费很多资源,而且外设多的时候,有可能会造成IRQ冲突。特别是工业数据采集系统,一般均使用数据采集卡来完成,一个采集卡都要占用一个PC的插槽,如果采集的系统比较复杂,采集点多了就会出现PC插槽不够的问题,用户有可能还需自行设置IRQ,使用户感到很多不便。 近年来发展起来的USB(通用串行总线)就可以较好的解决这个问题,它不仅可以解决了I/O口不够的问题,而且这种模式建立了一种新型的PC和外设的访问形式,这种方法有效地减少系统资源的浪费,也提供了更好的PC与外设的交互访问形式,而且为终端用户提供更多数量的连接端口,简化了外设与PC的连接和配置。 USB接口具有以下特点: [1].为外设连接到PC上提供了一种简单易行低成本的解决方案。 Cypress公司USB接口单片机简述: 由Cypress公司推出的带智能USB控制内核的51系列单片机EZ-USB 2100系列芯片,在芯片上集成了USB和C51内核两个模块,这两个模块可以协助USB开发者完成USB协议中规定的大部分通信工作,是USB设备研制的较好的器件,EZ-USB强大的串行接口引擎,增强8051内核,优越的软件支持,大大降低了USB开发难度。 EZ-USB 2100系列芯片的特点: [1].改进增强的8051内核,时钟为24MHz,性能可达到标准8051的5-10倍,指令系统与8051完全兼容。空闲(wasted)的总线周期被消去,一个总线周期仅含4个时钟周期,而标准的8051则为12个时钟周期。 |
| SY2100 EZ-USB 开发板提供完整的硬件和软件来加速固件与主机驱动程序的开发,与其它使用仿真设备的USB开发包不同的是,SY2100
EZ-USB开发包在整个开发过程中使用真正的设备,即AN2131QC。
软件的安装 硬件安装 |
| 开发板硬件资源 SY2100 EZ-USB开发板为USB设备的开发提供了一个良好的工具。开发板使用的是80管脚的AN2131QC芯片,而且包含3个用于扩展接口的引出端。板上所有的电路均为3.3V,开发板板内由USB连接器供电。 EZ_USB开发板包括以下几个部分: 2131 EZ_USB集成电路,它包括一个高性能的8051内核; 32K扩展RAM; 两个8051 UART口; DIP开关控制来选择EEPROM地址; 两个I2C总线的8位I/O扩展芯片,一个用于驱动七段LED,另一个用于读8位开关状态; 一个3.3V调节器,它可以把5V转换成3.3V; 电源和中断/监控指示灯(红色、绿色)。 值得一提的是在USB、D+和D-信号接有防止瞬变电压的浪涌保护芯片,防止热拔插造成的不良影响,在USB接口电路中,是十分必要的措施,增加了可靠性和安全性。 SY2100 EZ-USB开发板基于EZ_USB系列USB总线控制器,它包含标准的MCS51外设模块和USB模块。USB模块集成了USB的收发器、串行总线接口机制、功能接口单元和收/发缓冲区。通过内存配置开关可灵活地改变RAM的地址空间,并方便地进行内存扩充。 EZUSB的I2C总线上,接有两块8位I/O扩展芯片(PCF8574)和一块用于EZ-USB引导、标识USB设备的EEPROM。该片EEPROM采用8引脚DIP封装,可拔插。 按钮、选择开关和7段LED通过PCF8574接到I2C总线上。这样,一方面为用户调试固件程序提供了方便,另外一方面,空出A,B,C这三个I/O口以供开发使用。U10提供了到7段LED的8位输出;U12提供8位输出,分别来自:4个按钮、微动开关,以及主板上扩展口。U9输入引脚中的任意一个的状态改变都会激活AN2131QC的WAKEUP管脚。因此,按下任何一个按钮都会引发远程的USB唤醒。 AN2131QC片内有8KB的程序和数据共享的RAM存储器,另外,还增补了32KB的外部RAM。支持Keil Debag调试的监控程序被装载到外部的RAM区,以便空出内部的RAM调试用户程序。 EZ-USB的8051带有两个通用的异步收发器(UART),可以选择作为RS232通信或一般的I/O口使用。 SY2100 EZ-USB开发板下图所示。
![]() |
| DIP开关设置 4位DIP开关的的SW3,SW4用于选择EEPROM的地址线,同时,EZ-USB内部的8051可以通过I2C读取开关的状态(SW1,SW2)。 连接器 连接器包括:USB及其两个DB9串口连接器。 扩展连接器 SY2100 EZ-USB开发板提供了3个20脚的插针连接器,以方便与外部电路连接。 PCF8574扩展I/O 开发板上有两片PCF8574(U10、U9)提供调试I/O用。 从地址0100; 开发板上的开关和按钮连接到U9,其地址是0100000d,在读八位数据是先发送01000001到U9,然后读出数据。另外其13脚/INT是一个漏极开路输出引脚,当任何状态发生变化时,都会产生一个低电平,而/INT又和WAKEUP#相连,所以任何按钮按下时都会启动一次USB的远程唤醒。 控制7段LED的PCF574,其地址是0100000d,发送一个命令01000000到U10,然后写入字节。 地址分配 ![]() |
| EZ-USB控制面板(Control Pannel)简介
启动控制面板的步骤: |
![]() |
| 当启动控制面板程序时,系统首先检查USB总线上是否存在EZ-USB设备,若有则会在主窗口生成相应的控制按钮,用户可以键入命令进行操作 |
![]() |
| 1 主操作菜单 File菜单命令:Open All Devices:查询所有的有效USB设备,并将它们全部加入下拉列表框,然后打开一个进行操作。 如果一个EZ-USB设备是在控制面板启动后插入的,控制面板程序不能识别,此时应当选用Open All Devices来添加设备到device列表中。 程序的退出可选择File中的Exit或直接用鼠标点右上角的X,可推出程序。 Edit菜单命令:相应的编辑功能。 View菜单命令:相应的浏览功能。 Options菜单命令: Properties对话框(属性)的General选项卡,其中 Verboss mode:允许选择更详细的观察传输信息的输出。 Pop up Command ToolBars: 允许选择想要观看的操作工具条,当选择时,弹出适当的工具栏,以便观察。当需要一个较大的屏幕观看区,或是更快的选择有效的操作时,可选择该项有效。
利用Keil Debuger的功能,必须首先下载Keil Debuger Monitor到开发板上运行。当EZUSB开发板插上主机时Keil Debuger Monitor就自动下载到了开发板上运行,因此,为了保证Keil Debuger Monitor在开发板上运行,最简单的方法是拔下USB连接电缆,再重新插上,或按下开发板上的Reset按钮。如果BKPT/Monitor绿色指示灯亮则表明Keil Debuger Monitor已经在开发板上正常运行。默认的Keil Monitor被装入片外的RAM空间,使用SIO1,通信波特率为19200。这里注意:按开发板上的Reset按钮,没有重新初始化LED,因此绿色指示灯保持原状态,可能不亮;但是Keil Monitor被重新装入。 还可以使用开发板上的控制面板的Download按钮下载Keil Monitor程序,该程序放置在..\Cypress\usb\target\monitor路径下,共有五个可以利用的文件。根据硬件配置选择文件。 ![]() |
| 通过RS232串行口建立从主机到开发板的连接。开发板上有SIO-0和SIO-1两个串口,默认使用SIO-1口。主机如果有多个COM口,则通过配置菜单进行设置。 这里..\Cypress\usb\example\dev_io目录下的例子,来说明如何使用Keil软件进行程序调试。步骤如下: 正确连接RS232串行口电缆和USB电缆; 一旦Keil Debuger Monitor在开发板上正常运行,则选择Start-Programs-Keil uVision2, 启动Keil uV2 IDE。 打开..\Cypress\usb\examples\ezusb\dev_io目录下的dev_io.uv2工程文件,如图2所示。 |
![]() |
| 确认使用正确的串行口和波特率。选择projest-Options for Target 'Target1'菜单,如图3所示,选择Debug选项卡,单击Settings按钮,如图4所示。设置波特率为19200,并正确选择在主机PC上使用的COM口。单击OK按钮,关闭该窗口。 |
![]() |
![]() |
选择工具栏的Debug按钮,如图5所示。这时固件程序通过RS232串口下载到开发板中,如图6所示。![]() |
选择Keil Debug菜单中的单步(Step)、宏单步(Step Over)、连续运行(Run)、停止(Stop)等各调试命令,查看运行结果。![]() |
| 选择Keil Debug菜单中的单步(Step)、宏单步(Step Over)、连续运行(Run)、停止(Stop)等各调试命令,查看运行结果。
当分别按下开发板上的F1、F2、F3、F4按钮时将有不同的现象。七段LED可显示0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F。按钮功能如下: |
| 在光盘中的...\buttons and lights\dev_io目录下,提供了按钮和灯的源程序和编译好的结果,可以直接运行。方法是:连接开发板,启动控制面板程序,Download目录\buttons and lights\dev_io\下的dev_io.hex到开发板,就可以运行程序了。 |
| EZ-USB程序设计应用举例
这里只是简单介绍一些例子,在examples目录里有更多的实例。 1. 块传输测试(ezbulk.hex) 下载 ezbulk.hex
下载 ep_pair.hex
下载 eziso.hex
下载 Vend_ax.hex
下载 isostrm.hex
下载 LoopRS232.zip
下载 dev_io.hex |
| EZUSB系列芯片都具有通过下载固件和重枚举的方式来动态改变设备特性的能力。下载固件到EZUSB芯片中有两种方法:1、使用EZUSB控制面板,通过USB口下载固件;2、用Keil
调试监控程序(Debug Monitor)通过RS232串口下载固件。在开发过程中,两种方法均可采用。但是我们希望最终作出的产品能自动完成固件下载以及设备重枚举。这就需要一个特殊的、具有下载固件并完成设备重枚举功能的设备驱动程序,暂且称之为固件下载驱动程序。EZUSB软件开发包,提供一个固件下载驱动程序的模板,即EZ-Loader
Driver。EZ-Loader驱动程序是一个非常简单的USB程序驱动模板,简化到用户只需要知道如何去干一件事情,即下载固件到USB外设。因此,可以使用该模板非常简单地开发出自己的设备驱动程序。 EZ-USB软件开发包提供的EZ-Loader驱动程序只需要很少的修改就可以支持一个专用的设备。因此,它不需要有较深的Windows驱动程序编程的知识背景,然而,用户应该非常熟悉Windows的即插即用、Windows INF文件、Windows的注册表和USB。 EZ-Loader驱动程序是一个设备驱动程序,因此它需要Windows98的设备驱动工具包(DDK)。DDK对用户来说并不友好,在尝试制作EZ-Loader驱动程序之前,应该验证所用的DDK有能力创建设备驱动程序。 一个典型的基于EZ-USB芯片的设备,如果它具有了固件下载驱动程序的功能,那么,它只需要有少量的固件存储器(EEPROM等)来存储设备的VID/PID。VID/PID与主机系统中指定的设备驱动程序相关联。该设备驱动程序的唯一功能就是下载固件到外设的EZUSB芯片中。
Windows98 DDK;
新建一个目录,将EZUSB软件开发包中..\drivers\ezloader目录下的所有文件连同子目录拷贝到该目录下。注意:\lib\i386\free和..\lib\i386\cheched目录结构必须完整,否则在编译过程中将会出错。
这里举例讲述生成EZ-Loader固件装载驱动程序的详细过程,所选取的例子是"按钮和灯",在目录..\buttons
and lights\dev_io\下的目标程序,它由Keil软件工具编译、链接后生成。设计的目标是在设备插上后,主机能通过USB总线自动下载该固件到EZ-USB外设芯片中,并自动运行该固件程序。
对于上面的例子,只是编制了固件程序,对于用户来说,往往需要编制应用程序,对开发的USB设备进行管理和操作。在我们的开发套件的光盘上提供了这样的例子,固件程序类似于dev_io,同时在vb下编制了应用程序。在光盘SY2100 Examples目录下“EZUSB\按钮和灯主机控制”中。(这是一个标准的HID设备,无需编制驱动程序) 1)在“控制面板”中下载运行SY2100 Examples\EZUSB\按钮和灯主机控制\GPHID 下的GPHID.HEX固件,运行后LED显示0~F,如下图所示。
![]() |
| 2)运行SY2100 Examples\EZUSB\按钮和灯主机控制\VBhid\VBhid应用程序,界面如下图所示; |
![]() |
| 可以通过应用程序对HID设备进行操作,同时在开发板上的操作也同时反应在应用界面上。
F1,F4按钮控制增加和减小数码的显示速度;F2,F3控制是否显示小数点。该设备的VID和PID为0547和7450。 |