!
usb

Usb系统组成:
usb主机:数据使用者
usb设备:数据提供者
接线: VBUS D+ D- GND
d+ d-属于差分信号,d+与gnd构成比如3v,d-与gnd构成1v,则(d+) -(d-)=3-1=2v=高电平
十几测量可以类似红表笔接d+,黑表笔接d-就可以直接得到压差
物理层:
usb芯片中有两套收发器:低速/全速,高速 1.5Mb/s 12M, 480M
识别方法:
低速: D- 接1.5k-2k上拉电阻 总线速度1.5m 数据速率800b/s
全速: D+ 接1.5k-2k上拉电阻 总线 12m 数据速率1.2MB/s
高速: D+接1.5-2k后,电脑端吧d+d-拉低至少10ms后释放,然后设备控制器往d-送入17.8ma电流,这时候主机端通过d-和gnd之间的45欧姆电阻测得800mv电压,这就是chirp K,然后主机端发送kjkj表明支持高速模式,设备端收到kjkj后500us内断开D+的1.5k上拉电阻,连接设备这边的45欧姆终端电阻切换到高速模式
全速 / 高速下,D + 为 “1”、D - 为 “0” 是 J 状态,相反为 K 状态
全速或高速模式下,J 对应差分信号 “1”,K 对应 “0”;低速模式则相反,此时已进入差分传输过程 。
主机端持续发送kjkj信号,设备端在收到3对kj信号后500us内断开d+的1.5k电阻,d+接上45欧姆终端电阻完成切换.
高速传输过程中使用电流进行驱动,D + 和 D - 是差分信号, 通常 D + 为 + 400mV 时,D - 为 - 400mV,两者压差约 800mV 。 高速总线480Mb/s 数据速度53MB/s
usb供电 低速设备最多100ma 高功耗设备最多500ma
链路层
传输中,按时间看是由帧构成 一帧1ms 高速帧125us一个微帧,8个微帧组成一个1ms的帧.
USB通信由一系列帧构成。每一帧都有一个帧开始(SOF),随后是一个或多个数据操作。每一个数据操作都由一系列数据包构成。一个数据包由一个同步信号开始,结尾是一个数据包结束(EOP)信号,一个数据操作至少有一个令牌数据包。具体的数据操作可能有一个或多个数据数据包数据操作可能会有一个握手数据包,也可能无握手数据包
!
链路层中按帧传输:
低速/全速帧
sof包开头--令牌包/数据包/握手包 一帧以1ms为限
高速帧
sof包开头--令牌包/数据包/握手包 125us为一个微帧 8个微帧组成1ms的帧
sof包作用: 同步时钟
sof包结构:
8位同步字段 固定:0000 0001 同步时钟,表示包开始
4位PID+4位反码校验: 包类型标识符,
| 序号 |
PID[3:0] |
名称 |
包类型 |
功能说明 |
| 1 |
0 |
SPLIT |
特殊包 |
高速 Split 事务 |
| 2 |
1 |
OUT |
令牌包 |
主机→设备发送数据 |
| 3 |
10 |
ACK |
握手包 |
数据接收正确,应答成功 |
| 4 |
11 |
DATA0 |
数据包 |
数据同步模式 0 |
| 5 |
100 |
PING |
特殊包 |
高速端点状态查询 |
| 6 |
101 |
SOF |
特殊包 |
帧开始,同步时钟 + 帧号 |
| 7 |
110 |
NYET |
握手包 |
高速未就绪,下次再发 |
| 8 |
111 |
DATA2 |
数据包 |
高速高带宽同步数据 |
| 9 |
1000 |
— |
保留 |
未定义 / 保留 |
| 10 |
1001 |
IN |
令牌包 |
设备→主机请求数据 |
| 11 |
1010 |
NAK |
握手包 |
设备忙 / 无数据,拒收 |
| 12 |
1011 |
DATA1 |
数据包 |
数据同步模式 1 |
| 13 |
1100 |
PRE |
特殊包 |
低速 / 全速前导令牌 |
| 14 |
1101 |
SETUP |
令牌包 |
控制传输 setup 阶段 |
| 15 |
1110 |
STALL |
握手包 |
端点挂起,传输失败 |
| 16 |
1111 |
MDATA |
数据包 |
高速高带宽多数据传输 |
16位帧号:0开始到65535循环
令牌包: [同步头][包类型][16位真号(高8+低8)][令牌数据][校验和]
1.同步头(Sync)固定 8bit:00000001
2. 包类型(Type)用来区分:SOF / 握手 / 令牌 / 数据例:8bit ◦
0x01 = SOF ◦
0x02 = 握手包 ◦
0x03 = 令牌包
3. 16 位真号(Sequence / 帧号)你说的从 0 开始,最大 65535
4. 令牌内容(Token)一般 8/16/32 位,看你设备规定 5. 校验和(Checksum)通常 8bit 或 16bit,防止出错
!
| 大类 |
数量 |
方向定义 |
数据流向 |
| 输出端点(OUT) |
16 个(EP1_OUT ~ EP16_OUT) |
主机 → 设备 |
PC 电脑 → AI8051U 单片机 |
| 输入端点(IN) |
16 个(EP1_IN ~ EP16_IN) |
设备 → 主机 |
AI8051U 单片机 → PC 电脑 |
令牌(token)数据包:开始数据操作,指定与传输有关的设备,始终由主机发送。
令牌包的类型通常分为四种:SOF、运包、Out包和Zeta包。
数据(data)数据包:传输加载数据、由主机或设备发送。
握手(handshake)数据包:确认已接收到无错误的数据、由接收方发送。
特殊数据包:支持多种不同的速度、由主机传输给集线器设备。