看了一下《USB系统体系》,写个笔记。
1. USB 设计目标
1.1. 存在问题
早期的设备规范中,需要用到IRQ(中断)/DMA(直接存储器存取)/输入输出地址的有限资源,不支持热插/拔,和因接口设计的原因要开机箱才能装载设备和跳线配置(SISC外设解决了部分问题)
1.2. USB目标
- l 同一类型的连接器能接任何类型的设备
- l 可以将多个设备连接到同一个连接器
- l 能够缓解系统资源冲突
- l 热插拔支持
- l 自动检测并配置
- l 低成本
- l 提升性能
- l 支持连接新的外围设计
- l 支持传统的硬件和软件
- l 低耗电运行
2. 现状
2.1. 版本
USB 1.0, USB 1.1, USB 2.0
2.2. 设备类型
低速 (1.5Mb/s)、全速(12Mb/s),高速(480Mb/s )
3. 数据传送
3.1. 事务
USB 1.x 系统通过传输描述符生成USB事务。每个描述符定义一个USB事务,规定如何访问USB设备的步骤。
描述符包括:
- l USB设备地址
- l 执行的事务类型
- l 传输大小
- l 处理速度
- l 数据缓冲区地址
3.2. 帧
USB1.1中,主机在1ms的时间段内(叫帧)执行一组描述符。
每一个1ms帧在12Mb/s速率下有12000人位,事务以这个速率执行。
USB 2.0中,高速事务在125微秒下执行,叫微帧。
3.3. 传输类型
- l 同步传输
- l 批量传输
- l 中断传输
- l 控制传输
4. 电缆与连接器
连接器
A系列--连接USB端口和外设电缆
B系列--连接可分离外设电缆和USB外设(小波型系列 Mini-B)
每种连接器有四个触点:外面一组加电,内面一组传送差动数据。
电源触点比数据触点长,保证在数据交换前USB设备获得电流(电源引脚7.41毫米,数据引脚6.41毫米)。
连接器引脚设计
引脚号 | 信号名称 | 电缆导线颜色 |
1 | 电源 | 红 |
2 | 反相数据 | 白 |
3 | 正向数据 | 绿 |
4 | 接地 | 黑 |
5. 配电
USB端口开始时只提供100ma电流,配置后最大500ma。
6. 低速/全速设备
6.1. 差动信号
USB传输数据包使用差动信号来减少不同信号源的干扰。
6.2. 双向不归零编码
遇到0转换,遇到1保持。连续6个1时进行位填充,插入0;接收器收到6个1时识别一个自动跳转,抛弃这个0位。
7. 包和事务
事务一般包括3个包:令牌包、数据包、握手应答包。
令牌包
定义目标设备、终端点数目、数据传输方向。
4种:
- l SOF --帧起始符,指示下一帧的起始
- l IN --从目标设备传送数据到系统
- l OUT--从系统传送数据到目标设备
- l SETUP--控制传输的开始
数据包
携带和传输类型有关的有效载荷大小的数据包。同步传输时最大1023字节,其他类型时最大64字节有效载荷。
DATA0, DATA1两种,交替使用。
握手应答包
证实数据成功传输。
- l ACK--确认包
- l NAK--否定确认包,暂时不能接收数据
- l STALL--目标设备报告不能完成传输
8. 错误恢复
包错误
总线超时
错误的包结束符
数据切换错误
设备串扰
活动损耗(LOA)
串扰和LOA的检测和恢复
传输(不保证交付)
中断传输的错误恢复
批量传输的错误恢复
控制传输的错误恢复
9. 节电模式
3毫秒空闲挂起;消耗不超过500微安;
可以全局挂起、选择性挂起。
10. 高速设备
新的控制器。
理论480M bit/s 传输速度。
高速设备可连接到1.x的集线器端口,并以全速访问。
11. 传输、事务
周期性事务在125微秒完成。
新增PING事务。
12. 错误检测
高速环境中的错误检测和恢复:
- l 和低速、全速环境相同的包错误检测。
- l 事务的超时同样包括环路延时,延时时间由高速传输位时间计算。
- l EOF1 和 EOF2 串扰设备检测和1.x相同原则,但是EOF抽样点参考高速位时间。
- l 包检测和报告由于要支持分解传输而进行必要调整。
13. 挂起和恢复
高速设备使用全速机制进行挂起和恢复。为了使用全速恢复信号,高速设备必须在进入挂起状态时转换成全速操作,并且在回到高速操作时自动恢复高速信号。
14. 高速集线器
在高速模式下,集线器必须支持低速、全速、高速设备。
高速集线器连接到全速端口时,必须像1.x工作。
主机软件发送分解事务到连接在高速集线器端口的低速、全速设备。分解事务只用来在主机控制器和高速集线器之间通信。分解事务的实际接收者是事务翻译器,由它来将高速分解事务为设备的低速或全速事务。
分解事务执行有:开始分解和完成分解。
高速集线器连接到高速端口,并且有1个或以上高速设备连接时,它直接在两个方向上执行转发功能。和1.x有以下差别:
- l 检测到高速包前,2.0集线器会进行静噪。这样要求一定时间来启用接收器,会从开始包中丢失一些位。
- l 当2.0集线器收到数据包,它向下一个设备发送数据的时候要重新锁定时钟。
- l 重新锁定数据要求缓存一些数据包。
15. USB2.0设备配置
USB描述符
- l 设备描述符
- l 配置描述符
- l 接口描述符
- l 端点描述符
- l 字符串描述符
- l 特殊类描述符