usb底层协议
usb它是串行总线,所以数据在总线上是一位一位传输的,先传输最低位数据,最后传输最高位数据。对于多个字节的数据传输呢,采用的是小端格式,即先传输低字节数据,最后传输高字节数据。
在usb中,数据是以包为单位进行传输的,所有的包都必须以sync字段开始,以eop(end-of-packet)结尾。在sync字段之后,紧跟着的是包标识符(pid),pid为一个字节,其中4位用于定义包的类型,另外4位是用来校验pid的,pid格式如下:
在usb中,定义了四种类型的包,令牌包、数据包、握手包和特殊包,包类型详细定义如下:
在令牌包的pid字段之后,还包含地址域,地址就包括设备地址和端点地址,设备地址共7位,总共可寻址128个地址,但是地址0是作为默认设备地址的,所以说,usb系统中,最多只能同时连接127个设备。端点地址共4位,可寻址16个端点。
在usb包最后,还包含5位的crc检验码,crc校验码只对pid后面的数据进行校验,不对pid进行校验,因为pid本身就包含4位校验码。
包格式
令牌包格式
令牌包格式定义如下:
这里的令牌特指in、out、setup令牌,而sof包格式定义如下:
令牌包实例如下:
数据包格式
数据包包含包标识符(pid)和0到多个字节的数据,数据包类型总共四种,data0、data1、data2和mdata。数据包格式定义如下:
数据包实例如下:
上图为setup请求数据包,用于读取设备的设备描述符。
握手包格式
握手包有三种ack、nak和stall,其中ack表示数据传输完成并且无错误,nak表示设备不能接收数据或者没有数据上传,stall表示设备不能进行数据传输。而nyet和err握手包只针对高速设备,表示设备没有准备好或者出错。握手包格式定义如下:
ack握手包实例如下:
ROBOTOUS-RFT系列六维力传感器
基于深度学习的情感语音识别模型优化策略
天拓分享:西门子plc S7-200 SMART与G120 变频器Modbus通讯详解
小米米家滑板车Pro体验 更快的提速更好的续航
HERMES与可穿戴外骨骼机器人技术详解
在USB中,定义了这四种类型包
Cloud2.0时代,运营商能否把握云之大势?
Vivo发布影像芯片V3,安卓手机可实现4K电影人像视频
OPPO在成都正式发布了ColorOS 6正式版操作系统
解高通新超声波指纹传感器: 竟然首次用在荣耀10上面!
基于线性电源供电的LED发光二极管驱动电路设计
解读片上RAM和外部RAM访问速度的差异问题
在汽车领域,国产芯片企业有着大量机会
2018数据中心在四方面受到机器对机器通信的影响分析
amd处理器与intel区别对比_amd处理器与intel哪个好
设计反激式转换器时需要考虑的几大关键因素
基于单片机的16位智能抢答器设计
差分信号等长及阻抗匹配
自动化系统的无线通信标准介绍
机器人潜水员可以利用人工智能拯救珊瑚礁