usb协议

功能层: 控制传输、中断传输、块传输(批量传输)、同步传输

设备层:管理USB设备、分配地址、读取设备描述符

总线接口层:采用NRZI编码-反向非归零编码(0将前一个电平翻转,1不翻转)

电气特性

电压:4.75~5.25V

电流:USB2.0高输出功率最大500mA、低输出功率最大100mA、 USB3.0最大输出900mA

USB事务

usb事务处理是主机和设备数据通信的基础。由: 令牌阶段、数据阶段、握手阶段组成。

常用字段

  • 同步字段(SYSC): 每个信息包以SYSC开始,低速/全速同步字段长度为8位,数据为10000000B,从低位开始发送。高速同步字段长度为32位,数据为80000000H。

  • 包标志字段(PID):字段长度为8位,低4位类型字段和高4位校验字段组成,校验字段是类型字段的补码,可验证数据的正确性。4种信息包类型: 令牌包、握手包、特殊包和数据包。

    包类型 PID[3:0] 二进制 包名 说明
    令牌包 1001 OUT PID 数据从主机发送到设备
      0001 IN PID 数据从设备发送到主机
      0101 SOF PID 作为帧的开始信息
      1101 SETUP PID 主机向设备发送的配置信息
    握手包 0010 ACK PID 接收方正确接收到数据
      1010 NACK PID 接收方未能正确接收到数据
      1110 STALL PID 使用的端点被挂起
      0110 NYET PID 接收方没有任何响应
    数据包 0011 DATA0 PID 数据包为偶数据包
      1011 DATA1 PID 数据包为奇数据包
      0111 DATA2 PID 高速同步事务专用数据包
      1111 MDATA PID SPLIT事务专用数据包
    特殊包 1100 PRE PID 令牌,主机发送先导包,使能低速通信
      1011 ERR PID 握手信息,SPLIT事务中的错误握手信号
      1000 SPLIT PID 高速SPLIT事务的令牌信息
      0100 PING PID 数据流量检测控制
  • 地址字段: 长度为7位,共128个地址值。地址0缺省,实际只有127个地址。在USB上电的时候主机先通过缺省地址0和usb设备进行通信,配置完成后,主机重新为设备分配一个地址。

  • 端点字段: 长度为4位,总共可表示16个端点。低速:3个端点, 高速/全速:16个端点。,端点0是所有USB设备必须的,主要在设备上电初期和USB主机进行通信、完成配置。

  • 帧号字段: 长度为11位,最大值07FFH,表示当前帧的帧号,每个帧发送的时候,该字段加1

  • 数据字段: 最大长度1024字节,长度由传输类型和程序的需要决定。首先传输低字节,再传输高字节。

  • CRC字段: 循环冗余校验字段。一般在发送方进行位填充之前进行。令牌包一般采用5位CRC校验;数据包采用16位CRC校验。

令牌包

  • IN令牌包: PID字段+ADDR字段+ENDP字段+CRC字段 数据从 设备 到 主机

​ PID: 数据从设备发送至主机

​ ADDR:USB设备地址

​ ENDP: 发送数据的端点号

​ CRC: ADDR和ENDP字段进行校验

  • OUT令牌包: PID +ADDR + ENDP + CRC 数据从 主机 到 设备

  • SETUP令牌包: PID + ADDR + ENDP + CRC 数据从主机 到 设备, 配置信息

  • PING令牌包: PID +ADDR + ENDP + CRC 数据从 设备 到 主机, 握手信号传输

  • PRE令牌包: PID 低速数据传输先导包,在开始发送数据之前必须先发送该包(主机与集线器之间进行传输)。

  • 数据包: PID + 数据字段 + 16位CRC PID指定数据包DATA0-DATA2或MDATA。数据字段的长度根据协议规定:低速最大长度8字节,全速最大长度 1023字节,高速最大长度1024字节

  • 握手包:PID 接收方反馈状态给发送方

事务处理

  1. IN事务处理

    主机发送IN令牌包: SYNC+IN+EOP

    设备发送数据包: SYNC+数据包+EOP

    主机发送握手包: SYNC+确认+EOP

  2. OUT事务处理

