logo资料库

USB接口设计.pdf

第1页 / 共40页
第2页 / 共40页
第3页 / 共40页
第4页 / 共40页
第5页 / 共40页
第6页 / 共40页
第7页 / 共40页
第8页 / 共40页
资料共40页,剩余部分请下载后查看
2.1总线拓扑结构
2.2USB的物理层
2.3USB设备
2.3.1Hub
2.3.2即插即用
2.3.3设备的电源
2.3.4设备的挂起
2.4USB主机
2.5USB数据流
2.6USB总线协议
2.6.1域的类型:
2.6.2包的类型:
2.6.3总线操作的格式
2.6.4数据触发同步与重试
2.6.5低速操作:
2.6.6错误检验与恢复:
2.7结束语
清华大学毕业设计论文 第一章 前 言 当今的计算机外部设备 都在追求高速度和高通用性 为了满足用户的需求 以 Intel 为首的七家公司于 1994 年推出了 USB Universal Serial Bus 通用串行总 线 总线协议 专用于低 中速的计算机外设 目前 USB 端口已成为了微机主 板的标准端口 而在不久的将来 所有的微机外设 包括键盘 鼠标 显示器 打印机 数字相机 扫描仪和游戏柄等等 都将通过 USB 与主机相连 这种连接 较以往普通并口和串口的连接而言 主要的优点是速度高 功耗低 支持即插即 用 Plug & Play 和使用维护方便 作为一个硬件厂商或是开发者 最关心的便是如何去开发 USB 外设 一般的 USB 设备都使用一片微控制器作为其核心部件 通过微控制器强大的控制和运算 功能 开发者可以很容易地实现 USB 设备的智能化 MOTOROLA 公司是目前世界上最大的微控制器供应商 其 8 位微控制器的全 球市场份额达到了 30%左右 MOTOROLA 公司将其 8 位微控制器归类为用户定 制的集成电路 CSIC 为客户提供了 MPU RAM EPROM SPI SCI 定时器 和 USB 等多种模块 用量大的客户可以根据自己的需要选择不同的模块来构筑自 己的微控制器 MOTOROLA 公司从 1996 年开始 陆续推出了一系列含有 USB 模 块的 8 位微控制器 用于支持 USB 总线协议的设备 如最早的用于显示器的 68HC05BD9A 用 于 鼠 标 的 68HC05JB2 以 及 用 于 键 盘 的 68HC08KL8 和 68HC08KH12 等等 通过微控制器内含的 USB 模块 用户可以很方便地实现 USB 总线上的数据通讯 68HC05JB4 最初是用于开发 USB 游戏柄的 后来也常被用于 其他一些 USB 外设的开发 国外在近两年已出现了不少的 USB 外设 但目前在国内市场上我们仅发现了 台湾生产的摄像头等少数几类高速 USB 外设 低速 USB 设备还是一个空白 同时 国外开发的 USB 设备多集中在鼠标 键盘等少数几类设备上 诸如 USB 手写板等 设备就是在国外也很少见 国内近年来计算机非键盘输入技术发展很快 在汉字 英文和数字的手写识别方面已有相当基础 本项目之目的 就是吸收 USB 总线和 MOTOROLA 微控制器的先进技术 与中科院自动化所汉王公司的手写识别技术相 结合 在汉王笔的基础上 设计生产出自己的新一代 USB 手写输入系统 此 USB 手写系统 采用汉王公司的传感器获得笔画信息 传给 68HC05JB4 经过整理后通过 USB 总线发送到 PC 再由自行编写的驱动程序接收 最终转给汉 王公司的文字识别软件识别 第 1 页
清华大学毕业设计论文 第二章 USB 总线协议 USB Universal Serial Bus 总线协议是以Intel为主 并有Compaq Microsoft IBM DEC Northern Telecom以及日本NEC等共七家公司共同制定的串行接口标 准 1994年11月制定了第一个草案 1996年2月公布了USB规范版本1.0 USB可把 多达127个外设同时联到你的系统上 所有的外设通过协议来共享USB的带宽 其 12Mbps的带宽对于键盘 鼠标等低中速外设是完全足够的 注 在1999年2月发 布的USB规范版本2.0草案中 已建议将12Mbps的带宽提升到120-240Mbps USB 允许外设在主机和其它外设工作时进行连接 配置 使用及移除 即所谓的即插 即用 Plug & Play 同时USB总线的应用可以清除PC上过多的I/O端口 而以一个 串行通道取代 使PC与外设之间的连接更容易 以下简单介绍USB总线的结构 原理 以使读者对USB有大致的了解 如果需 要了解其协议细节 请查阅USB总线规范 这可以从www.usb.org下载 2.1 总线拓扑结构 USB总线的物理连接是一种分层的菊花链结构 集线器(hub)是每个星形结构 的中心 PC机就是主机和根Hub 用户可以将外设或附加的Hub与之相连 这些附 加的Hub可以连接另外的外设以及下层Hub USB支持最多5个Hub层以及127个外 设 图2.1描述了USB的物理拓扑结构 从中可以看出每一段的连接都是点对点的 Host RootHub Hub 1 Host (Root Tier) Tier 1 Tier 2 Hub 2 Node Node Hub 3 Hub 4 Node Node Node Node Node 图2.1 USB总线拓扑 Tier 3 Tier 4 第 2 页
清华大学毕业设计论文 2.2 USB的物理层 USB的物理接口包括电气特性和机械特性 USB通过一个四线电缆来传输信号与电源 如图2.2所示 VBus D+ D- GND 5 meters max ... ... VBus D+ D- GND 图2.2 USB电缆定义 其中D+和D-是一对差模的信号线 而VBus和GND则提供了 5V的电源 它可 以给一些设备(包括Hub)供电 当然要有一定的条件限制 USB提供了两种数据传输率 一种是12Mb的高速(full speed)模式 另一种是 1.5Mb的低速模式 这两种模式可以同时存在于一个USB系统中 而引入低速模式 主要是为了降低要求不高的设备的成本 比如鼠标 键盘等等 USB信号线在高速模式下必须使用带有屏蔽的双绞线 而且最长不能超过5m 而在低速模式时中可以使用不带屏蔽或不是双绞的线 但最长不能超过3m 这主 要是由于信号衰减的限制 为了提供信号电压保证 以及与终端负载相匹配 在 电缆的每一端都使用了不平衡的终端负载 这种终端负载也保证了能够检测外设 与端口的连接或分离 并且可以区分高速与低速设备 所有的设备都有上行的接口 上行和下行的接头是不能互换的 这保证了不会 有非法的连接出现 插头与插座有两个系列 分别为A和B 系列A用于基本固定 的外围设备 而系列B用于经常拔插的设备 这两个系列是不能互换的 2.3 USB 设备 USB设备包括Hub和功能设备 而功能设备又可以细分为定位设备 字符设备 等等 为了进一步叙述 我们给出端点(endpoint)和管道(pipe)的概念 第 3 页
清华大学毕业设计论文 端点 每一个USB设备在主机看来就是一个端点的集合 主机只能通过端点 与设备进行通讯 以使用设备的功能 每个端点实际上就是一个一定大小的数据 缓冲区 这些端点在设备出厂时就已定义好 在USB系统中 每一个端点都有唯 一的地址 这是由设备地址和端点号给出的 每个端点都有一定的特性 其中包 括 传输方式 总线访问频率 带宽 端点号 数据包的最大容量等等 端点必 须在设备配置后才能生效(端点0除外) 端点0通常为控制端点 用于设备初始化参数等 端点1 2等一般用作数据端 点 存放主机与设备间往来的数据 管道 一个USB管道是驱动程序的一个数据缓冲区与一个外设端点的连接 它代表了一种在两者之间移动数据的能力 一旦设备被配置 管道就存在了 管 道有两种类型 数据流管道 其中的数据没有USB定义的结构 与消息管道 其 中的数据必须有USB定义的结构 管道只是一个逻辑上的概念 所有的设备必须支持端点0以作为设备的控制管道 通过控制管道可以获取完 全描述USB设备的信息 包括 设备类型 电源管理 配置 端点描述等等 只 要设备连接到USB上并且上电 端点0就可以被访问 与之对应的控制管道就存在 了 一个USB设备可以分为三个层 图2.3 最底层是总线接口 用来发送与接收 包 中间层处理总线接口与不同的端点之间的数据流通 一个端点是数据最终的 使用者或提供者 它可以看作数据的源或接收端 最上层就是USB设备所提供的 功能 比如鼠标或键盘等 Physical Device Function USB Logical Device USB Bus Interface Actual communications flow 实际数据流 Logical communications flow 逻辑数据流 图2.3 USB设备结构层次 第 4 页
清华大学毕业设计论文 2.3.1 Hub Hub在USB结构中是一个关键 它提供了附加的USB节点 这些节点被称为端 口 Hub可以检测出每一个下行端口的状态 并且可以给下端的设备提供电源 图 2.4是一个典型的Hub Port #1 Port #2 Port #3 Upstream Port HUB Port #4 Port #7 Port #6 Port #5 图2.4 典型的USB集线器 Hub 2.3.2 即插即用 USB设备可以即插即用 但在可以使用之前 必须对设备进行配置 一旦设备 连接到某一个USB的节点上 USB就会产生一系列的操作 来完成对设备的配置 这种操作被称为总线枚举过程 1.设备所连接的Hub检测出端口上有设备连接 通过状态变化管道向主机报告 2.主机通过询问Hub以获取确切的信息 3.主机这时知道设备连接到哪个端口上 于是向这个端口发出复位命令 4.Hub发出的复位信号结束后 端口被打开 Hub向设备提供100mA的电源 这时设备上电 所有的寄存器复位 并且以缺省地址0以及端点0响应命令 5.主机通过缺省地址与端点0进行通讯 赋予设备一个独一的地址 并且读取 设备的配置信息 6.最后主机对设备进行配置,该设备就可以使用了 当该设备被移走时 Hub依然要报告主机 并且关闭端口 一旦主机接到设备 移走的报告 就会改写当前结构信息 第 5 页
清华大学毕业设计论文 2.3.3 设备的电源 USB设备的电源可以由USB总线供给 也可以自备电源 一个USB设备可以具 有这两种供电方式 但同一时刻只能由一种方式供电 这两种供电方式是可以切 换的 2.3.4 设备的挂起 为了节电 当设备在指定的时间内没有总线传输 USB设备自动进入挂起状态 如果设备所接的Hub的端口被禁止了 设备也将进入挂起状态(称之为选择挂起) 当然主机也可以进入挂起状态 USB设备当总线活动时 就会离开挂起状态 一个设备也可以通过电信号来远 程唤醒进入挂起状态的主机 这个能力是可选的 如果一个设备具有这个能力 主机有能力禁止或允许使用这种能力 2.4 USB主机 USB主机在USB系统中处于中心地位 并且对USB及其连接的设备有着特殊的 责任 主机控制着所有对USB的访问 一个外设只有主机允许才有权力访问总线 主机同时也监测着USB的结构 USB主机包括三层 如图2.5 设备驱动程序 USB系统软件 USB主控制器 (主机的总线接口) 另外 还有两个软件接口 USB驱动 USBD 接口 主机控 制驱动(HCD)接口 Host Client SW USB System SW USB Host Controller Actual communications flow 实际数据流 Logical communications flow 图2.5 USB主机结构层次 逻辑数据流 第 6 页
清华大学毕业设计论文 2.5 USB 数据流 图2.6描述了USB数据传输的过程 Host Interconnect Physical Device Client SW manages an interface Buffers No USB Format USB System SW manages devices Interface x Function a collection of interfaces Interface Specific No USB Format Endpoint Zero USB Logical Device a collection of endpoints Pipe Bundle to an interface Default Pipe to Endpoint Zero Transfers USB Framed Data USB Host USB Bus Interface Host Controller USB Framed Data SIE Transactions USB Wire Pipe, represents connection abstraction between two horizontal entities Data transport mechanism( USB-relevant format of transported data Mechanical, Electrical, Protocol USB Framed Data Data Per Endpoint USB Bus Interface SIE USB Device 图2.6 USB数据流 从逻辑上讲 USB数据的传输是通过管道进行的 USB系统软件通过缺省管道 (与端点0相对应)管理设备 设备驱动程序通过其它的管道来管理设备的功能接口 实际的数据传输过程是这样的 设备驱动程序通过对USBD接口(USB driver interface)的调用发出输入输出请求(IRP I/O Request Packet) USB驱动程序接到请 求后 调用HCD接口(host controller driver interface) 将IRP转化为USB的传输 (transfer) 一个IRP可以包含一个或多个USB传输; 然后HCD将USB传输分解为总 线操作(transaction) 由主控制器以包(packet)的形式发出 需要注意的是 所有的 数据传输都是由主机开始的 任何外设都无权开始一个传输 第 7 页
清华大学毕业设计论文 IRP是由操作系统定义的 而USB传输与总线操作是USB规范定义的 为了进 一步说明USB传输 我们引出帧 frame 的概念 帧 USB总线将1ms定义为一帧 每帧以一个SOF包为起始 在这1ms里USB 进行一系列的总线操作 引入帧的概念主要是为了支持与时间有关的总线操作 为了满足不同外设和用户的要求 USB 提供了四种传输方式 控制传输 同 步传输 中断传输 批传输 它们在数据格式 传输方向 数据包容量限制 总 线访问限制等方面有着各自不同的特征: 控制传输(Control Transfer 1 2 通常用于配置/命令/状态等情形 其中的设置操作 setup 和状态操作 status 的数据包具有 USB 定义的结构 因此控制传输只能通过消息管道进行 3 4 支持双向传输 对于高速设备 允许数据包最大容量为 8 16 32 或 64 字节 对 于低速设备只有 8 字节一种选择 5 端点不能指定总线访问的频率和占用总线的时间 USB 系统软件 会做出限制 6 具有数据传输保证 在必要时可以重试 同步传输(Isochronous Transfer) 1 是一种周期的 连续的传输方式 通常用于与时间有密切关系的 信息的传输 数据没有 USB 定义的结构 数据流管道 2 3 单向传输 如果一个外设需要双向传输 则必须使用另一个端点 只能用于高速设备 数据包的最大容量可以从 0 到 1023 个字节 4 5 具有带宽保证 并且保持数据传输的速率恒定 每个同步管道每 帧传输一个数据包 6 7 没有数据重发机制 要求具有一定的容错性 与中断方式一起 占用总线的时间不得超过一帧的 90% 中断传输(Interrupt Transfer) 1 用于非周期的 自然发生的 数据量很小的信息的传输 如键盘 鼠标等 2 数据没有 USB 定义的结构 数据流管道 3 只有输入这一种传输方式 即外设到主机 4 对于高速设备 允许数据包最大容量为小于或等于 64 字节 对于 第 8 页
分享到:
收藏