六、USB速度
USB 规范已经为 USB 系统定义了以下四种速度模式: 低速(Low-Speed) 、全速(Full-Speed) 、高速(Hi-Speed)和超高速(SuperSpeed) 。 目前,赛普拉斯对 PsoC 器件系列仅支持全速模式,另外对于各种专用 USB 设备则支持低速、高速和超高速等模式。

新型主机一直能同低速设备进行通信。例如,高速主机能够与低速设备进行通信,但全速主机并不能同高速设备进行通信。

低速、全速和高速设备的速率分别为 1.5 Mb/s、 12 Mb/s 和 480 Mb/s。但是,这些指的是总线速率,并不是数据速率。 实际的数据速率受总线加载速度、传输类型、开销、操作系统等因素的影响。数据传输则受以下内容的限制:

  • 低速设备
    例如:键盘、鼠标和游戏等外设
    总线速率: 1.5 Mb/s
    最大的有效数据速率: 800 B/s
  • 全速设备
    例如:手机、音频设备和压缩视频
    总线速率: 12 Mb/s
    最大的有效数据速率: 1.2 MB/s
  • 高速设备
    例如:视频、影像和存储设备
    总线速率: 480 Mb/s
    最大的有效数据速率: 53 MB/s

建立好了 USB 设备和主机间的连接后,需要使用 D+或 D-信号线上的上拉电阻来检测设备的速度。 D+信号线上的 1.5kΩ 大小的上拉电阻表示所连接的是一个全速设备, D-线上 1.5 kΩ 大小的上拉电阻表示所连接的是一个低速设备,如图所示。

硬件笔记(5)—- USB学习笔记2-编程之家

USB 2.0 设备经常被误解为高速 USB 设备。所有高速设备都符合 USB 2.0 规范,这是因为 USB 2.0 规范支持高速模式。 USB 2.0 规范还包含了全速和低速设备。

这些速度也影响到有关位时间的 USB 信号(如数据包结束(EOP)信号)。低速和全速 USB 设备使用了频率为48 MHz 的时钟执行 SIE 操作,并执行使用其他时钟源的 USB 操作。该 48 MHz 时钟和总线速度决定了 USB 位时间:

  • 全速: 时钟频率/总线速度 = 48 MHz / 12 Mb/s 时, USB 位时间为 4 个时钟周期。
  • 全速: 时钟频率/总线速度 = 48 MHz / 1.5 Mb/s 时, USB 位时间为 4 个时钟周期。

七、USB电源

作为 USB 电源时,USB 设备可被划分为两种设备类型:总线供电和自供电。

硬件笔记(5)—- USB学习笔记2-编程之家

总线供电是 USB 设计的一个优势。由于设备通过总线供电,因此不需要使用笨重的内部或外部电源,它仍能够维持自身操作。总线可由主机或集线器供电。使用某个总线供电的设备时,用户将设备配置为某种状态前必须考虑其功耗。即设备枚举完成后,必须在第一次将设备连接到总线到主机将 SET_CONFIGURATION 命令传输给设备的这段时间内检查其功耗。设备被配置前不能消耗超过 100 mA 的电流(即 USB 规范中为低速、全速或高速设备定义为一个负载单位)。在配置过程中,设备要求一个预算功耗。总线供电的设备共有以下两种:高功耗和低功耗设备。低功耗设备最多消耗 100 mA 的电流,高功耗设备最多消耗 500 mA 的电流。消耗的电流超过 500 mA 的设备要自供电。

自供电设备通过使用外部电源(如直流电源适配器或电池)为自己供电。自供电设备在进行设计的过程中需要考虑到一些注意事项。USB 规范要求自供电设备一直监控自己的 VBUS线。VBUS不存在的时间内,设备必须断开提供给 D+/D-线上的上拉电阻的电源,从而防止向主机或集线器供电。 否则,会导致 USB 合规性测试发生失败。但是自供电集线器能够从总线获得最多 100 mA 的电流。

硬件笔记(5)—- USB学习笔记2-编程之家

