1引言
通用串行总线( USB)自从 1994年由微软等公司共同提出到现在人们所熟知的USB2.0,USB技术不断发展成熟。由于具有传输速度快、支持热插拔、即插即用、扩展性强等诸多优点,USB已经被广泛应用于各种 PC标准外设和用户自定义开发设备中。正是由于 USB拥有其他接口(如并口、串口)无法比拟的优势,将 USB接口应用到弹载测量系统地面测试台的设计中,其通用性可扩展性强,能够提高读数速度、简化电路设计及驱动程序开发。
完整的 USB系统除了硬件电路外,还包括驱动程序、单片机固件程序。固件是 USB系统的核心,它要响应各种来自系统的 USB设备请求,完成各种数据的交换工作和事件处理,直接影响到 USB接口的数据传输速度[1]。因此,固件程序的编写是开发 USB设备的关键环节。
本测试台上采用的是Cypress公司的EZ-USB FX2系列单片机 CY7C68013。实现 USB接口的数据通信,CY7C68013可以配置为3种模式:端口模式、 GPIF和Slave FIFO[2]。后两种模式由于使用FX2的管道连接方法,单片机的 CPU不参与数据传输,提高了数据传输速率,从而广泛应用于图像、视频信号采集等大批量数据的传输中。但使用这两种模式进行 USB设备的开发相对较复杂,开发周期长。至于端口模式,文献中很少有介绍,由于这种模式下 CPU参与了数据传输,因此传输速率相对较慢 [3],不过端口模式开发简单,可以降低工程人员的开发难度,缩短开发周期。本测试台中传输数据量较少,传输速率也要求不高,因此本设计采用端口模式。 测试台系统总体框图弹载测量系统地面测试台由模拟信号源、数字信号源、图像信号源、 PCM码解调模块、实时监测等几部分组成,系统总体框图如图 1所示。
上位机通过 USB接口分别下载模拟量、数字量及图像数据到各自的信号源存储器中,而解调出的PCM码数据和实时监测数据也是经由 USB接口读回到上位机,从而实现了USB接口的双向数据传输。 3硬件连接
CY7C68013与外围电路连接如图 2所示。
测试台下载信号源数据时,USB单片机将数据先写入 FIFO1中,FPGA(XC2S50)通过判断 FIFO1的空信号将数据读出;而回读时 FPGA将数据写入 FIFO2,当 FIFO2半满时, USB单片机产生 FIFO2的读信号将数据读出送至上位机。USB单片机通过 PE口产生不同的状态信号(Status[7:0])使系统进行上述不同操作。 4固件程序设计
所有基于微控制器及其外围电路的功能设备的正常工作都离不开固件的参与,固件程序是基于微控制器设备运行的核心。固件设计的目标就是控制硬件来完成预期的设备功能。USB设备也不例外,用户必须编写固件程序来辅助硬件完成USB通信任务。CY7C68013芯片的固件程序负责处理上位机发来的各种 USB设备请求,并负责控制 CY7C68013与外围电路进行数据传输,其工作主要包括以下几点[4]:
(1)初始化工作,包括设置一些特殊功能寄存器的初值以实现所需的设备属性或者功能; (2) 对设备进行重新列举(ReNumeration),主要的工作有:模拟设备的断开与重新连接、对接收到的设置包进行分析判断、对主机的设备请求作出适当的响应,完成主机对设备的配置任务;
(3)响应中断,并对中断作相应的处理。USB接口在设备列举、响应主机标准请求和厂商请求、数据传送等动作过程中都会向微控制器申请中断,因此微控制器必须正确处理这些中断才能保证 USB传输的正常进行;
(4)数据的接收与发送。USB设备的主要任务就是进行数据的接收和发送,因此CY7C68013的固件程序必须要对接收和发送数据的端点进行正确的配置及控制,才能正确地接收和发送数据;
(5)外围电路的控制。USB接口要进行数据传输,CY7C68013就必须对外部 FIFO进行读写控制,因此固件程序中包含对外围电路进行控制的代码也是必要的。