首页 > 其他分享 >USB协议详解第19讲(USB包-包的组成及分类)

USB协议详解第19讲(USB包-包的组成及分类)

时间:2024-10-22 23:00:11浏览次数:7  
标签:0000 USB 19 PID 地址 CRC 字段 详解 端点

1.包的组成

下面这张图为包的组成结构,由SOP、SYNCPacket Content、EOP四部分组成,其中Packet Content最为核心,Packet Content由PID、地址、帧号、数据、CRC组成。

1.SOP域(Start Of Packet)

通过将D +和D-线从空闲状态驱动到相反的逻辑电平(K状态),由始发端口发信号通知分组的开始(SOP)。 此开关级别表示SYNC字段的第一位。 当重新传输到小于±5 ns时,集线器必须限制SOP第一位宽度的变化。 通过将通过集线器的标称数据延迟与集线器的输出使能延迟相匹配,可以最小化失真。

2.SYNC(同步域)

SOP域之后就是同步域(SYNC)的开始,全速/低速设备SYNC被定义长度为8位(0000 0001),高速长度定义为32位(0000 0000 0000 0000 0000 0000 0000 0001)。 注意,这个长度是对发送端的要求。下图是一个全速/低速设备,经过NRZI编码后的波形。SYNC域中的最后两位是一个标记(电平未翻转,即受到数据1),用于标识SYNC域的结束和PID域的开始。

3.PID域(Packet Identifier Field)

数据包标识符(PID)域紧跟在同步域之后。 PID由4位类型字段和4位校验字段组成,如下图所示。类型字段主要是标识本包的类型,校验字段主要是对类型字段进行校验。为了确保接收端正确解码并识别包类型,发送端会对4位类型字段的每1位取补码赋值到4位校验字段里面,接收端也会进行校验操作,如果4位PID校验位不是它们各自的分组标识符位的补码,则存在PID错误。

4位类型字段标识的所有包类型如下:

4.地址域

使用两个字段来处理功能端点:设备地址字段和端点地址字段。 任一字段上的不匹配设备都必须忽略该令牌, 访问非初始化端点设备也必须忽略该令牌。

(1)设备地址字段

如下图,ADDR<6:0>总共可访问128个地址。

(2)端点地址字段

如下图, 低速设备每个功能最多支持三个管道,端点号为零的控制管道加上两个额外的管道(两个控制管道,一个控制管道和一个中断端点,或两个中断端点),全速和高速每个功能最多可支持16个IN和OUT端点。

(3)地址域总结

地址是由两个地址构成,设备地址+端点地址

5.帧号域

(1)帧和微帧

帧号域是11比特字段,其由主机在每帧的基础上递增。 帧号字段在达到其最大值7FFH时翻转,并且仅在每个帧(微)SOF令牌包发送并累加,说白了就是限时当前USB发了多少帧了。

USB全速设备1ms产生一个帧,而高速设备每125us产生一个微帧,启动后永不间歇,如下图,图中SOF包中Frame标识了当前帧号。大家可以看我的另一篇文章USB帧和微帧剖析。

(2)帧号域总结

6.数据域

(1)数据域格式

数据域的范围可以是0到1024字节,并且必须是整数个字节,下图显示了多个字节的格式,每个字节内的数据位首先从LSB移出。

(2)数据域总结

根据不同的传输类型,定义如下一次最大传输量。

7.CRC域(循环冗余校验)

(1)令牌CRC

为令牌提供五位CRC字段,并覆盖IN,SETUP和OUT令牌的ADDR和ENDP字段或SOF令牌的时间戳字段。 PING和SPLIT特殊令牌还包括一个五位CRC字段。

生成多项式为: G(X)= X^5 + X^2 + 1

(2)数据CRC

数据CRC是应用于数据分组的数据字段的16位多项式。

生成多项式是:G(X)= X^16 + X^15 + X^2 + 1

表示该多项式的二进制位模式是1000000000000101B,如果没有错误地接收到所有数据和CRC位,则16位校验和将为1000000000001101B。

(3)CRC域总结

8.EOP域(End Of Packet)