设备还能结合两种电源模式,并成为一个总线供电和自供电的设备。常见的例子是设备使用电池。设备通常是自供电的;但使用 VBUS 给电池充电,并且在电池电量发生变化时给设备供电。在技术方面,该设备是一个自供电设备,如USB 描述符中显示,但该设备仍要求来自主机的预算电源。同自供电设备相似,这些混合设计中仍需要监控 VBUS 大小,并且仍会断开提供给 D+/D-线上的上拉电阻的电源。在本应用中,需要实现一部分电源管理系统类型,以监控电池的电压、充电状态,并控制电池电源和外部电源间的切换。

硬件笔记(5)—- USB学习笔记2-编程之家

此外,无论设备的供电方式如何,所有 USB 设备都必须考虑到它们的暂停电流。设备的暂停电流是指在主机处于挂起模式(又称待机模式)时由 VBUS 提供的电流。如果总线在 3 ms 时间内没有进行任意操作,设备会进入挂起模式。即使没有进行任意数据传输操作,主机仍会发出“帧开始”(SOF)令牌,以防止设备进入挂起模式。但低速设备却没有 SOF 数据包,因此这种设备是一个例外。总线上不进行低速数据的传输时,低速设备每经过 1 m 都会发送“数据包结束”(EOP)信号,将其作为“保持活动”信号。总线休闲时,设备必须进入挂起模式,并消耗不大于 2.5 mA 的电流。为满足该要求,设计师必须保证设备进入挂起状态前已经关闭了各个 LED 和其他电源库。一旦检测到总线上发生任何操作,USB 设备都会退出挂起状态。如果设备具有远程唤醒功能,它可以向主机发送恢复请求,然后等待主机确认该请求,而不是等待主机进行恢复。

设计师需要了解各种同 USB 电源相对应的 USB 状态。这些状态通常出现在 USB 文档中,并适用于 USB 设备的枚举操作。

  • 连接状态:当将某个设备插入到主机/集线器,但主机/集线器不给 VBUS线供电时,会出现这种状态。它通常在集线器检测到一个过流事件时出现。虽然仍连接着设备,但主机移除了供给它的电源。
  • 供电:某个设备被连接到 USB 上并得到供电,但仍未接收到一个复位请求。
  • 默认:某个设备被连接到 USB 上、得到供电,并且由主机进行了复位。这时,设备没有任何设备地址。设备会响应地址 0。
  • 地址:某个设备被连接到 USB、得到供电、被复位,并且有一个唯一的地址。但是设备仍未得到配置。
  • 配置:设备已经连接到 USB、得到供电、被复位、具有唯一的地址、得到配置,但尚未进入挂起状态。此时,总线供电设备能够消耗超过 100 mA 的电流。
  • 挂起:如上面所述,设备已经建立好了连接,并且得到配置,但在 3 ms 时间内不会进行任意总线操作。

USB 规范具有一个框图,描述了这些电源模式的相关性和切换性。

硬件笔记(5)—- USB学习笔记2-编程之家

对于低速、全速和高速 USB 设备,USB 的功耗会以 2 mA 的单位进行枚举。例如,需要消耗 100 mA 电流的全速设备在进行枚举时将发送数值 50。

开发 USB 设计时,请考虑您的设备消耗总线的电流。根集线器由主机 PC 的电源供电。如果主机被连接到交流电源上,则 USB 规范要求主机为集线器上的每一个端口提供 500 mA 的电流。这样能将总线供电设备上的电流消耗限制在500 mA。如果主机 PC 由电池供电,它可以为集线器上的每一端口提供 100 mA 或 500 mA 的电流。将设备插入到总线供电的集线器时,该设备必须是低功耗设备,并且消耗电流不能超过 100 mA。总线供电的集线器共有 500 mA 的电流可供给所有所连接的设备使用。

最后,我想推荐一下我的公众号,公号现在还没有内容,以后会慢慢的添加的,博客也会同步更新到公众号的。其实我是有私心的,就是想练一练写作能力,也希望关注我的读者也能和我一起成长。

硬件笔记(5)—- USB学习笔记2-编程之家