六、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Ω 大小的上拉电阻表示所连接的是一个低速设备,如图所示。

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 设备可被划分为两种设备类型:总线供电和自供电。

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

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

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

此外,无论设备的供电方式如何,所有 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 规范具有一个框图,描述了这些电源模式的相关性和切换性。

对于低速、全速和高速 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相关推荐

  1. USB学习笔记(5)STM32 USB库移植步骤

    USB学习笔记(5)STM32 USB库移植步骤 本文是将官网的USB驱动库文件移植到自己的工程里面,实现USB功能的具体移植步骤说明,实现Custom_HID功能. 1.先准备一个工程模板 获取工程 ...

  2. USB学习笔记(3)HID应用分析

    USB学习笔记(3)HID应用分析 本文根据前面对USB系统的了解,和USB协议的学习,列出鼠标,键盘,多媒体控制器,自定义HID设备等HID设备的各种描述符. 前景提要:每个设备有且仅有一个设备描述 ...

  3. USB学习笔记(4)STM32关于USB库的解读

    USB学习笔记(4)STM32关于USB库的解读 为了方便在STM32上实现USB功能,本文对USB库的文件进行解读. USB-FS_Device peripheral interface(外围接口) ...

  4. USB学习笔记(2)USB协议

    USB学习笔记(2)USB协议 本文对前面提到的USB枚举过程中的标准请求以及各种描述符做出大致解释,方便后面的实操. 1. USB标准请求 USB协议定义了一个8字节的标准设备请求,主要用在设备的枚 ...

  5. 黄海广博士的机器学习个人笔记及深度学习笔记

    想要下载黄海广博士的机器学习个人笔记及深度学习笔记的请复制下面链接 https://download.csdn.net/download/wgllovemother/10447758 备注:有想下载  ...

  6. Tsai笔记:GPOPS学习笔记(1)—— 高斯伪谱法的最基本优化方程求解思路(例子介绍)

    Tsai笔记:GPOPS学习笔记(1)-- 高斯伪谱法的最基本优化方程求解思路(例子介绍) Tsai三步.(第一步,基本说明.第二步,结果图显示.第三步,代码展示.) 第一步,基本说明. A.问题说明 ...

  7. python笔记基础-Python学习笔记(基础)

    python基础学习笔记.语法.函数等. 基础定义utf-8文件头#!/usr/bin/env python3 # -*- coding: utf-8 -*- 2.循环// name是值 names是 ...

  8. python基础笔记_python基础学习笔记(九)

    python异常 python用异常对象(exception object)来表示异常情况.遇到错误后,会引发异常.如果异常对象并未被处理或捕捉,程序就会用所谓的 回溯(Traceback, 一种错误 ...

  9. 视觉SLAM十四讲学习笔记---前三讲学习笔记总结之SLAM的作用、变换和位姿表示

    经过半年学习SLAM相关知识,对SLAM系统有了一些新的认识,故回看以前的学习记录,做总结和校正. 前三讲学习笔记如下: 视觉SLAM十四讲学习笔记-第一讲_goldqiu的博客-CSDN博客 视觉S ...

  10. 【笔记】C#学习笔记

    C#学习笔记 仅记录与C语言,C++,JAVA不同的地方 动态(Dynamic)类型 您可以存储任何类型的值在动态数据类型变量中.这些变量的类型检查是在运行时发生的. 声明动态类型的语法: dynam ...

最新文章

  1. Spring Cloud Alibaba基础教程:使用Nacos实现服务注册与发现
  2. (转)用ASP.NET向Javascript传递变量 方法1:
  3. nodejs登陆模拟
  4. 【ASP】简单Url编码和Url解码实例
  5. 《大数据》第1期“研究”——大数据管理系统评测基准的挑战与研究进展(下)...
  6. 个人学习机器学习笔记--
  7. android列表的默认值,ListPreference默认值没有显示
  8. git push 忽略.idea文件夹下的文件
  9. rabbitmq创建缓存连接工厂
  10. 侍魂胧月传说服务器维护,侍魂胧月传说4月17日更新维护公告一览
  11. 离线安装nvidia-docker2
  12. mysql 从库跳过1062_3分钟解决MySQL 1062 主从错误
  13. 2018 Arab Collegiate Programming Contest (ACPC 2018) L.Looking for Taste(按位或)
  14. [JSOI2009]有趣的游戏
  15. APK瘦身优化检测工具-Matrix ApkChecker 使用
  16. Ultraiso制作Centos7 优盘Udisk 启动镜像
  17. STL浅析 RB-tree(红黑树)
  18. webstorm最新激活方法。绝对有效
  19. 双11越来越“高大上”,你的工资还配得上它吗?
  20. 肇庆游记:四会品甜橘赏美玉

热门文章

  1. 甲天下山水桂林超级稻 国稻种芯·中国水稻节:广西再说丰年
  2. android广告拦截原理,android扫描带有广告应用原理
  3. 3M、百胜中国、首旅如家、长电科技、药明康德、汤臣倍健、特灵科技公布最新业绩 | 财报汇总...
  4. VC 多文档用户界面设计
  5. 收缩引擎CACHE结构——中科院张俊林
  6. android 源码下载备忘
  7. 倾斜数据之加载——SuperMap iDesktop
  8. Android自定义权限与使用
  9. 学习笔记:IDF 移动端UX设计 1.4 响应式设计vs.适应式设计
  10. vivo2020校招笔试题[编程题]报数(约瑟夫问题又称丢手绢问题)-java解决