通讯协议----USB2.0协议


USB总线的信号

使用差分传输,两个数据线D+和D-	
差分信号1:D+高电平;D-低电平
差分信号0:D-高电平;D+低电平

常见信号

USB总线的信号:USB总线的信号说经过编码最后呈现的格式
对于全速设备J状态是差分信号1,K状态时差分信号0

常见信号状态介绍
ldle空闲状态J状态,数据发、送前后总线的状态
Suspend挂起状态3ms以上的J状态
Resume恢复信号20ms的K状态+低速EOP
Reset信号主机拉低两根信号线(SE0状态)10ms,把设备设置到默认的未配置状态
SYNC3个KJ状态切换,后跟随2位时间的K状态
SOP包传输开始标志,从IDLE状态切换到K状态
EOP包传输开始标志,持续2位时间的SE0信号,后跟随1位时间的J状态

数据编解码和位填充

常见信号是由输入信号经过编码得到,下面是具体过程

-1-位填充:输入数据先经过位填充再编码
  数据流中每6个连续的“1”,就要插入1个“0”,从而保证编码数据出现电平变化
-2-编码:USB采用NRZI(非归零编码)对发送的数据包进行编码
  输入数据0, 编码成“电平翻转”
  输入数据1, 编码成“电平不变”
  编码出来的序列,高电平:J状态;低电平:K状态
-3-解码:接收方赋值解码NRZI码流,然后识别出填充位,并丢弃它们

原始数据----填充数据----NRZI编码数据的过程
在这里插入图片描述
编码出的数据即为USB总线的信号

在这里插入图片描述

USB设备的检测

主机通过设备在D+或D-上的上拉电阻检测设备的连接和断开事件,并由此判别设备的速度
  D+1.5K上拉:高速、全速设备
  D-1.5K上拉:低速设备
主机先把高速设备检测为全速设备,然后再通过总线握手机制来识别高速和全速设备

USB设备的挂起

总线连续3ms没有信号传输时,会进USB挂起模式Suspend
USB周期性地发送SOF信号或Keep Alive信号防止设备挂起
  高速信道上,主机按照125us( +/- 65ns )的周期发送SOF
  全速信道上,主机按照1ms( +/- 500ns )的周期发送SOF
  低速信道上,主机按照1ms的周期发送Keep Alive (End of Packet)

USB传输

传输依赖于Transfer,一个Transfer有多个Transaction,每个Transaction有三个Packet。

Packet

在这里插入图片描述
不同的Packet类型由不同的PID决定,包括Token令牌包、Data数据包、Handshake握手包、Special特殊包
在这里插入图片描述

Packet包种类

Token令牌包
在这里插入图片描述
SOF包:用于高速设备的周期性地发送防止挂起
在这里插入图片描述
DATA包
在这里插入图片描述
Handshake包
在这里插入图片描述

Data PID作用

数据同步:
• RX方PID为期待收到的PID,
• Reset后发送方接受方pid都是data0,
•当收到正确的PID时,RX翻转,并返回ACK,否则不翻转

数据重发:
在这里插入图片描述

• RX收到期望收到的PID,发送ACK,但ACK丢失,
• TX处PID不翻转,
• RX收到的PID与RX的PID不一致,
• RX忽略此数据,发送ACK
TX收到ACK翻转PID,此时TX发送的PID与RX期望的PID一样

Transaction

Transaction可以分成三类
  Setup transaction:主机用来向设备发送控制命令
  DataIN transaction:主机用来从设备读取数据
  DataOUT transaction:主机用来向设备发送数据

Transaction的packet组成
  Token packet:总是由主机发出
  Data packet:包含此次transaction的数据负载
  Handshake packet:可选对于Data的应答

Transfer

USB协议定义了四种传输类型控制传输,中断传输,同步传输,大容量数据传输

控制传输(Control Transfers):

非周期性,突发,双向,用于命令和状态的传输。
在这里插入图片描述

中断传输(Interrupt Transfers)

周期性,低频率,单向, 允许有限延迟的通信
在这里插入图片描述

  • 全速端点,中断传输的间隔时间在1ms到255ms之间,
  • 低速端点,间隔时间限制在10ms到255ms之间,
  • 对于高速端点,间隔为2^(bInterval−1)×125us, bInterval的值在1到16之间

同步传输(Isochronous Transfers)

周期性、单向,整个带宽都将用于保证同步传输的数据完整,不支持出错重传,并且在数据中保存时间戳的信息
在这里插入图片描述

大容量数据传输(Bulk Transfers)

非周期性,突发,单向,大容量数据的通信,数据可以占用任意带宽,并容忍延迟
在这里插入图片描述

控制传输的过程

控制传输包括建立过程(Setup Stage)–数据过程(Data Stage)–状态过程(Status Stage)
在这里插入图片描述
在这里插入图片描述
• SETUP过程transaction
主机发送令牌包:SETUP---->主机发送数据包:DATA0---->设备返回握手包:ACK或不应答
• Data过程transaction
主机发送令牌包:DataIN或DataOut---->发送方发送PID为1数据包---->接受方返回握手包
• Status过程的transaction
主机发送令牌包:DataOUT或DataIN(Data相反)---->发送方发送PID为1数据包---->接受方返回握手包

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值