一、USB应用范围
二、USB设备按供电类别分类
三、挂起模式
当USB总线无活动超过3ms时,USB设备就可以进入挂起模式。
高功耗设备挂起模式下耗电不能超过2.5mA。
低功耗设备挂机模式下耗电不能超过500uA。
四、USB连接器
五、数据格式
在USB总线上传输的叫做Transfer,一个Transfer由多个Transaction组成,一个Transaction由多个Packet组成。
Packet格式
- SOP:包的起始
- SYNC:包的同步
- Packet Content:包内容
- EOP:包的结束
5.1 Packet Content的组成
PID:共8位,低四位表示PID,高四位是对低四位取的补码,PID的类型如下图:
Data类型的 PID的Toggle用于数据的同步和重发。正确的数据传输流程:
数据被破坏或者没有正确接收的传输流程:
ACK的传输被破坏:
地址:分为两类,设备地址和端点地址,对于低速设备最多支持3个端点,对于全速和高速设备最多支持16个IN和OUT端点。
帧号:共11位,主机每发出一个帧,帧号都会自加1,当帧号达到7FFH时,将归零重新开始计数,仅在每个SOF帧的帧首传输帧号。
数据:根据传输类型的不同,数据域的数据长度从0到1024字节不等。
CRC:分为两类,Token CRC和Data CRC。
- Token CRC:计算IN,OUT和SETUP Token地址域的CRC,计算SOF Token的帧号域的CRC。
- Data CRC:计算所有数据域的CRC。
5.2 Packet的类型
Token类的Packet:
Start of Frame类的Packet:
SOF包,帧首包,带有当前帧的帧号
Data类的Packet:
Handshake类的Packet:
六、传输类型
6.1 控制传输
控制传输由Setup阶段、Data阶段和Status阶段三个阶段组成,每个阶段都由3个Packet组成一个单独的Transaction。
控制传输的特性和方向:
控制传输最大有效的数据长度:
- 低速设备:8字节
- 全速设备:8、16、32、64字节
- 高速设备:64字节
带宽:
对于低速和全速设备,10%的帧带宽将保留给控制传输,对于高速设备,20%的微帧带宽将保留给控制传输。
- 低速设备:在每个帧内只能有少于4个的任意数据长度的控制传输
- 全速设备:在每个帧内能有最多32个的1字节长度的控制传输,和最多13个64字节长度的控制传输
- 高速设备:在每个微帧内能有最多43个1字节长度的控制传输,和最多31个64字节长度的控制传输
6.2 中断传输
中断传输的特性和方向:
中断传输最大的有效数据长度:
- 低速设备:8字节
- 全速设备:64字节
- 高速设备:1024字节
带宽:
对于低速和全速设备,有90%的帧带宽是保留给中断传输和同步传输的,对于高速设备,有80%的微帧带宽是保留给中断传输和同步传输的。
- 低速设备:每个帧内可以有最多8个1字节长度的中断传输,或者有最多6个8字节长度的中断传输
- 全速设备:每个帧内可以有最多107个1字节长度的中断传输,或者有最多19个64字节长度的中断传输
- 高速设备:每个微帧内可以有最多199个1字节长度的中断传输,或者有最多63个字节长度的中断传输
6.3 同步传输
同步传输没有握手包(Handshake)不支持出错重传。
同步传输的特性:
同步传输用于传输那些需要保证带宽,并且不能忍受延迟的信息。整个带宽都将用于保证同步传输的数据完整,并且不支持出错重传。
方向:
同步传输总是单向的,可以使用单向的同步端点来实现某个方向上的同步传输。
同步传输的最大有效数据长度:
- 不支持低速设备
- 全速设备:1023字节
- 高速设备:1024字节
带宽:
对于全速设备,有90%的帧带宽是保留给中断传输和同步传输的,对于高速设备,有80%的微帧带宽是保留给中断传输和同步传输的。
- 全速设备:在每个帧内,可以有最多150个1字节长度的同步传输,或者有最多1个1023字节长度的同步传输。
- 高速设备:在每个微帧内,可以有最多192个1字节长度的同步传输,或者有最多7个1024字节长度的同步传输。
6.4 大容量数据传输
大容量数据传输的特性:
大容量数据传输适用于那些需要大数据量传输,但是对实时性,对延迟性和带宽没有严格要求的应用。大容量传输可以占用任意可用的数据带宽。
方向:
大容量传输是单向的,可以用单向的大容量传输端点来实现某个方向的大容量传输。
大容量数据传输最大的有效数据长度:
- 低速设备:不支持
- 全速设备:8、16、32、64字节
- 高速设备:512字节
带宽:
没有专门的带宽会为大容量传输保留,只要当前帧有空间米有被其他传输占用,就可以被大容量传输占用。
- 全速设备:在每个帧内,可以有最多107个1字节长度的大容量传输或最多19个64字节长度的大容量数据传输。
- 高速设备:在每个微帧内,可以有最多133个1字节长度的大容量传输,或最多13个512字节长度的大容量数据传输。
七、帧格式
对于全速设备,帧间隔时间为1ms,也就是每隔1ms就会有一个SOF Packet传输;对于高速设备,帧间隔时间为125us,也就是每隔125us就会有一个SOF Packet传输。
八、设备的状态
九、USB设备的插入检测
主机或HUB将通过上拉电阻所处位置(D+线 or D-线)来判断插入的USB设备是全速设备还是低速设备。
十、USB设备枚举
当一个USB设备插入主机后,会有以下活动:
10.1 USB设备描述符
10.2 USB配置描述符
配置描述符的内容如下:
其中的配置描述符具体如下:
当配置所支持的接口数目超过1时,表明该设备为复合设备,用于描述多于一项的功能。
此配置中的端点数目1表示当前设备除了需要端点0的两个方向外还需要1个端点来实现当前接口。
10.3 USB字符描述符
十一、USB模块和函数库
11.1 USB模块特性
11.2 USB模块中断源
十二、实现一个USB设备的步骤
12.1 初始化
端点初始化
端点使能
12.2 处理中断
十三、总结