USB开发者培训(2)架构、系统、协议和供电

二、架构、系统、协议和供电

1.USB系统结构

 

2.USB拓扑结构

  • USB总线基于分层的星状拓扑结构
  • Hub为中心,连接周围设备
  • 总线上最多可连接127个设备
  • Hub串联数量最多5个
  • 线缆长度最长5米
 

3.USB拓扑结构示例

 

4.USB逻辑部件

 
 

5.USB设备供电方式

1)Two possible power configurations
  • Self-powered: power provided from external power-supply
  • Bus-powered: power provided from VBUS (5v)
2)对总线供电设备,才区分低功耗和高功耗USB设备之分
For bus-powered device, two options are possible:
  • Low-power devices :maximum power consumption is 100mA
  • High-power devices :maximum power consumption is 100mA during bus enumeration and 500mA after configuration
3)During device enumeration, the device indicates to host its power configuration (self-powered/bus-powered) and its power consumption in the device configuration descriptor (see slide after)
 

6.USB配置描述符(以Joystick为例)

Configuration Descriptor
0x09,
/* 描述符的长度: 9字节 */
USB_CONFIGURATION_DESCRIPTOR_TYPE,
/* 描述符的类型: 0x02 配置描述符(Configuration) */
JOYSTICK_SIZ_CONFIG_DESC, 0x00,
/* 完整的描述符包括接口描述符、端点描述符和类描述符的长度 */
0x01,
/* 配置所支持的接口数目: 1*/
0x01,
/* 用SetConofiguration()选择此配置,所指定的配置号: 1*/
0x00,
/* 用于描述此配置的字符描述符的索引号: 0 */
0xE0,
/* 供电配置: B7(1 保留), B6(自供电), B5(远程唤醒), B4-B0(0 保留) */
0x32,
/* 最大功耗,以2mA为单位计算: 0x32表示 50×2 =100mA */
 
 

7.USB挂起模式

  • USB device should enter in USB Suspend mode when the bus is idle for more than 3 ms 该【USB挂起模式】 是针对USB设备来说的
  • In suspend mode, when the device is bus powered , the current drawn from VBUS power shouldn’t exceed 2.5mA
  • USB host prevents device from entering in suspend mode by periodically issuing Start of Frame (SOF) or Keep Alive for LS
    • For High-speed, SOF is sent every micro-frame 125us +/- 65ns
    • For Full-speed, SOF is sent every frame 1ms +/- 500ns
    • For Low-speed, Keep Alive (End of Packet) is sent every 1ms in absence of low-speed data
  • Exist from Suspend mode can be USB设备要退出【挂起模式】可以由Host唤醒,或者自己唤醒
    • Initiated from host by issuing the resume signaling
    • Initiated from device by issuing the remote wakeup signaling
 

8.USB 连接器

1)标准接口/Mini接口
 
2)Micro接口
 

9.USB总线信号

USB使用的是差分传输模式,两个数据线D+和D-
  • 差分信号1: D+ > VOH (2.8V) and D- < VOL(0.3V)
  • 差分信号0: D- > VOH and D+ < VOL
  • 复位信号(Reset): D+ and D- < VOL for >= 10ms
  • IDLE状态: J 状态
  • 恢复信号(Resume): K 状态
  • SOP:从IDLE状态切换到K状态
  • EOP:持续2位时间的SE0信号,后跟随1位时间的J状态
  • SYNC: 3个重复的KJ状态切换,后跟随2位时间的K状态
 

10.USB设备的插入检测和速度检测

Full/high Speed: Pull-up on D+
 
Low Speed: Pull-up on D-
  • The 1.5K pull-up allows the host to detect the device attachment and its supported speed
  • High-speed device is detected first as full-speed device then high-speed capability is detected through bus handshakemechanism called “chirp sequence”
 
 

11.连接和断开连接

1)没有设备连上主机时
  • D+和D-数据线上的下拉电阻起作用,使得二者都在低电平;主机端看来就是个SE0状态;同样地,当数据线上的SE0状态持续一段时间了,就被主机认为是断开状态
2)设备连上主机时
  • 当主机检测到某一个数据线电平拉高并保持了一段时间,就认为有设备连上来了
  • 主机必需在驱动SE0状态以复位设备之前,立刻采样总线状态来判断设备的速度
 
FS/HS设备连上
 
LS设备连上
 
12.数据编解码和位填充
1)USB采用NRZI(非归零编码)对发送的数据包进行编码
  • 输入数据0, 编码成“电平翻转”
  • 输入数据1, 编码成“电平不变”
  • 编码出来的序列,高电平: J状态;低电平: K状态
2)位填充是为了保证发送的数据序列中有足够多的电平变化
  • 填充的对象是(输入数据),即先填充再编码
  • 数据流中每6个连续的“1”,就要插入1个“0”,从而保证编码数据出现电平变化
  • 接收方负责解码NRZI码流,然后识别出填充位,并丢弃它们

 12.USB传输: Packet、 Transaction、 Transfer

12.1 Packet的组成

12.2 Packet的内容

 

Packet分四大类:

  • 命令 (Token) Packet
  • 帧首 (Start of Frame) Packet
  • 数据 (Data) Packet
  • 握手 (Handshake) Packet

不同类型包,以上的组成部件有所不同

12.2.1 Packet内容之PID

 

 12.2.2 Packet内容之地址

 12.2.3 Packet内容之帧号

帧号

  • 11 位
  • 主机每发出一个帧,帧号都会自加1
  • 当帧号达到7FFH时,将归零重新开始计数
  • 仅在每个帧的帧首传输一次SOF包

帧格式

12.2.4 Packet内容之数据

根据传输类型的不同,数据域的数据长度从0到1024字节不等:

12.2.5 Packet内容之CRC

Token CRC:

  • 计算地址域和帧号域的CRC
  • G(X) = X5 + X2 + 1

Data CRC:

  • 计算数据域数据的CRC
  • G(X) = X16 + X15 + X2 + 1

12.3 Packet的类型

12.3.1 Packet类型之Token Packet

12.3.2 Packet类型之SOF Packet

12.3.3 Packet类型之DATA Packet

 12.3.4 Packet类型之Handshake Packet

12.4 Data PID toggle

12.4.1 Data PID toggle 用于数据的同步

12.4.2 Data PID toggle 用于数据的重发

12.5 USB传输:Transaction

1)Transaction可以分成三类

  • Setup transaction: 主机用来向设备发送控制命令
  • Data IN transaction: 主机用来从设备读取数据
  • Data OUT transaction: 主机用来向设备发送数据

:总是由主机发起

2)Transaction的packet组成

  • Token packet: 总是由主机发出
  • Data packet: 包含此次transaction的数据负载
  • 可选的Handshake packet

12.6 USB传输:Transfer

注:以上摘自《STM32 USB 开发者培训》,2013.5

原文地址:https://www.cnblogs.com/rockyching2009/p/14231825.html