​ 主机发送OUT令牌包: SYNC+OUT+EOP

​ 主机发送数据包: SYNC+数据包+EOP

​ 设备发送握手包: SYNC+确认+EOP

​ 3.SETUP事务处理(利用其对设备进行配置,常用于建立阶段)

​ 主机发送SETUP令牌包: SYNC+SETUP+EOP

​ 主机发送数据包: SYNC+DATA0+EOP

​ 设备发送握手包: SYNC+确认+EOP

​ 4.PING事务处理(主要用于高速数数据传输中)

​ 主机发送PING令牌包: SYNC+PING+EOP

​ 设备发送握手包: SYNC+确认+EOP

​ 5.SOF事务处理

​ 主机主动发送。低速或者全速usb传输,每隔1ms产生一个SOF令牌包,对于高速传输,每

​ 隔125us产生一个小帧,每隔7个小帧,产生一个SOF令牌包,不需要握手包。

USB设备的状态

  • 连接状态: usb总线开始向usb设备供电,直到电源稳定。

  • 上电状态: usb设备处于上电状态,当没有被复位

  • 缺省状态: usb设备响应usb主机发出的复位信号,进行复位操作,复位结束后,设备进入缺省状态。该状态下:电流小于100mA,并且使用缺省的设备地址对一些usb事务进行处理。

  • 地址状态: 复位结束后,usb主机重新为设备分配一个唯一的地址。

  • 配置状态: 主机发出setconfiguration请求。

  • 挂起状态: usb设备在3ms内没有检测到总线活动,自动进入挂起状态,保持原有的地址和配置。

USB数据传输

  • 块传输: 适用于传输大量且对传输时间和传输速率没有要求的场合。数据包长度 -- 全速端点,可以是8、16、32、64字节;高速端点只能是512字节。数据量如果超过最大的数据包长,主控制器会将其分成多个块事务处理。处理过程:

​ 令牌 >> 数据 >> 握手

​ 第一个数据包为DATA0,第二个应该是DATA1,之后可以是DATA0/DATA1

  • 中断传输: 适用于传输少量或对数据处理有周期要求的场合。数据长度 -- 低速端点最大数据包长度8字节;全速端点最大为64字节;高速端点为1024字节。

  • 同步传输: 只能用于全速、高速设备。适用于传输大量、速率恒定的,且对周期有要求的数据。例如:音频、视频等。数据长度 -- 全速端点最大为1023字节;高速端点最大为1024字节

  • 控制传输: 主要用于传输少量的,对传输时间和传输速率均无要求、但必须保证传输的数据。数据长度 -- 低速端点最大为8字节;全速端点可谓8、16、32、64字节;高速端点只能是64字节。

    ​ 建立阶段 + 数据阶段 + 状态阶段

USB设备配置

  • 设备描述符:表示USB设备的总体信息,一个USB设备只有一个设备描述符。固定18字节。

  • 配置描述符: USB设备可以有一个或者多个配置,每个配置必须有一个配置描述符。固定9字节。

  • 字符串描述符: 可选。用于保存供应商的名称、产品序列等文本信息。

  • 接口描述符: 接口为端点的集合,负责完成该USB设备的特定功能。固定9字节。

  • 端点描述符: 指出端点的特性。固定7字节。

  • 设备限定描述符: 设备既需要告诉传输也需要全速传输,则必须支持设备限定描述符。固定10字节。

  • 其他速率配置描述符: 既采用高速传输又采用全速传输,则必须支持该描述符。固定9字节。

转载于:https://www.cnblogs.com/BlogsOfLei/p/7749434.html

