USB通信基础了解

1. USB总线简介

      USB总线协议是以Intel等公司共同制定的串行接口标准,USB与I2C、SPI、UART类似,都是一种传输数据的协议规范,但USB主要设计是用于计算机与外接设备的数据交互和文件传输,USB协议版本从最开始的1.0、1.1、2.0、3.0、3.1、3.2等到现在最新的4.0版本,通信速率越来越高,设计也变得更复杂。USB 2.0 可能是目前最经典的接口,480Mbps的速度已经可以满足一般人的日常文件传输需求。USB版本是可以向下兼容的,使得即使更新换代,但还是非常好用的通信接口。
      USB属于一种轮询式总线,主机控制端口初始化所有的数据传输,所有数据通信都是由主机发起的。

2. USB电气特性

      USB2.0接口一般是4或5线,VBUS、D-、D+、GND、Shield。
      USB2.0 VBUS上电压为5V,可提供的最大电流为500mA。
      D- D+为差分数据线,可减少一定干扰,最高电压为3.3V左右。
在这里插入图片描述
下图为USB低速/全速信号电平规格定义

      
1)首先需了解differential 1/0的定义。

  • differential “1”: (D+) - (D-) > 200mV & D+ > VIH(min),正常即 D+ 3.3V(high)& D- 0V(low)
  • differential “0”: (D-) - (D+) > 200mV & D- > VIH(min),正常即 D- 3.3V(high) & D+ 0V(low)

2)两种全高或全低的情况

  • SE0: D+ & D- < VIL(max),全低的情况,USB主机端口未连接时的电平状态
  • SE1: D+ & D- > VIL(max),全高的情况,通常不用

3)J state 和 K state

  • J state: 对于全速设备即为 Differential “1”,低速设备相反
  • K state: 对于全速设备即为 Differential “0”

4)Idle、Resume、Suspend、Reset

  • Idle state: 对于全速设备即为J state
  • Resume state: K state
  • Suspend: J state keep 3ms
  • Reset: SE0 keep 2.5us or 10ms

5)SOP、EOP

  • SOP: Idle state to K state
  • EOP: 2bit time SE0 + 1 bit time J state

6)Connect、Disconnect

  • Connect : Idle state > 2ms
  • Disconnect: SE0 > 2.5us

USB通信为NRZI编码,NRZI编码方式非常的简单,即信号电平翻转表示0,信号电平不变表示1,例如传输每个packet最前面的sync域00000001(B),Idle state为J state时,实际传输为KJKJKJKK。特俗情况为当连续传输1时,D- D+电平会一直不变,从机就无法同步时钟信号,解决方式就是在每连续6的 ‘1’ 之后强行插入一个0电平,接收端忽略掉这个0电平即可。

3. USB Protocol Layer

USB协议层次从大到小为:Transfer、Transaction、Packet。Packet是基本的传输单元,一个Transaction包含数个Packet,一个Transfer又包含数个Transaction。

USB有四种数据传输模式(Transfer),分别为控制(Control)传输、中断(Interrupt)传输、批量(Bulk)传输、同步(Isochronous)传输

  • 控制传输:功能是通过控制管道向USB设置控制信息。控制管道是USB设备中必须拥有的部分。控制管道分为令牌阶段、数据传送阶段、握手阶段三个部分。
  • 中断传输:传输数据流量很小,主要是用来通知Host事件的发生,如USB键盘按键按下释放等操作,可通过中断通道传送到Host。中断事务也分为令牌阶段、数据传输阶段、握手阶段三部分。
  • 批量传输:用于传输大流量数据,如U盘等大容量存储器,也有令牌阶段、数据传输阶段、握手阶段三部分。
  • 同步传输:为了保证传输信息的同步性,通常在USB摄像头传输视频数据时会采用。同步事务能够保证每秒中的固定传输量,能够允许细微的误码存在,保持实时性。由于对数据正确性的要求较低,同步传输事务仅有令牌阶段、数据阶段两个部分。

Transaction分为:Setup transaction、In transaction、Out transaction

  • Setup transaction: setup packet(H->D)、data packet(H->D)、handshake packet(D->H)
  • In transaction: in packet(H->D)、data packet(D->H)、handshake packet(H->D)
  • Out transaction: out packet(H->D)、data packet(H->D)、handshake packet(D->H)

Packet分为: Token packet、Data packet、Handshake packet、Special packet,packet 以包标识字段PID来区分

  • Token packet: SETUP packet、OUT packet、IN packet、SOF packet
  • Data packet: DATA0 packet、DATA1 packet、DATA2 packet、MDATA packet
  • Handshake packet: ACK packet、NAK packet、STALL packet、NYET packet
  • Special: PRE packet、ERR packet、SPLIT packet、PING packet
    在这里插入图片描述

Setup Packet、Data Packet、Handshake Packet、SOF Packet

包标识字段(PID)长度为8bit,由低4bit的类型字段和高4bit的校验字段组成。校验字段是类型字段的反码。

  • Setup packet:
    在这里插入图片描述

  • Data packet
    在这里插入图片描述

  • Handshake packet
    在这里插入图片描述

  • SOF packet
    在这里插入图片描述

Control Transfer(Get Descriptor)实例

在这里插入图片描述

Interrupt Transfer(In Transaction)实例

在这里插入图片描述

  • 3
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值