本科毕业设计--基于单片机的USB口控制彩灯系统的设计_第1页
本科毕业设计--基于单片机的USB口控制彩灯系统的设计_第2页
本科毕业设计--基于单片机的USB口控制彩灯系统的设计_第3页
本科毕业设计--基于单片机的USB口控制彩灯系统的设计_第4页
本科毕业设计--基于单片机的USB口控制彩灯系统的设计_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1 基于单片机的 USB 口控制彩灯系统的设计 专业年级:信息技术学院 02 级电子信息 学生姓名: 指导教师: 2 基于单片机的 USB 口控制彩灯系统 的设计 摘要 : USB,通用串行总线,是由 Intel,Compaq,Microsoft 等七家著名的计算机和通信公司于 1994 年推出的通用串行总线。 USB 作为一种新型的接口技术,以其简单易用、速度快、连接灵活、支持热插拔等优点而备受青睐,因而在 PC 机的多种外设上得到广泛应用 ,并成为控制系统重要的 发展方向。 本文论述了通过 USB 接口控制彩灯系统的软件和硬件设计。首先简要介绍 USB 接口的特点、硬件结构、数据流传送以及外设控制器的实现方式。然后介绍了 USB 口控制彩灯的设计,该设计主要包括输入模块、 USB 口通信模块、彩灯控制模块和主机显示模块四部分。在硬件设计部分,介绍了 USB 接口芯片 ISP1581 的性能和特点,实现了 PC 机与单片机之间的通信;利用 AT89C52 单片机的控制系统完成了彩灯的显示。 关键字: USB、 ISP1581、驱动程序、彩灯控制、 AT89C51 Abstract: The USB means Universal Serial Bus ,which was proposed by Intel, Compaq, Microsoft and other companies in 1994. As one kind of new connection technology,USB which has many advantages such as high transmission speed, facility in connection and supporting of hot insert&plug, is favored by the users. So it has been widely used in PCs peripheral equipments, and it has become one of the most important directions ofcontroling system. This article elaborated the software and the hardware design of controlling colored lantern system through the USB interface.Firstly it briefly introduced the characteristic of the USB interface, the hardware architecture, the data stream transmission as well as the way of the peripheral controller realization. Then it introduced the design of the USB interface controling the colored lantern,this design mainly includes the load module, the USB interface correspondence, the colored lantern controling and the main engine demonstrates three parts. In the hardware design part,it introduced the performance and characteristic of the USB connection chip ISP1581 , have realized PC machine and between the monolithic integrated circuit correspondence;has realized PC machine and between the monolithic integrated circuit correspondence;has completed the colored lantern demonstration using the controling system of AT89C52 monolithic integrated circuit. Key words: USB, ISP1581, driver, colored lantern control, AT89C51 3 目录 1、前言 . 5 1.1 研究提出及意义 . 5 1.2 方案简介 . 5 1.3 方案论证 . 6 1.4 各模块功能 . 6 2、 USB2.0 规范 . 6 2.1 USB 接口概述 . 6 2.1.1 USB 发展历史 . 6 2.1.2 USB 主要特点: . 7 2.1.3 USB 物理接口 . 8 2.2 USB 体系结构 . 9 2.2.1 USB 物理总线的拓扑 . 9 2.2.2 USB 主机与 USB 设备的逻辑互连 . 10 2.2.3 USB 设备 . 11 2.2.4 电源管理 . 12 2.3 数据传输模型 . 13 2.3.1 设备的端点 . 13 2.3.2 管道 . 14 2.3.3 USB 的数据流传输 . 14 2.3.4 传输、事务和包 . 15 2.3.5 USB 包类型和包格式 . 16 2.4 连接方式 . 20 3、 USB 驱动程序 . 20 3.1WDM 驱动程序模型 . 20 3.2 USB 驱动程序 . 22 3.2.1 USB 驱动程序概述 . 22 3.2.2 开发 USB 驱动程序 . 23 3.2.3Windows 如何选择驱动程序 . 24 4、 USB 口控制彩灯系统的硬件电路设计 . 24 4.1 硬件组成 . 24 4.2 USB 设备开发器件 ISP1581 使用说明 . 24 4.2.1 ISP1581 概述 . 25 4.2.2 ISP1581 特性 . 25 4.2.3 ISP1581 内部结构方框图 . 26 4.2.4 ISP1581 封装及引脚说明 . 28 4.2.5 ISP1581 结构和功能综述 . 33 4.2.6 ISP1581 硬件连接结构图 . 34 4.3 AT89C52 简介 . 35 4.3.1 AT89C52 基本结构 . 35 4.3.3 AT89C52 控制彩灯硬件设计 . 36 5、 USB 口控制彩灯系统的软件编写 . 36 5.1 固件流程 . 37 5.1.1 固件的结构 . 37 5.1.2 中断服务程序 . 38 4 5.1.3 主循环 . 39 5.2 彩灯控制程序 . 42 6、系统调试 . 42 7、参考文献 . 42 8、致谢 . 43 附录一: USU 口控制彩灯系统硬件设计 . 44 附录二: AT89C52 控制彩灯程 序 . 46 附录 3:英文资料 . 48 附录四:外文参考资料 . 5 1、前言 1.1 研究提出及意义 USB 的英文全称为 Universal Serial Bus,中文含义是通用串行总线,它是一 种快速的,双向的,同步传输的,廉价的,并可以进行热拔插的串行接口。 USB 接口使用方便,它可以连接多个不同的设备,而过去的串口和并口只能接一个设备。速度快是 USB 技术的突出特点之一。全速 USB 接口的最高传输率可达 12Mb/s,比串口快了整整 100 倍,而执行 USB2.0标准的高速 USB 接口速率更是达到了 480Mb/s。这使得高分辨率、真彩色的大容量图象的实时传送成为可能。普通的使用串口、并口的设备都需要单独的供电系统,而 USB 设备则不需要。 正是由于 USB 的这些特点,使其获得了广泛的应用。到目前为止, USB 已经 在 PC机的多种外设上得到应用,包括扫描仪,数码相机,数码摄像机、音频系统、显示器、输入设备等。对于控制系统来说, USB 是设计外设接口时理想的总线。 1.2 方案简介 USB 控制器一般有两种类型 :一种是微控制器 (MCU)集成在芯片里面的,如 Intel 的8X930AX, CYPRESS 的 EZ-USB, SIEMENS 的 C541U 以及 MOTOLORA,National Semiconductors等公司的产品 ;另一种就是纯粹的 USB 接口芯片,仅处理 USB 通信,如 PHILIPS 的PDIUSBDII(工 2C 接 口 )、 PDIUSBPIIA, PDIUSBDI2(并行接口 ), National Semiconductor的 USBNg602. USBN9603, USBN9604 等。使用这种芯片完成 USB 接口时,需要微控制器的配合 300 集成 MCU 的 USB 控制芯片优点是 CPU 与控制器在同一片芯片里, CPU 只需要访问一系列寄存器和存储器,便可实现 USB 口的数据传输,最大限度地发挥 USB 高速的特点。而且简化了程序的设计,极大地降低了 USB 外设的开发难度。缺点是灵活性不够高,开发成本较大。 纯粹的 USB 接口芯片的优点 是系统组成灵活,可根据不同的系统需求,搭配不同的 MCU,具有较高的性能价格比。但因为 USB 控制器是通过串行口或并行口与 MCU 连接,在传输速度方面和开发难度方面不如集成了 MCU 的控制芯片。 MCU 可以根据具体的需求,选用单片机、 FPGA 或数字信号处理器 (DSP)。选用单片机价格便宜,但处理速度不快。使用 FPGA 或DSP 处理速度很快,但由于逻辑复杂,开发风险大,周期长且成本太高。 因此,对应 USB 控制器的两种类型, USB 的接口方案也有两种 :一种是采用集成 MCU 的USB 控制芯片直接构成 USB 接口,另一种就是 采用纯粹的 USB 接口芯片搭配以单片机、 FPGA或者 ASP 构成 USB 接口。 不同的实现方式在设计成本、系统复杂性和通用性等方面各有优劣,选择不同的方案意味着在以上各项指标中进行取舍。 6 1.3 方案论证 结合彩灯控制的要求,选用集成 MCU 的 USB 控制芯片,通用型与移植性不好,不利于系统的扩展。因此,决定选用单独的 USB 接口芯片搭配以微处理器完成 USB 接口。经综合比较,选用 Philips 半导体生产的 ISP1581 为 USB 接口芯片,选用 89C52 单片机作为控制芯片。ISP1581 是一款性价比很高的 USB 器 件,它通常用作微控制器系统中实现与微控制器进行通信的高速通用并行接口,设计者可根据需要选择合适的微控制器,灵活性较大,适用于开发低成本且高效的 USB 外围设备。 1.4 各模块功能 输入模块:这部分位于上位机。根据系统的功能要求,利用 VC 开发环境进行编程,在PC 机中做一个操作界面,通过通信模块对单片机进行操作从而实现彩灯的控制。 通信模块:它包括上位机( PC机)对下位机( 89C52 单片机)的通信,下位机( 89C52单片机)对上位机的通信。这种通信是通过 USB 口实现的。采用的 USB 控制芯片是ISP1581。 彩 灯控制模块:通过单片机对彩灯系统的各项参数进行设置。 显示模块: LED 点阵显示。 2、 USB2.0规范 2.1 USB 接口概述 2.1.1 USB 发展历史 过去的二十年中,个人计算机的外设一直比较简单,常常用到的是鼠标、打印机。尽管个人计算机由 Apple I 发展到今天的 Pentium4,在计算性能和应用领域方面提升了许多,串口与并口却多少年来一成不变地位于主机箱的背后,在功能和结构上没有什么变化。 1994 年 Intel, Compaq, Digital、 IBM, Microsoft, NEC, North ern Telecom 等世界上著名的七家计算机公司和通讯公司成立了 USB 论坛,于 1995 年 11月正式制定了 USBO.9用串行总线 (UniversalSerialBus)规范,而把 USB 接口真正设计在主板上用了一年的时间。1997 年开始有真正符合 USB 技术标准的外设出现。 USB1.1 是目前推出的支持 USB 的计算机与外设上普遍采用的标准。 2000 年 4 月,正式公布了 USB2.0 规范,该规范的支持者除了原有的康柏、 Intel、微软和 NEC 四个成员外,还有惠普、朗讯和飞利浦三个新成员。 USB2. 7 0 向下兼容 USB1.1,数据的传输率可以达到 120Mbps -240Mbps,支持宽带宽数字摄像设备及下一代扫描仪、打印机及存储设备。 目前普遍采用的 USB1.1 主要应用在中低速外部设备上,它提供的传输速度有低速1.5Mbp s 和全速 12M bps 两种,一个 USB 端口可同时支持全速和低速的设备访问。低速 USB带宽 (1.5Mbps)支持低速设备,例如显示器、 ISDN 电话、调制解调器、键盘、鼠标、游戏手柄、扫描仪、打印机、光驱、磁带机、软驱等。全速的 USB 带宽 (12Mbps)将支持大范围的多媒体和电话设备等。 目 前 USB 已得到了一个由 450 家技术公司组成的技术联盟的支持,据 Dataquest 报告 :1998 年配有 USB 的 PC 数量将增长 300%,达到 1.36 亿台。到了 2001 年大约 100%的台式 PC 和 90%以上的笔记本计算机中都提供了对 USB 的支持。 1999 年 2 月 Intel 公司宣布了USB 2.0 规范,它在确保成本没有多大的变化的前提下,将速率从 12Mbps 提高至120-240Mbps。 2.1.2 USB 主要特点: 1、 使用方便 使用 USB 接口可以连接多个不同的设备,而过去的串口和并口只能接一个设备,因此,从一个 设备转而使用另一个设备时不得不关机,拆下这个,安上那个,开机再使用, USB则为用户省去了这些麻烦,除了可以把多个设备串接在一起之外, USB 还支持热插拔。在软件方面, USB 设计的驱动程序和应用软件可以自动启动,无需用户做更多的操作,这同样为用户带来极大的方便。 USB 设备也不涉及 IRQ 冲突问题。 USB 口单独使用自己的保留中断,不会同其它设备争用 PC 机有限的资源,同样为用户省去了硬件配置的烦恼。 2、 速度够快 速度性能是 USB 技术的突出特点之一。 USB1. 0 接口的最高传输率可达每秒 12Mb, USB2. 0 将速 率从 12Mbps 提高至 120-240Mbps。比串口快了整整 100 倍,比并口也快了十多倍。 3、 连接灵活 USB 接口支持多个不同设备的串列连接,一个 USB 口理论上可以连接 127 个 USB 设备。连接的方式也十分灵活,既可以使用串行连接,也可以使用中枢转接头 (Hub),把多个设备连接在一起,再同 PC 机的 USB 口相接。在 USB 方式下,所有的外设都在机箱外连接,连接外设不必再打开机箱 ;允许外设热插拔,而不必关闭主机电源。 USB 采用“级联”方式,即每个 USB 设备用一个 USB 插头连接到一个外设的 USB 插座上,而其本身又 提供一个 USB 插座供下一个 USB 外设连接用。通过这种类似菊花链式的连接,一个 USB 控制器可以连多达127 个外设,而每个外设间距离 (线缆长度 )可达 5米。 USB 能智能识别 USB 链上外围设备的插入或拆卸, USB 为 PC的外设扩充提供了一个很好的解决方案。 4、 独立供电 普通的使用串口、并口的设备都需要单独的供电系统,而 USB 设备则不需要,因为 USB 8 接口提供了内置电源。 USB 电源能向低 5V 电压 /100mA 电流的供电,最大可提供 500mA 的电流,因此新的设备就不需要专门的交流电源了,从而降低了这些设备的成本并提高了性价比。 5、 支持多媒体 USB 提供了对电话的两路数据支持。 USB 可支持异步以及等时数据传输,使电话可与 PC机集成,共享语音邮件及其它特性。 USB 还具有高保真音频。由于 USB 音频信息生成于计算机外,因而减小了电子噪音干扰声音质量的机会,从而使音频系统具有更高的保真度。 6、 USB 存在的问题 尽管在理论上, USB 可以实现高达 127 个设备的串列连接,但是在实际应用中,也许串联 3 到 4 个设备就可能导致一些设备失效。而且,实际的 USB 产品中,只有键盘是有一个输入口、一个输出口的设备,其它的则只有一个输入口而已,根本无法再 连接下一个 USB设备,所以当前的 USB 应用中,使用 Hub 来连接多个 USB 设备是必需的。 2.1.3 USB 物理接口 USB 的物理接口包括电气和机械两方面规范。 USB2.0 与 USB1.1 兼容,它们使用相同的连接器和电缆。 USB2.0 有三种数据传送速率 :(1)USB 高速, 480Mbps;( 2)USB 全速, 12Mbps;( 3) USB 低速, 1.5Mbps。电气方面, USB 是通过一条含 4 根导线 (一对信号线和一对电源线 )的电线来传输信号和电源的,如图 1-1 所示。它们分别是 :红色的 Vbus 导线、绿色的D+导线、白色的 D-导线与黑色的 GND 导线。其中, Vbus 就是俗称的火线,工作电压为 +5V,最高电流为 500mA。 GND 就是俗称的地线,电压为 0,它与火线总称为电源线。 D+与 D-就是数据传输线。信号是利用差模方式送入 D+、 D-两根信号线,利用差模传输方式,接收端差模信号的灵敏度不高于 200mV。 图 2-1 USB 电缆 时钟信号编码后同差模数据信号一起在 D+和 D-信号线上传输,信号的编码方式采用NRZI 和位填充方式。这种编码方式不需要开始位和停止位,也不需要时钟线,而是通过位填充和同步 (SYNC)字段来保证发送方和 接收方的同步。与之对应的,在 USB 接口中也只有4 个金属触点。 9 2.2 USB 体系结构 2.2.1 USB 物理总线的拓扑 一个 USB 系统包含三类硬件设备 : USB HOST(USB 主机 )、 USB DEVICE(USB 设备 )、 USB HUB(USB 集线器 )。它们之间通过 USB 总线相连构成一个星型拓扑结构。在一个 USB 系统中,必须有而且只有一个主机,主机利用 USB 主控制器来操纵主机和 USB 设备之间的数据传输。主控制器象其它 I/0 设备一样挂在系统总线 (PCI 总线 )下面,附着于主控制器的集线器是USB 系统的根集线器 (Root Hub),各级集线器提供若干个连接其它设备的下行端口。图 2-2 给出了 USB 物理拓扑结构举例。 图 2-2 USB 总线拓扑结构 从物理拓扑结构来看,每个设备是通过集线器连接主机上,但在逻辑上,每个 USB 备都有一个由主机分配的逻辑地址,该地址是唯一的,主机使用该地址与每个 USB 设备通信,所以,从逻辑角度看,每个设备好象直接和主机相连,集线器本身也是一个逻辑设备。 USB HOST( USB 主机 ) 在一个 USB 系统中,仅有一个 USB HOST, USB HOST 有以下功能 :管理 USB 系统;每毫秒产生一帧数据;发送配置请求对 USB 设备进行配置操作;对总线上的错误进行管理和恢复。 USB DEVICE ( USB 设备 ) USB DEVICE 接收 USB 总线上的所有数据包,通过数据包的地址域来判断是不是发给自己的数据包:若地址不符,则简单地丢弃该数据包;若地址相符,则通过响应 USB HOST 的数据包与 USB HOST 进行数据传输。 USB HUB ( USB 集线器 ) USB HUB用于设备扩展连接,所有 USB DEVICE都连接在 USB HUB的端口上。一个 USB HOST总与一个根 HUB (USB ROOT HUB)相连。 USB HUB 为其每个端口提供 100mA 电流供设备使用。同时, USB HUB 可以通过端口的电气变化诊断出设备的插拔操作,并通过响应 USB HOST 的 10 数据包把端口状态汇报给 USB HOST。一般来说, USB 设备与 USB HUB 间的连线长度不超过5m, USB 系统的级联不能超过 5 级 (包括 ROOT HUB)。 每一个设备 (device)会有一个或者多个的逻辑连接点在里面,每个连接点叫 endpoint.每个 endpoint 有四种数据传送方式 :控制 (Control)方式传送 ;同步 (isochronous)方式传送 ;中断 (interrupt)方式传送 ;成块 (bulk)传送 .但是所有的 endpoint0 都被用来传送配置和控制信息。在 host 和设备的 endpoint 之间的连接叫作管道“ pipe” , endpoint0 叫做缺省 (default pipe)。对于同样性质的一组的 endpoint 的组合叫做接口 (interface),如果一个设备包含不止一个的接口就可以称之为复合设备 (composite device)。同样的道理,对于同样的类型的接口的组合可以称之为“配置” (confguration)。但是每次只能有一个配置是可用的,而一旦该配置激活,里面的接口和 endpoint 就都同时可以使用。 host 从设备发过来的描述字 (descriptors)中来判断用的是哪个配置,哪个接口等等,而这些的描述字通常是在 endpoint0 中传送。 2.2.2 USB 主机与 USB 设备的逻辑互连 在 USB 系统中, USB 主机和设备之间的逻辑互连关系被分为三层,见图 1-3。主机上的实际通信是按照竖直箭头进行的,设备方的对应接口与某个具体实现有关。虽然对于 USB设备层和功能层而言,都是通过 USB 总线接 口层具体实现的,但是在这两层都有主机和设备之间的逻辑互连关系。 在功能层,是通过客户软件向主机提供设备的一个特定的功能,如鼠标、键盘等,该层与 USB 协议无关。 USB 设备层用于提供 USB 系统软件对一个 USB 设备执行通用的 USB 操作,在该层实现了所有的 USB 特性。 总线接口层控制主机和设备之间的电气和协议层交互,主机和设备之间的实际的通信流是通过该层来传输的。 功能层 USB 设备层 客户软 件 USB 总线接口层 USB 系统软件 USB 主控制器 实际通信流 逻辑通信流2 11 图 2-3 USB 系统的逻辑互连 2.2.3 USB 设备 1、 USB 设备的物理结构 USB 设备从物理上分为两类,一类 是集线器,另外一类是 USB 功能设备。 (1)集线器 每个 USB 设备都必须连接到一个集线器上,集线器本身也是一种特殊的 USB 设备。集器至少应含有两个部件 :中继器和控制器。中继器负责在上游集线器和下游设备之间传递 USB信息,同时检测设备的连接和断开,并给设备供电 ;集线器控制器用来管理主机和中继器之间的通信。此外,每个 USB2.0 集线器都必须有一个事务转换器,它具有转换速度的功能,用来管理上游高速总线和下游低 /全速设备之间的通信。 每个集线器都支持标准的设备描述符以及集线器类别描述符。集线器通过设备标准 请求来使主机配置集线器,通过集线器类别特定请求,来监视和控制集线器端口的状态。 (2)USB 功能设备 功能设备是通过 USB 集线器连接到 USB 系统中。一个 USB 功能设备首先应该能够完成某种功能,如鼠标或存储设备等,此外,它应该能够通过 USB 总线和主机进行信息的相互传送,为此,应该有一个 USB 控制器,来控制主机和外设之间的通信。 USB 控制器的形式多样,有些控制器包含有内置的 CPU,有些则需要和外部 CPU 连接,来处理外设与控制器之间的非 USB 任务和通信。除了 CPU 以外,所有的 USB 控制器都有一个或多个 USB 连接端口,数据缓冲区、寄存器、程序和数据存储器以及用于连接外部设备的 I/0 引脚。 USB 连接端口用来支持和主机之间的数据传输,其中的收发器 (Transceiver)提供总线的硬件接口,与收发器连接的电路形成串行接口引擎 (SIE), SIE 主要用来检测和传送信息包,编译和译码总线上传输的数据格式,检测和产生 CRC 等,大部分和 USB 相关的任务是通过 SIE 自动完成的。 程序存储器保存供 CPU 执行的代码,这些代码叫做固件,用来访问 USB 端口和其它 I/0引脚以及其它工作,程序存储器可能是 ROM, EPROM, EEPROM 等。数据存储器用来储存临时的数据,数据存储器一般是 RAM 。 数据缓冲区用来存储从主机接收到的数据和要发送到主机的数据,它可以是内存的一块,也可以是专门的寄存器。 2、 USB 设备的逻辑结构 每个设备内有一个或多个逻辑连接点,称为端点,设备通过端点和主机交换数据,一组相关的端点称为接口,每个接口都有一个配置,端点、接口、配置的特性是通过各自的描述符来描述。如图 2-4 所示。 12 图 2-4 USB 设备逻辑结构 描述符 (Descriptor)是一个数 据结构,是主机了解设备的格式化信息。主机在检测设备的时候,要求设备传回描述符以便了解设备并配置该设备,主机要求的首先是设备的设备描述符,然后是配置描述符以及每个配置的接口描述符,最后是端点描述符,还可能有可选的字符串描述符。高阶的描述符会包含其它低阶的描述符的情况。 每一个设备只能有一个设备描述符,设备描述符包含整个设备的信息,例如设备所支持的 USB 规范的版本,厂商 ID 和产品 ID,以及设备支持的配置数目。每一个设备可以有一个或多个配置描述符,其中包含设备的电源要求以及该配置所支持的接口数目,大部分设备只有一 个配置,但有些设备可支持多个配置,但在同一时间只有一个配置使能。例如,一个设备既可以配置为总线供电,也可以配置为自供电,当自身配有电源的设备插入 PC机的时候,设备驱动程序将选择总线供电配置,由主机给设备供电,不需要连接自身的电源,而当该设备连接到笔记本电脑的时候,就需要用户使用自身所带的电源。 接口描述符是设备一个特定功能的端点集,每个配置至少必须支持一个接口。对大部分设备,只有一个接口,但有些设备可以同时有多个作用的的接口。例如一个集合有传真 /扫描 /打印功能的多功能设备,就有三个接口,接口 1是描述传真功能 的端点集,接口 2是描述扫描功能,而接口 3 描述打印功能,每个接口都有接口描述符,不象配置描述符,可同时有多个接口同时使能。 每一个特定接口内的端点,都有端点描述符 (端点 O 没有端点描述符 ),端点描述符给出了数据传输类型,方向,该端点所支持的最大包尺寸等。关于设备、配置、接口、端点描述符各个字段的格式和具体含义,将在后节给出详细的介绍。 2.2.4 电源管理 USB 有两种电源分配模式 :总 线 供 电 模 式 (Bus-Powered) 和 独 立 供 电 模 式(Self-Powered)。在总线供电模式下,主机给直接相连的 USB 设备提 供电源。但每个 USB接口 0 端点 2 接口 1 接口 2 配置 1 设备 配置 2 配置 0 端点 0 端点 1 端点 3 13 单元通过电缆只能提供有限的功率。因此, USB 设备还可以有自己的电源。集线器可为与之相连的 USB 设备提供电源。 USB 主机具有与 USB 无关的电源管理系统。 USB 的系统软件与主机的能源管理系统相结合,共同处理系统有关电源的事务,如挂起、恢复等。 2.3 数据传输模型 USB 设备对于 USB 系统来说是端点的集合,端点被分成组,一组端点实现一个接口,设备端点和主机软件之间利用管道进行联系。设备驱动程序就是通过这些接口和管道来与设备进行通信。三者之间的关系如图 2.5 所示。 图 2-5 USB 通信流模型 2.3.1 设备的端点 所有的传输都是以一个设备端点开始,或以一个端点为目的地。端点是一个储存多个字节的缓冲器或内存的一块,用来作为数据的缓冲区。储存在设备端点的数据可能是接收到的数据,或是等待要送出的数据。除控制端点可以双向传输数据外,其它端点只能携带单向数据。每一个设备端点是由一个端点号码和方向组成,号码范围从 OOH 到 OFH,方向如果为输入 (IN),表示流向主机,如果为输出 (OUT),表示流出主机。一个单一的端点号码可以支持 IN 和 OUT 端点地址,例如端点号 1既可以支持一个 IN端点来传输数据到主机,也可以支持一个 OUT 端点来从主机发送数据。除了端点 0(控制传输专用 )外,一个全速和高速设备最多可以有 30 个额外的端点,端点号码从 1-15。一个低速设备只能有两个额外的端点,方向可以任意组合。 14 当设备收到来自主机包含设备地址和端点地址的输出事务后,它将接收到的数据储存在合适的端点,然后触发一个中断,设备的中断服务程序负责处理接收到的数据。当设备收到包含设备地址和端点地址的输入事务时,如果设备有发送到主机的数据,它就会从指定的端点送出数据,然后触发一个中断,设备的中断服务程序就会为 下一个 IN 事务做好准备。 2.3.2 管道 在一个传输发生之前,主机和设备之间必须先建立一个管道 (Pipe)。 USB 的管道并不是一个实际的对象,它只是设备的端点和主机控制器的软件之间的连接。 为了向设备请求配置信息,主机在设备上电或设备连接后很短时间内会建立起管道,如果设备从总线移掉,主机将删除不再需要的管道。每一个设备都会有一个默认控制管道(Default Control Pipe ),此默认控制管道使用端点 0。系统软件利用该管道来识别设备和配置要求,并对设备进行配置。 根据所传输信息是双向还 是单向的,管道可以分为两类 :消息管道和流管道。消息管道是双向的,控制传输是唯一使用消息管道的传输;流管道是单向的,其它传输均使用流管道。 2.3.3 USB 的数据流传输 USB 总线上数据传输的结构如图 2-6所示。 从物理结构上, USB 系统是一个星形结构;但在逻辑结构上,每个 USB 逻辑设备都是直接与 USB HOST 相连进行数据传输的。在 USB 总线上,每 ms 传输 1 帧数据。每帧数据可由多个数据包的传输过程组成。 USB 设备可根据数据包中的地址信息来判断是否响应该数 据传输。在 USB 标准 1.1 版本中,规定了 4 种传输方式以适应不同的传输需求:控制、同步、中断和成块传输。如果是从硬件开始来设计整个的系统 ,需要正确选择传送的方式 ,要是设计一个驱动程序 ,就只需要弄清楚他是采用的什么工作方式就行了。通常所有的传送方式下的主动权都在 PC 边 ,也就是 host 边。 控制传输 (Control)方式传送 :控制传送是双向传送,数据量通常较小。 USB 系统软件中断传输 图 2-6 USB 总线上数据传输结构 USB 总线各类数据传输 1ms 1ms 块数据传输 15 用来主要进行查询、配置和给 USB 设备发送通用的命令。控制传送方式可以包括 8、 16、32 和 64 字节的数据,这依 赖于设备和传输速度。通常全速设备每次控制传输的最大有效负荷可为 64 个字节,而低速设备每次控制传输的最大有效负荷仅为 8 个字节。控制传输典型地用在主计算机和 USB 外设之间的端点 (Endpoint)0 之间的传输,但是指定供应商的控制传输可能用到其它的端点。 同步传输 (isochronous)方式传送 :同步传输提供了确定的带宽和间隔时间( latency)它被用于时间严格并具有较强容错性的流数据传输,或者用于要求恒定的数据传送率的即时应用中。同步传输仅适用于全速 /高速设备。同步传输每 ms 进行一次传输 ,有较大的带宽,常用于语音设备。同步传输每次传输的最大有效负荷可为 1023 个字节。例如执行即时通话的网络电话应用时,使用同步传输模式是很好的选择。同步数据要求确定的带宽值和确定的最大传送次数。对于同步传送来说,即时的数据传递比完美的精度和数据的完整性更重要一些。 中断传输 (interrupt)方式传送 :中断方式传输主要用于定时查询设备是否有中断数据要传送。用于支持数据量少的周期性传输需求。全速设备的中断传输周期可为 1-255ms,而低速设备的中断传输周期为 10-255ms。全速设备每次中断传输的最大 有效负荷可为 64 个字节,而低速设备每次中断传输的最大有效负荷仅为 8 个字节。设备的端点模式器的结构决定了它的查询频率,从 1 到 255ms 之间。这种传输方式典型的应用在少量的分散的、不可预测数据的传输。键盘、操纵杆和鼠标就属于这一类型。中断方式传送是单向的并且对于 host 来说只有输入的方式。 成块传输 (bulk)传送 :主要应用在数据大量传送传送和接受数据上,同时又没有带宽和间隔时间要求的情况下,要求保证传输。块数据传输是非周期性的数据传输,仅全速 /高速设备支持块数据传输,同时,当且仅当总线带宽有效时才进行 块数据传输。块数据传输每次数据传输的最大有效负荷可为 64 个字节。打印机和扫描仪属于这种类型。这种类型的设备适合于传输非常慢和大量被延迟的传输,可以等到所有其它类型的数据的传送完成之后再传送和接收数据。 2.3.4 传输、事务和包 一个传输可能只传送几个字节的数据,也可能传送一个长的文件,根据传输的数据量的大小,传输可以由一个或多个事务构成,每个事务负责传输一部分数据。在一个事务中包含着事务类型、错误校验、状态和控制信息,以及要传送的数据,一个事务是一个单一通信,它必须被无中断的完成,其它任何通信不能插 入到一个事务的中间。事务由包(Packets)构成,包是构成事务的基本元素。根据不同的事务类型,每个事务包括一个、两个或三个包,在每个包中包括一个包标识 (PAD )、错误校验位和其它的信息。传输、事务和包的关系见图 2-7。 16 图 2-7 USB 的传输、事务与包的关系图 2.3.5 USB 包类型和包格式 一个 USB 事务包括令牌包,可选的数据包和状态包。每一个包都是由一个同步字段 (SYNC)开始。紧跟 SYNC 是 8 位的包标识 PID , PID 中高 4 位为包类型域,低 4位 为校验域。在 USB 中共有四种包 :令牌 (Token)包,数据 (Data)包,握手 (Handshake)包和特殊类型 (Special)包。每种包又分为若干个类型,所有的包类型均是由 PID 统一编码来标识。见表 1。 表 1 USB 数据包类型 PID 类型 PID 名称 PID3: 0 说明 令牌 OUT IN SOF SETUP 0001 1001 0101 1101 输出(主机到设备) 输入(设备到主机) 帧开始令牌 控制传输使用 数据 DATA0 DATA1 DATA2 MDATA 0011 1011 0111 1111 数据包 PID 数据包 PID 高速数据 PID,等时传输使用 高速数据 PID,等时传输使用 握手 ACK NAK STALL NYET 0010 1010 1110 0110 接收端接收到无错的数据包 因为端点忙,接收端不能接收数据或发送端不能发送数据。 不支持控制请求或端点被禁止。 高速传输使用,设备接受到无错数据包,但还没准备好下个,或是集线器还没完成分割事务。 特殊 PREE ERR SPLIT PING 1100 1100 1000 0100 主机发出的前同步信号,指示下一个包发往低速设备。 高速使用,由集线器传回的用来报告在分割事务时低速或全速传输的错误。 高速使用,主机报告开始一个分割事务。 高速使用,主机用来检查 NYET 后的控制写与批量输出事务。 传输 事务 令牌包 数据包 握手包 事务 事务 传输 令牌包 传输 17 保留 0000 未来使用 1.令牌包 每个 USB 事务总由主机发送一个令牌包开始,令牌包向 USB 设备表明将要开始的事务的类型以及包所要发送到的设备地址和端点地址。共有四种基本类型的令牌包 :IN,OUT,SETUP 和 SOF。 IN 令牌包表示本事务是输入事务,主机要从 USB 设设备读数据 ;OUT 令牌 包表示本事务是输出事务,主机要向 USB 设备发送数据 ;SETUP 令牌包在枚举过程中使用,表示将要开始一个控制传输。这三个令牌包的包格式如下。 8 位 8位 7位 4位 5位 SYNC PID ADDR ENDP CRC5 SOF-帧开始包,由主机在全速时以 1 毫秒的时距送出,在高速时以 125 微秒的时距送出。帧开始包不需要设备返回任何信息,在该包中包含有帧标号,以供实时性强的设备跟踪帧标号。低速设备看不到 SOF 包。 SOF 的格式如下。 8位 8 位 11 位 5位 SYNC PID 帧标号 CRC5 2.数据包 令牌包后面是可选的数据包,数据包用来传输本令牌包需要的数据或信息。共有四种类型的数据包 :DATAO,DATA1,DATA2 和 MDATA。两种数据包 DATAO 和 DATA1 交替使用是为了防止数据发送方和接收方的比特序列失调。在控制器芯片中,通常用一个触发器来指示数据交替的状态,发送端和接收端都会跟踪数据交替的状态,保证经过多个处理操作后,双方的比特序列仍能保持同步。 只有在高带宽、高速的等时传输中才用到所有四种数据 PID,使用多种数据包 PID,是为了让数据接收者检测到丢失或损坏的数据包。数据包格式如下。 8位 8 位 0-1024 字节 16 位 SYNC PID 数据 CRC16 3.握手包 握手包是主机或设备用来向对方报告一个命令或数据处理操作的状态。共有三种类型的基本类型握手包 :ACK 说明成功地接收到包,主机和设备方都可以返回 ACK;NAK 只能由设备方给出,说明设备因为忙从而暂时不能发送或接收数据 ;STALL 也只能由设备方给出,说明设备端点因为严重的错误而被禁止。特殊握手包 NYET 是一 种在高速传输中使用的握手包,两种情况要使用 NYET。一种情况是作为 PING 事务的一部分由高速设备端点返回,另外一种情况是,在分割事务中,当低 /全速事务还没有完成或集线器不能执行分割事务时,由集线器返回。特殊握手包 ERR 只有高速的集线器在完成分割事务时才会使用,用来表示在集线器与主机的高速事务中,设备没有传回预期的握手信号。握手包格式如下。 8 位 8位 18 SYNC PID 4.几种特殊令牌包 ( 1) PRE 令牌包 PRE 使用在低速设备,用来告诉主机下一个信息包是送给 低速设备的,集线器将启用与所有连接的低速设备的通信。 ( 2) PING 令牌包 PING 令牌包和 IN,OUT,SETUP 有相同的格式,它只适合高速事务。速与全速时,当主机使用控制、批量与中断传输送出数据 (OUT 事务 )时,它将令牌和数据包一块送出,当设备没有准备好接收数据时,它会传回一个 NAK 让主机稍后再重试,如果数据量大,而且设备经常没有准备好,这种模式将浪费大量的总线时间。在多数据量的高速批量和控制传输中,采取了下面新的处理方式,在高速的 OUT 事务中,当设备成功接收到一个数据包后,设备的端点将传回一个 NYET 握手信号,表示该数据包可以接收,但端点还没有准备接收另一个数据包,主机会送出一个 PING 令牌包,设备用 ACK,NAK 或 STALL 对该令牌包做出响应,在设备准备好的情况下,主机才开始发送数据包。很显然传送一个 PING 令牌包,比传送整个数据包节省了总线带宽,提高了传输效率。 ( 3) SPLIT 令牌包 当 USB2.0 主机在高速总线上与低 /全速设备通信时,由 USB2.0 集线器负责速度转换,将来自上游的高速事务转换为低 /全速。由于高速比全速快 40 倍,比低速快 320 倍,在这种情况下,为了不让整个总线等待,主机将使用分割事 务。 USB 为分割事务定义了一个特殊令牌包 :SPLIT。它是一个 4 字节的令牌包。一个分割事务包括两部分 :开始分割事务(SSPLIT)和完成分割事务 (CSPLIT),对应的令牌分别为 SSPLIT 令牌和 CSPLIT 令牌,这两个令牌包的 PID 都使用表 2-1所示的 SPLIT 包标识号,在包中用一位来区分是 SSPLIT 还是CSPLIT,其它字段两者是完全一样的,分别给出了包要到达的集线器地址、集线器端口号,以及该端口连接的是低速还是全速设备。 开始分割事务包括一个 SSPLIT 令牌包和一个低 /全速令牌包,根据不同的事务类型 和数据传输方向,令牌包后面是可选的数据包和握手包。如图 1-8所示。 令牌相 图 1-8 开始分割事务 完成分割事务包括一个 CSPLIT 令牌包和一个低 /全速令牌包,根据不同的事务类型和数据传输方向,令牌包后面是可选的数据包和握手包。如图 2-9所示。 令牌相 图 1-9 完成分割事务 SSPLIT 令牌 低 /全速令牌 数据包 握手包 CSPLIT 令牌 低 /全速令牌 数据包或握手包 19 对于 IN 事务, USB2.0 主机首先向 USB2.0 集线器发出一个开始分割命令,其中包含SSPLIT 令牌和 IN 令牌,然后主机去处理其它高速事务,集线器收到开始分割命令后,随后发出一个低 /全速的 IN 令牌,设备回传数据包响应 IN 令牌,集线器收到数据包后向设备传送一个握手包,最后,主机在适当的时间发出一个完成分割令牌包,集线器将设备的数据包传送给主机,结束整个事务。见图 1-10。 图 1-10 输入事务的高速分割 对于 OUT 事务, USB2.0 主机首先向 USB2.0 集线器发出一个开始分割命令,其中包含CSPIT 令牌、 OUT 令牌和数据包,集线器收到该命令以后,将 OUT 令牌和收到的数据包传给设备,设备正确收到后,回传一个 ACK。最后主机发出一个分割完成命令,集线器以 ACK应答,表示设备成功接收到数据,从而结束整个事务。见图 2-12。 集线器 主机 OUT DATA0 ACK CSPLIT OU 主 T ACK 设备 1 开始分割 开始分割 SSPLITOUT DATASSPLIT OUT DATA00 主 2 低 /全速 高速总线 3 完成分割 低 /全 速总线 SSPLIT OUT DATA0 集线器 主机 IN令牌 DATA0 ACK SSPLIT IN 令牌 CSPLIT IN 令牌 DATA0 设备 1 开始分割 2 低 /全速 高速总线 3 完成分割 低 /全 速总线 20 图 1-11 输入事务的高速分割 2.4 连接方式 USB 芯片在外设领域的应用面很广。 USB 控制器一般有两种类型:一种是 MCU 集成在芯片里面的,如 CYPRESS 的 EZ-USB;另一种就是纯粹的 USB 接口芯片,仅处理 USB 通信,如 PHILIPS 的 PDIUSBD12,National Semiconductor 的 USBN9604 等 。 集成 MCU 的 USB 控制芯片 优点是 CPU 与控制器在同一片芯片里, CPU 只需要访问一系列寄存器和存储器,便可实现 USB 口的数据传输,最大限度的发挥 USB 高速的特点。而且简化了程序的设计,极大地降低了 USB 外设的开发难度。缺点是灵活性不够高,开发成本较大。 纯粹的 USB 接口芯片 的优点是系统组成灵活,可根据不同的系统需求,搭配不同的MCU,具有较高的性能价格比。但因为 USB 控制器是通过串行口或并行口与 MCU 连接,在传输速度方面不如集成了 MCU 的控制芯片。 不同的实现方式在设计开销、元器件开销和引脚数方面 各有优劣,选择不同的方案意味着在以上各项指标中进行取舍。 3、 USB驱动程序 3.1WDM 驱动程序模型 在 Windows 系统下,主机与设备之间的 USB 通信必须经过设备驱动程序来传输。设备驱动程序是位于主机的一个软件组件,有了设备驱动程序,应用程序在访问设备的时候,只需要知道外设的名字 (如 HP Laseret)或功能 (如游戏杆 )即可,而不必知道设备的物理地址、传输的信号种类和通信所需要的协议等,这一切由设备驱动程序来完成。 USB 系统驱动程序的设计是基于 WDM( Windowsdriver model)驱动程序模型的。 WDM 模型是微软公司为当前主流操作系统 Win98 和 Win2000 设计的一种驱动程序构架。它和传统的 Win3.x和 Win95使用的 VxD的驱动是完全不同的体系结构。对于最终用户来说,WDM 驱动程序在 Windows98 和 Windows2000 下很相似。图 2-1中给出了 Windows 2000 操作系统结构和 WDM 驱动程序的分层模式,整个系统被分为用户模式和内核模式。 从图中可以明显看出 Il0 操作最后是怎样作用到硬件上的。用户模式下的应用程序对Win32 子系统进行 win32API 调用,这个调用由 I/O 系统服务接口作用到 I/O 管理器 (严格地说,在 Windows 系统中不存在 I/O 管理器这样的独立模块,这个只是为了方便叙述而将各种核心功能调用的集合称作 I/O 管理器 ), I/O 管理器进行必要的参数匹配和操作安全性检查,把这个请求打包形成 IRP(I/O RequestPackage,I/O 请求包 )结构,并把此 IRP 传给 21 驱动程序。在 WDM 体系结构中,对 IRP 的处理实行分层处理模式,每层驱动再把 I/O 请求划分成更简单的请求,以传给更下层的驱动执行。 从驱动程序的角度看,每个设备都被看 成若千个设备对象 (DO),这些设备对象的来历各不相同,每个设备对象都有驱动程序与之对应,它们根据一定的规则组成设备对象堆栈,也就是对应的驱动程序堆栈。总线驱动程序负责枚举设备,也就是说,它负责发现总线上的所有设备并检测设备何时添加到总线上或从总线上删除,总线驱动程序每发现一个设备就为之创建一个对应的物理设备对象( PDO)。功能驱动程序负责完成设备的特定功能,知道如何控制设备工作,它在驱动程序栈中位于总线驱动程序上面,功能驱动程序负责创建一个功能设备对象 (FDO)。一个设备只允许有一个 PDO,却可以拥有多个 FDO,在驱动程序中直接操作的不是硬件而是相应的 PDO 与 FDO。在功能驱动程序的上方和下方的过滤驱动程序是对功能驱动程序的补充,用来增加功能驱动程序的能力。 WDM 的这种层次结构,可以使得用户在编写驱动程序的时候,不用再考虑内存分配 IO端口配置、 DMA 申请等, Windows 将资源申请全部自动化,由总线驱动程序完成,编写驱动程序时只要考虑控制设备本身即可。 应用程序 I/O 管理器 功能驱动驱动程序 WIN32 子系统 I/O 系统服务 上层过滤驱动程序 底层过滤驱动程序 总线驱动程序 硬件设备 内存管理器 用户模式 终端用户 内核模式 特定硬件接口 图 2-1 WDM 驱动程序模型型号 驱动程序栈 API 调用 IRP 22 3.2 USB 驱动程序 3.2.1 USB 驱动程序概述 和其它 WDM 驱动程序一样, USB 也使用分层驱动模型,每层处理一部分通信任务,其中总线驱动程序由集线器驱动程序、总线类别驱动程序和主控制器驱动程序共同组成。如图 2-2所示。 USB 设备的 USB 客户软件 (功能驱动程序 )会通过一个 Windows 所定义的一个软件接口来同集线器驱动程序进行通信,集线器驱动程序用来管理连接端口的初始化,而 USB 集线器驱动程序则要通过 USBDI 通用串行总线驱动程序接口 )来实现同串行总线驱动 (USBD)的通信, USBD 负责管理总线的电源、检测 USB 设备和管理 USB 事务,然后, USBD 会选择三种主控制器驱动程序之一来同其下方的主控制器通信,最终,由主控制器直接实现对 USB 物理总线的访问。 当应用程序和 USB 设备通信的时候,不需要知道 USB 协议的细节,甚至不需要知道该设备是否是一个 USB 设备,这一切都由设备驱动程序来完成,它只需要调用一个 API 函数来读或写设备, Windows 会将此调用传递给适当的功能驱动程序,功能驱动程序将此要求转换成 USB 总线类别可以理解的格式。象其它 WDM 驱动程序一样, USB 驱动程序软件堆栈内的层间通信也使用 IRP 的结构来互相通信,对于 USB 通信, IRP 使 用 USB 请求块 (URB)的结构。在 DDK 中有 URB 结构的定义。 23 图 2-2驱动程序构成 3.2.2 开发 USB 驱动程序 在 USB 的驱动程序中,所有的总线驱动程序都不需要用户编写, Window 都自带这些驱动程序。功能驱动程序可以通过两种方式来定义,一种方式是使用类别驱动程序,比如人机接口类别 (HID)、大容量存储器类别等,当一个设备不属于系统支持的任何类别时,就需要编写特定设备的功能驱动程序。对于使用类别驱动程序的设备,如果其要求超过类 别驱动程序的能力时,需要辅助的过滤驱动程序,比如 HID 包括的范围非常广,有些设备并不是标准 HID 设备,用户可以通过编写过滤驱动程序,来完成这些设备对 HID 类别的支持。 要编写一个设备驱动程序,必须有 Microsoft 的 VisualC+编译器,编译器中包含完整的 WDM 开发环境与调试的功能,除此以外,其它工具对编写 WDM 驱动程序也有不同程度的帮助,它们包括 Windows DDK。 MSDN、驱动程序工具软件等。 Windows DDK 中包含有关于USB 驱动程序的范例代码和文件说明,以及 usbview 工具软件等,可 以在 Microsoft 的网站上下载 Windows DDK o MSDN 是微软所有产品的总集,包括了大量的文件、范例代码以及开发工具。 使用驱动程序工具软件可以帮助我们快速地开发驱动程序,这些工具有 BSQUARE 的WinRT for USB(在 网站下载 )和 Jungo的 WinDriver USB(在 网站下载 ),这两个工具软件都可以自动生成源代码,使用起来简单、方便,但它们不适合所有的设备,因为它们无法建立过滤驱动程序,达不到最佳化。此外,还有 3 个工具软件 :BSQLlARE 的 WinDK ,CompuWare NuMega 的 DriverWorks 和 Jungo 的 KernelDriver,这3个工具软件都提供 Wizard与程序代码函数库,来帮助建立驱动程序,需要用户填入 Wizard所提供的骨架码 (Skeleton code,然后编译驱动程序。在实际应用中,根据项目的具体情况,需要选择一种合适的驱动程序工具。 应用程序HC 功能驱动程序(客户软件) 主控制器驱动程序( UHCI,OpenHCI,EHCI) 主控制器( HC) USB 总线类驱动程序( USBD) 集线器驱动程序 总线驱动程序 USB 总线 24 3.2.3Windows 如何选择驱动程序 当一个新的 USB 设备插入后,如果此设备从未被 Windows 检测过, Windows 使用 .inf文件来寻找设备的驱动程 序。 .inf 是一个文本文件,此文件用来告诉 Windows 使用哪一个驱动程序,以及存储在注册表内的设备信 J 息、。设备管理器将从枚举过程中得到的设备信息,与保存在系统注册表中的 .inf 文件相比较,然后选择合适的驱动程序,如果在系统注册表中找不到符合的 .inf 文件,它会显示一个 添加新硬件向导 对话框,添加新硬件向导在指定的位置找到该设备的 .inf 文件,并复制到系统注册表的 INF 文件夹中,然后加载 .inf文件指定的驱动程序。为了防止每次检测到新设备时都要读 .inf 文件本身, Windows 维护着一个驱动信息库,在驱 动信息库中保存着从这个 .inf 文件调用的信息,信息库文件为drvdata.bin 和 drvidx.bin,保存在 windowslinf 文件夹里。 如果一个设备属于 Windows 支持的标准设备类别,则不需要自己的 .inf 文件来确认该设备。设备管理器在设备第一次连接时,通过枚举过程中得到的设备描述符来确定设备属于何类别,然后使用类别 .inf 文件来为设备选择类别驱动程序,例如 HID 类别的 .inf 文件在 Win98 下为 hiddev.inf,在 Win2000 下为 hidserv.inf, Win98 不支持大容量存储类别,在 Win2000 下大容量存储器类别 .inf 文件为 usbstor.inf. 4、 USB口控制彩灯系统的硬件电路设计 4.1 硬件组成 该系统硬件主要由输入模块、通信模块、彩灯控制模块及显示模块等部分组成。 输入模块:这部分位于 PC 机。可利用 VC 开发环境进行编程,在 PC 中做一个操作界面, 通过通信模块对单片机进行操作从而实现对彩灯的控制。 通信模块:它包括 PC 机对 89C52 的通信和 83C52 对 PC 机的通信,这种通信是通过 USB 口实现的。采用的 USB 控制芯片是 ISP1581。 彩灯控制模块:通过单片机对彩灯系统的各项参数进行设置。 显示模块:数码管显示。 4.2 USB 设备开发器件 ISP1581 使用说明 在开发一个 USB 外设的时候,在设备方必须有一个 USB 控制器,该控制器用来检测以及反应 USB 端口的事件,控制主机和外设之间的数据交换。目前,市场上的 USB 控制器种类繁多,规格不一,有些是专门为 USB 应用设计的,有些则是建立在现有芯片系列的基础之上,这两种都是将 CPU 内置在控制器内部,灵活性不强,开发工具相对也比较昂贵,所 25 以,现在许多芯片,使用 USB 控制器来处理 USB 通 信,其它的工作由外部控制器来完成,极大增强了开发和使用的灵活性, Phitips 半导体公司的 ISP1581 就属于这种控制器。它可以做多种外设的控制器,方便实现了 USB 总线与彩灯系统的桥功能。 4.2.1 ISP1581 概述 ISP1581 是一种价格低功能强的高速通用串行总线 USB 接口器件它完全符合 USB 2.0 规范并为基于微控制器或微处理器的系统提供了高速 USB 通信能力 ISP1581 与系统的微控制器 /微处理器的通信是通过一个高速的通用并行接口来实现的。 ISP1581 支持高速 USB 系统的自动 检测最初 USB 规范的返回工作模式允许器件在全速条件下正常工作 ISP1581 是一个通用的 USB 接口器件它符合现有的大多数器件的分类规格比如成像类海量存储器件通信器件打印设备以及人机接口设备。 内部通用 DMA 模块使得数据流很方便的集成另外多种结构的 DMA 模块实现了海量存储的应用。 这种实现 USB 接口的标准组件使得使用者可以在各种不同类型的微控制器中选择出一种最合适的微控制器通过使用已有的结构和减少固件上的投资缩短了开发时间减少了开发风险和费用从而用最快捷的方法实现了最经济的 USB 外设的解决方案。 ISP1581 可理想地用于许多外设例如打印机扫描仪 MO CD DVD 和 Zip/Jaz 驱动器数码相机 USB 和以太网的链接电缆和 DSL 调制解调器等等另外 ISP1581 所具有的低挂起功耗还可以满足 ACPITM,OnNOWTM 和 USB 电源管理的要求。 此外 ISP1581 内部还集成了许多特性包括 SoftConnectTM 低频晶体振荡器和集成的终止寄存器。所有这些特性都为系统大大节约了成本同时使强大的 USB 功能很容易地用于 PC 机外设。 4.2.2 ISP1581 特性 1. 直接与 ATA/ATAPI 外设相连 2. 完全符合通用串行总线 USB Rev 2.0 规范 3.符合大多数器件的分类规格 4.高性能的 USB 接口器件集成了串行接口引擎 SIE PIE FIFO 存储器数据收发器和 3.3V 的电压调整器 5. 支持高速 USB 的自检工作模式和最初 USB 规范的返回工作模式 6. 高速的 DMA 接口 12.8M 字 /秒 7. 完全自治的多结构 DMA 操作 8. 7 个 IN 端点 7 个 OUT 端点和 1 个固定的控制 IN/OUT 端点 9. 集成 8K 字节的多结构 FIFO 存储器 10. 端点的双缓冲 配置增加了数据吞吐量并轻松实现实时数据传输 11. 同大部分的微控制器 /微处理器有单独的总线接口 12.5M 位 /秒 12. 集成了 PLL 的 12MHZ 的晶体振荡器 ,有着良好的 EMI 特性 13.集成了 5V 到 3V 的内置电压调整器 14. 可通过软件控制与 USB 总线的连接 SoftConnectTM 26 15. 符合 ACPITM,OnNOWTM 和 USB 电源管理的要求 16. 可通过内部上电复位和低电压复位电路复位也可通过软件复位 17. 工作在扩展 USB 总线电压范围 4.0 5.5 内 I/O 端口最大可承 受 5V 的电压 18. 操作温度 -40+85 19.LQFP64 的封装形式 4.2.3 ISP1581 内部结构方框图 27 DREQ, DACK, DIOR和 DIOW的方向有 MASTER位( DMA硬件寄存器)和 ATA_MODE位( DMA配置寄存器)控制。 (中文简版) 28 4.2.4 ISP1581 封装及引脚说明 29 符号 管脚 类型 描述 DGND 1 数字的 VCC(5.0)3 2 供电电压( 3.3V 或 5V)。对于 5.0V 的操作,只需使用这个引脚。可参考 10 号引脚 AGND 3 模拟地 VCCA(3.3)3 4 内部电压调整器输出的供电电压 (.3V 0.3V);给内部模拟电 路供电;与去耦电容和 D+线上的 1.5K 上拉电阻相连 注 : 不能给外部器件供电。参考 10 号引脚功能 D- 5 A USB D-连接(模拟) D+ 6 A USB D+连接(模拟) RPU 7 A USB D+线的外部上拉电阻连接端,通过一个 1.5KB的电阻与VccA(3.3)相连 RREF 8 A 连接外部偏置电阻;通过一个 12.0K( 1% ) 的电阻同地端相连 MODE1 9 I ALE/A0 的功能选择(仅在断开总线工作模式下); 0 ALE 功能(地址锁存使能) 1 A0 功能(地址 /数据指示) 注 : 在通用处理器工作模式下与 VCC(5.0)相连 输入引脚; TTL 电平;最大可承受 5V 电压;内部含下拉电阻 10 I 复位输入端;为低电平时产生一个异步复位信号;与 VCC 相连可产生上电复位(部的 P

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论