USB涉及的知识很多,usb2.0协议规范就有650页,英文文档全部读下来也很头大。关于不同同业者应该选取自己领域进行详细阅读。关于USB2.0协议规范中具体包含如下:
综上我们可以看出:
对于USB外设开发驱动开发者,相关章节:
• 4 系统架构综述
• 5 USB数据流模型
• 9 USB设备框架工作
• 10 USB主机的硬件和软件
对于USB外设的电子设计研发人员,相关章节:
• 4 系统架构综述
• 5 USB数据流模型
• 6 机械层
• 7 电子层
本篇文章重点介绍USB2.0的一些电气规范。
USB2.0定义了三种速率:
- Low-Speed(1.5Mbps)
- Full-Speed(12Mbps)
- High-Speed(480Mbps)
USB使用差分线进行数据传输,D+/D-(3.3V逻辑电平)来表示:
定义如下:
差分信号1: D+ >
V
O
H
M
i
n
V_{OH_{Min}}
VOHMin(2.8V);D- <
V
O
L
M
a
x
V_{OL_{Max}}
VOLMax(0.3V)
差分信号0: D- >
V
O
H
M
i
n
V_{OH_{Min}}
VOHMin(2.8V);D+ <
V
O
L
M
a
x
V_{OL_{Max}}
VOLMax(0.3V)
差分信号状态并不直接代表数据状态0或1,指示代表逻辑电平有变化。
单端0状态(Single-Ended 0 ,SE0) 是D+/D-线上电平均为低逻辑电平。一般用于复位信号,复位条件:D+/D-信号均低电平且维持10ms。
单端1状态(Single-Ended 1 ,SE1) 是D+/D-线上电平均为高逻辑电平。SE1是一种无效的总线状态,一般情况下不会出现。
数据J状态和数据K状态
数据J状态和数据K状态是为了区分不同通讯速率下的数据状态,定义如下:
- 低速下:D+ 为“0”,D- 为“1”是为“J”状态,“K”状态相反;
- 全速下:D+ 为“1”,D-为“0”是为“J”状态,“K”状态相反;
- 高速同全速。
如何区分设备是低速设备还是全速设备:
设备通过上拉电阻在D+/D-线上决定是全速低速设备,如下示意:
USB主机端默都是15K下拉,当外设接口D+引脚有1.5K上拉电阻时导致D+总线电压为高电平,主机可以判断为此外设是全速设备。如果D-上是高电平,主机则判断该设备是低速设备。
空闲(Idle)状态:J状态-数据发送前后总线的状态
挂起(Suspend)状态:3ms以上的J状态
同步(Sync)状态: 3个KJ状态切换,后跟随2位时间的K状态,如下:
恢复(Resume)状态:20ms的K状态+低速EOP:
- 主机在挂起设备后可通过翻转数据线上的极性并保持20ms来唤醒设备,并以低速EOP信号结尾。
- 带远程唤醒功能的设备还可自己发起该唤醒信号;前提是设备已进入idle状态至少5ms,然后发出唤醒K信号,维持1ms到15ms并由主机在1ms内接管来继续驱动唤醒信号
起始(Start-Of-Package,SOP)状态:从空闲状态切换到K状态,所以的包都是从SOP开始的
结尾(End-Of-Package,EOP)状态:持续2位时间的SE0信号,后跟随1位时间的J状态
USB设备供电形式
USB设备有两种供电形式:
- 自供电设备:设备从外部电源获取工作电压
- 总线供电设备:设备从Vbus(5V)取电
对于总线供电设备,又分为两类:
- 低功耗总线供电设备:最大功耗不超过100mA
- 高功耗总线供电设备:枚举时最大功耗不超过100mA,枚举完成配置结束后功耗不超过500mA
设备在枚举过程中,通过设备的配置描述符向主机报告它的供电配置以及功耗要求。
在挂起模式下,从总线取电不可超过2.5mA/0.5mA(全速/低速设备)。