文章目录
- 一、USB中的四种事务
- 1. **控制事务(Control Transaction)**
- 2. **批量事务(Bulk Transaction)**
- 3. **中断事务(Interrupt Transaction)**
- 4. **等时事务(Isochronous Transaction,实时事务)**
- 总结
- 二、传输和事务的区别
一、USB中的四种事务
1. 控制事务(Control Transaction)
-
用于设备配置和控制指令传输。
-
控制事务主要用于设备的初始化和配置,传输设备描述符或特定指令(如设备的查询、配置等)。它是所有设备都必须支持的事务类型,通常由控制端点(endpoint 0)执行。
事务流程:
- 令牌阶段(Token Stage):主机发送一个
SETUP
包,告知设备要进行控制传输。 - 数据阶段(Data Stage):主机或设备发送一个数据包,数据可能来自主机也可能来自设备。
- 状态阶段(Status Stage):接收方确认收到数据,发送一个
ACK
包。
关键特点:
- 数据可以从主机到设备(OUT)或从设备到主机(IN)。
- 可靠性高,数据必须确认接收。
- 应用场景:设备初始化、请求设备描述符、配置接口等。
- 令牌阶段(Token Stage):主机发送一个
setup事务:
批量传输:
状态阶段的返回:
2. 批量事务(Bulk Transaction)
-
用于大量数据传输,但没有时间敏感要求。
-
批量事务用于大规模、无时间限制的可靠数据传输。典型场景是打印机、存储设备等,这类事务不会固定分配带宽,而是利用总线空闲时传输数据。
事务流程:
- 令牌阶段:主机发送
OUT
或IN
包,指示传输方向。 - 数据阶段:主机或设备传输数据。
- 握手阶段:接收方发送
ACK
确认数据成功接收,或NAK
表示暂时无法接收。
关键特点:
- 数据量大,传输可靠(通过
ACK
确认)。 - 没有时间要求,传输速度取决于总线的空闲时间。
- 应用场景:U盘、打印机、扫描仪等设备。
- 令牌阶段:主机发送
批量事务传输图:
发出多个批量读和批量写事务:
3. 中断事务(Interrupt Transaction)
-
用于小数据量的定时传输,例如键盘、鼠标等设备的输入数据。
-
中断事务主要应用于需要定期轮询的小数据传输,主机以固定的时间间隔轮询设备来检查是否有数据需要传输。
事务流程:
- 令牌阶段:主机发送
IN
或OUT
包,询问设备是否有数据要发送。 - 数据阶段:设备返回数据(如鼠标位置或键盘按键状态)。
- 握手阶段:主机接收数据后发送
ACK
确认。
关键特点:
- 定时传输,适用于对时间敏感的小数据量传输。
- 数据传输可靠,设备会反复被轮询。
- 应用场景:键盘、鼠标、游戏手柄等。
- 令牌阶段:主机发送
中断事务传输图:
4. 等时事务(Isochronous Transaction,实时事务)
-
用于时间敏感但不要求高数据完整性的传输,如音频、视频数据。
-
等时事务适用于需要连续传输的实时数据,例如实时音频或视频流。与其他事务类型不同,它不提供错误重传或确认机制,专注于保证数据的及时性。
事务流程:
- 令牌阶段:主机发送
IN
或OUT
包,指示传输开始。 - 数据阶段:设备发送或接收数据。
- 没有握手阶段:传输过程中不提供
ACK
确认或NAK
重传,设备只负责按时发送或接收数据。
关键特点:
- 无重传机制,数据及时性优先于完整性。
- 固定带宽,确保连续流数据不会被打断。
- 应用场景:音频设备(麦克风、耳机)、视频摄像头等。
- 令牌阶段:主机发送
实时事务状态图:
总结
- 控制事务:用于设备配置和控制指令传输,具备可靠性。
- 批量事务:用于大量数据的可靠传输,适合无时间敏感的设备。
- 中断事务:用于小数据量的定时传输,适用于键盘、鼠标等设备。
- 等时事务:用于实时音视频传输,优先保证数据传输的时效性而非完整性。
这些事务类型构成了USB通信中的不同传输模式,满足了不同设备和应用的需求。
二、传输和事务的区别
1.层次不同:传输是高层次的概念,表示一个完整的数据交换过程;事务是低层次的概念,表示在传输过程中的一次具体数据交互。
2.复杂性不同:一个传输可以包含多个事务,而每个事务本身由数据包、握手包等组成。
3.应用场景不同:传输表示的是整体的通信类型(如控制传输、批量传输等),而事务指的是实际进行数据传输的操作单位(如 IN、OUT、SETUP 事务)。
4.时间跨度不同:传输通常是跨多个事务的长期过程,而事务是短时间内的单个数据交换。