微型计算机接口第11章USB设备接口
* 计算机接口技术 * 11.5 USB设备接口设计 11.5.1 USB设备接口设计方案 目前,有三种方案。一是采用可编程的逻辑器件FPGA,利用EDA开发软件和编程工具来实现USB设备接口设计。其优点是针对性强,硬件电路无冗余度,所有接口功能集成于一块芯片上。缺点是开发周期长,小批量时成本高,并且对USB协议底层及其实现的原理要有深入的理解。 二是采用专用的USB设备集成芯片,一般用于标准USB设备之中,可把USB接口与设备功能(应用)紧密结合起来,实现特定的功能。优点是针对性强,不需要设计固件,只需完成接口电路的设计和设备驱动程序的设计。缺点是灵活性太差。 三是选用通用的可编程USB接口芯片,这是USB接口应用设计最常用的一种方案。此方案将接口应用(功能)逻辑与USB接口逻辑进行分离,USB接口芯片仅完成USB总线接口功能,而应用逻辑需另外设计,并且USB接口芯片需要微控制器配合完成相关的USB总线操作。优点是通用性强,开发周期短,开发时只需关注接口应用逻辑,不需要了解USB底层协议的实现,但是,需要用户开发相应的固件程序来处理USB总线的标准操作和请求,因此,固件程序的设计成为该方案的关键。 11.5.2 USB设备接口设计要求 采用C8051F340单片机系统的USB控制器设计一个USB设备接口固件程序,使该设备在接入主机系统后,能够由系统识别、配置,并完成驱动程序安装。主机通过应用程序,能够建立与设备的读写通道,并实现对设备数据的读写操作。 11.5.3 实现步骤及关键例程设计 1.定义一个单功能设备,设备中含有一个配置描述符,该配置描述符中含有一个接口描述符,该接口描述符中含有两个端点描述符,一个用于主机输入(IN),一个用于主机输出(OUT)。 2.定义相关描述符、标准请求码以及标准请求函数原型,可分别参考11.4.3节和11.4.4节的C语言程序段中作了介绍。 3.关键例程设计及调用。USB中断服务例程是整个USB设备接口程序设计的关键,也是其他标准操作和请求处理的入口。在USB设备接口程序设计时,首先通过对USB的各类中断事件进行识别,判断是USB状态改变引发的中断还是由于对管道的操作而产生的中断,然后分别调用相应的例程进行处理。具体程序段见教材P229~P232 4.小结 USB设备固件程序开发的关键及关注重点如下。 (1)设备配置及描述。在固件程序中,需要通过描述符来描述设备的相关信息和资源配置,如描述设备的厂商ID、设备ID等表征设备ID的信息,在主机进行设备枚举、配置、资源分配和驱动程序安装时,会通过标准的请求来获取相关的信息。 (2)设备响应主机的各种标准请求和操作。设备状态的改变及主机对USB设备的管理都是通过USB总线的标准操作或请求进行的。USB设备接口模块需要对主机的标准请求或操作进行响应,以配合完成设备状态的改变或相应的处理工作。 (3)响应系统数据传输请求。对于USB设备应用而言,其关键是响应主机的数据传输请求,因此,USB设备接口固件程序设计中,通常要设计响应主机输入和输出数据传输操作的例程。 (4)设备功能逻辑设计。从接口的角度来看,以上的USB设备接口控制器的固件程序已完成USB设备的标准操作和请求的处理。并且实现了主机系统对设备读写操作的功能,即提供了主机与设备进行数据交换处理的例程,而设备逻辑功能的设计只需要封装该例程即可。设备功能逻辑的设计未进行介绍。 * 计算机接口技术 * 本 章 小 结 USB的产生背景及特点 USB系统组成及拓扑结构 USB总线标准、电气特性及信号定义 USB设备接口设计基础知识 USB设备接口设计方案及USB固件程序 传输 传输 传输 事务 事务 事务 令牌包 数据包 握手包 PID 附加信息 CRC 当主机与设备需要通信时,设备驱动和应用程序便会启动一个传输(服务) 。 一个传输包括一个或多个事务,每个事务又包括一个令牌包,可能还有一个数据和/或握手包。 每个USB事务包含一个或者多个数据包:令牌、数据和握手。所有的包都是以包含了识别信息的一个包ID(PID)开始。 事务根据其目的和数据流方向:输入事务;输出事务;设置事务 事务与传输类型 * 计算机接口技术 * 11.4 USB设备接口设计基础 在进行USB设备接口设计时,会涉及到USB接口设计的一些基础知识。 首先,要了解USB系统工作基本原理, 包括USB系统的组成、USB通信模型、USB数据类型及传输方式以及USB信号定义等,它们是USB设备接口设计的基本依据。 其次,要深入理解实现USB通信的基本方法和基本技术,