USB --SETUP --STATUS阶段
每个 USB 控制传输包含三个阶段:
阶段 | 说明 |
---|---|
1. SETUP | 发送请求(如 SET_ADDRESS、SET_CONFIGURATION) |
2. DATA | 可选,发送或接收数据 |
3. STATUS | 确认完成,通常是一个空包 |
1. 主机 → 设备: SETUP (SET_ADDRESS, wValue=0x13) → 告诉设备:“你的新地址是 0x13”
2. 主机 → 设备: OUT Token (Addr=0x13, Endp=0x00) → 这是 STATUS 阶段的开始
3. 设备 → 主机: DATA1 (空数据,CRC=0x0000) → 表示“我已收到并处理了请求”
4. 主机 → 设备: ACK (隐含,不显示) → 确认收到 STATUS 包
类型 | 是否有 DATA 阶段 | STATUS 阶段 |
---|---|---|
GET_DESCRIPTOR | ✅ 有 DATA(读取) | ✅ 有 STATUS(IN) |
SET_ADDRESS | ❌ 无 DATA | ✅ 有 STATUS(OUT + DATA1) |
SET_CONFIGURATION | ❌ 无 DATA | ✅ 有 STATUS(OUT + DATA1) |
SET_INTERFACE | ❌ 无 DATA | ✅ 有 STATUS(OUT + DATA1) |