全速或低速设备的结束包:SE0状态用于发信号通知分组结束(EOP)。 通过将D +和D-驱动到SE0状态两位时间,然后将线路驱动到J状态一位时间来发信号通知EOP。 从SE0到J状态的转换定义了接收器处的分组的结束。 J状态被置位一个位时间,然后D +和D-输出驱动器都处于高阻态。 总线终端电阻将总线保持在空闲状态。

注:SE0的意思是D+和D-都表示为低电平。

2.包的分类

每种类型的包组成会有所不同,按照组成所有的包会被分成帧首包SOF(Start of Frame)命令包(Token)数据包(Data)握手包(Handshake)四大类型。

4种PID类型和4种包类型(按照组成分类)的区别如下,大家注意区分。

标签:0000,USB,19,PID,地址,CRC,字段,详解,端点
From: https://www.cnblogs.com/linhaostudy/p/18494080

相关文章

  • UML之用例图详解
    ~犬......
  • USB 包的分类(令牌包这些)与USB 域的区别及关系
    USB包与USB域的区别与关系USB域与USB包:基础概念USB域:USB数据流中的最小单位,类似于计算机中的比特。它包含了特定的信息,如同步信号、包标识、地址等。USB包:由多个USB域组成的更大单位,是USB数据传输的基本单元。一个USB包包含了完整的传输信息,包括起始、数据、校......
  • Java调用第三方接口、http请求详解,一文学会
    系列文章目录提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加例如:第一章Python机器学习入门之pandas的使用提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录系列文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据......
  • FreeRTOS学习——临界段代码保护及调度器挂起与恢复及其API函数内部实现详解
    FreeRTOS临界段代码保护及调度器挂起与恢复FreeRTOS临界段代码保护及调度器挂起与恢复临界保护区任务调度器挂起与恢复使用格式特点函数内部实现**vTaskSuspendAll();****==总结==**:xTaskResumeAll();FreeRTOS临界段代码保护及调度器挂起与恢复临界保护区什么......
  • Dockerfile指令详解
    Dockerfile是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。首先通过一张图来了解Docker镜像、容器和Dockerfile三者之间的关系。通过上图可以看出使用Dockerfile定义镜像,运行镜像启动容器。一、Dockerfile概念Docker镜像是一个特殊的文......
  • ArkUI-Image详解
    ArkUI-Image详解本地资源创建文件夹,将本地图片放入ets文件夹下的任意位置。Image组件引入本地图片路径,即可显示图片(根目录为ets文件夹)。Image('images/pic1.webp').width(100).height(100)Resource资源使用资源格式可以跨包/跨模块引入图片,resources文件......
  • 题解:AT_joisc2019_k 合併 (Mergers)
    题目传送门前言联考题,被初一的我切了。看到题解区里没有Tarjan做法,于是来补一篇Tarjan题解。分析因为相同州的城市不会分裂,所以可以给相同州的成市连边(注意不是两两连边,连成一个环就行),发现把国家分成两个部分就相当于断掉一条道路。那么如果整个国家就是一个边双连通分量,......
  • Python学习的自我理解和想法(19)
    #1024程序员节|征文#学的是b站的课程(千锋教育),跟老师写程序,不是自创的代码!今天是学Python的第19天,学的内容是面向对象。开学了,时间不多,写得不多,见谅。目录1.面向对象的三大特性(1).封装(2).继承(3).多态2.继承(1).简单使用(2).有构造函数的继承1.继承父类的构造方法......
  • Windows server 2019 安装vscode
    以下是在WindowsServer2019上安装VisualStudioCode(VSCode)的步骤:一、下载VSCode安装程序打开浏览器,访问VisualStudioCode官方网站(VisualStudioCode-CodeEditing.Redefined)。在官网首页,找到“DownloadforWindows”按钮并点击,下载适合Windows系统的......
  • 员工离职监控系统是什么?30秒截员工电脑屏幕!离职倾向、摸鱼通通被领导监测【科普详解】
    近年来,随着科技的发展,一种名为“员工离职监控系统”的软件在职场中悄然兴起。这类系统不仅能够实时监测员工的离职倾向,甚至还能通过截图等方式监控员工的电脑屏幕,确保员工在工作时间内保持高效的工作状态。然而,这样的监控方式也引发了关于职场隐私与效率的双重考量。离职......