USB协议基础知识笔记相关推荐

  1. 标定协议基础知识介绍

    在上一篇<如何实现标定>中介绍了标定工具通过标定协议与控制器进行通讯从而实现标定.在二十世纪九十年代由Audi.BMW.Mercedes-Benz.Volkswagen等相关企业成立了AS ...

  2. access2013数据库实验笔记_医学科研实验基础知识笔记(十):甲基化

    往期回顾 医学科研实验基础知识笔记(一):细胞增殖 医学科研实验基础知识笔记(二):细胞凋亡检测 医学科研实验基础知识笔记(三):细胞周期检测 医学科研实验基础知识笔记(四):细胞自噬研究策略 医学科 ...

  3. IOS Socket 01-网络协议基础知识

    IOS Socket 01-网络协议基础知识 1. 网络参考模型 OSI参考模型                                          TCP/IP参考模型 2. 七层简述 ...

  4. CANopen协议基础知识

    CANopen协议基础知识 资料: DS301协议中文文档:https://winshton.gitbooks.io/canopen-ds301-cn/content/chapter5.html 30 ...

  5. eip协议通信_工业通讯 | EtherNET/IP协议基础知识(Part 3)||附视频讲解

    点击蓝字 关注我们 相关阅读: EtherNet/IP OSI参考模型及其物理层.数据链路层与网络层的功能特点: EtherNET/IP协议基础知识(Part 1)||附视频讲解 Encapsulat ...

  6. Java基础知识笔记-11_2-Swing用户界面组件

    Java基础知识笔记-11_2-Swing用户界面组件 这章教程两个版本,一个语法是非lambda表达式版本,另一个是lambda表达式版本 非lambda表达式版本 1 Java Swing概述 J ...

  7. 6-DoF问题相关基础知识笔记

    6-DoF问题相关基础知识笔记 一.什么是6-DoF,即6个自由度是什么? 二.PnP算法 三.BOP挑战与官方数据集简介 BOP数据集 BOP toolkit BOP挑战的介绍页面 四.相关论文 C ...

  8. 二代测序之SNV基础知识笔记总结

    二代测序之SNV基础知识笔记总结 文章目录 二代测序之SNV基础知识笔记总结 SNV基础知识 SNVs Mutation vs. Variant[变异和突变] 不同层次的突变 DNA: 1.编码DNA ...

  9. HTTP协议基础知识

    简介 HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从WWW服务器传输超文本到本地浏览器的传送协议.它可以使浏览器更加高效,使网络传输减少.它不仅保 ...

最新文章

  1. Java 加密 AES 对称加密算法
  2. Java中常见的5种WEB服务器介绍
  3. CodeForces - 1362E Johnny and Grandmaster(贪心+模拟)
  4. 2017腾讯编程题----素数对
  5. Azure School与开源
  6. es6 Class 的 name 属性
  7. Java多线程实现多客户端的通信
  8. java与C#对比文章阅读
  9. java 并发 处理机制 和 cas 理解
  10. cpu vtx测试软件,推荐几个好用的检测电脑CPU是否支持(Virtualization Technology)虚拟化技术的工具-推荐实用小软件 -亦是美网络...
  11. 《加了pencil的ipad使用体验,想入手的看过来》
  12. 打印机脱机了的修复方法
  13. 阿里云大数据组件的基本介绍
  14. 最全iPhone启动图尺寸(包含 XS Max XR)
  15. R语言数据可视化之数据分布图(直方图、密度曲线、箱线图、等高线、2D密度图)...
  16. 安卓巴士总结了近百个Android优秀开源项
  17. 李政軒Cheng-Hsuan Li的关于机器学习一些算法的中文视频教程
  18. 18亿像素火星全景超高清NASA放出,非常震撼
  19. vue 显示日期只显示年月_vue获取年月日
  20. u盘电视测试软件,智能电视安装软件无法识别U盘怎么办?简单几招教你搞定!...

热门文章

  1. 瑞士银行开户条件有哪些,瑞士银行开户的流程及注意事项是什么?
  2. 航天器的“回家路线”有几种
  3. 2019年全国各地房价排名50强
  4. oracle xmltype转字节,extractvalue处理XMLTYPE类型超过4000字节ORA-01706的解决方法
  5. aidl生成java文件_Android AIDL自动生成Java文件测试
  6. 建立索引和主外约束_Mysql索引原理
  7. 2021广东省高考成绩查询时间,广东省高考成绩查询时间及方式公布
  8. 在python中、列表中的元素可以是_在Python中存储一个列表的元素,在另一个列表中 – 通过引用?...
  9. jvm空间分配担保机制
  10. MyBatis ofType和javaType区别