首页 > 其他分享 >USB入门系列(二)USB事务处理(上)

USB入门系列(二)USB事务处理(上)

时间:2024-08-27 22:05:11浏览次数:7  
标签:令牌 同步 USB 握手 事务处理 发送 阶段 入门

USB事务处理(上)

​ USB的事务处理分为三个阶段,这三个阶段的作用分别和can的标准帧很像。

  1. 令牌阶段(包含了本次数据的类型信息)
  2. 数据阶段(包含了本次数据的数据信息)
  3. 握手阶段(包含传输是否成功的状态信息)

​ 而每个阶段都由同步字段 + 信息包 + EOP组成。令牌阶段的信息包又叫做令牌包;数据阶段的信息包又叫做数据包;握手阶段的信息包叫做握手包。

一、令牌阶段

​ 令牌阶段是USB事务处理必须包含的阶段。

1.1 同步字段(SYNC)

作用:因为USB没有时钟线,同步字段可以保证所有信息包的同步。同步字段在不同速度下的USB协议中有不一样的格式。

低速和全速

同步字段长度为8位,数据为1000 0000B(先发送低位再发送高位,先发送7个0,最后一位发送1)

高速

同步字段长度为32位,数据为8000 0000H(先发送低位再发送高位,先发送31个0,最后一位发送1)

1.2 令牌包

有七种令牌包

  • IN令牌包
  • OUT令牌包
  • SETUP令牌包
  • PING令牌包
  • SOF令牌包
  • SOLIT令牌包
  • PRE令牌包

二、数据阶段

​ 数据阶段包含本次传输的数据,最大的数据量为1024字节。

2.1 同步字段(SYNC)

低速和全速

同步字段长度为8位,数据为1000 0000B(先发送低位再发送高位,先发送7个0,最后一位发送1)

高速

同步字段长度为32位,数据为8000 0000H(先发送低位再发送高位,先发送31个0,最后一位发送1)

2.2 数据包

数据包字段 位数 作用
PID字段 8位 指明数据包的类型
数据字段 0~1024*8位 包含了传输的数据
CRC字段 16位 循环冗余校验字段
PID字段
  • 低四位:类型字段
  • 高四位:校验字段(类型字段的补码,有点红外信号的感觉)
数据字段
  • 低速USB: 最大长度8字节
  • 全速USB:最大长度为1023字节
  • 高速USB:最大长度为1024字节

三、握手阶段

​ 握手阶段由接收方向发送方报告此次数据传输是否成功。

3.1 同步字段(SYNC)

低速和全速

同步字段长度为8位,数据为1000 0000B(先发送低位再发送高位,先发送7个0,最后一位发送1)

高速

同步字段长度为32位,数据为8000 0000H(先发送低位再发送高位,先发送31个0,最后一位发送1)

3.2 握手包

握手包由仅有一个包标识字段(8个位)组成,有5种状态

  • ACK握手包
  • NAK握手包
  • STALL握手包
  • NYET握手包
  • ERR握手包

标签:令牌,同步,USB,握手,事务处理,发送,阶段,入门
From: https://www.cnblogs.com/xddisme/p/18383635

相关文章

  • 模拟版图设计工程师要学些什么?从入门到入行,你想知道的都在这里了
    IC模拟版图设计是门槛最低的IC设计方向,最低专科学历即可,其他IC设计大多要求本科以上,研究生学历,0基础小白经过几个月的学习也可以入行。那么,待遇还不低的模拟版图设计工程师入行都要学一些什么?下面我们来聊一聊 版图学习最好有一些工艺的基础,了解MOS的基本工作原理,比如PN结......
  • JdbcTemplate教程:JdbcTemplate连接MySQL数据库从入门到进阶
    一、入门了解JDBC概念:JDBC(JavaDataBaseConnectivity):Java数据库连接技术:具体讲就是通过Java连接数据库,并且可以通过发送SQL指令,实现对表中数据执行增、删、改、查等操作的技术。原生JDBC编程(了解一下):        查询t_user表(包括字段:user_id,username,password)中的......
  • Java 使用QQ邮箱的接收&发送功能,入门级教程
    进入qq邮箱主页面,点击账号下滑找到POP3...如果没有开启,需要开启,开启后,点击管理服务然后点击生成授权码按照步骤执行完成后,会给你需要的授权码1.拿到授权码后,导入相关依赖,和yml相关配置,注意修改配置文件的信息<dependency><groupId>org.apache.commons</......
  • RE入门第四天---做新手题
    题目来自polarDNwp来自:PolarCTF靶场Reverse方向简单难度Writeup-这里是千夏(l0serqianxia.github.io)polar靶场reverse区简单难度题目详解-先知社区(aliyun.com)shell考查:UPX自动脱壳下载下来ida打开有壳的体现尝试自动脱壳D:\..CTFgoju\reverse\UPX\upx-4.2.4-......
  • 蓝桥杯单片机入门(8)—按键控制LED流水灯,加速,减速,暂停,开始
    这回我们讲的是,按键对LED灯的控制,这次是基于上次按键模块的基础上进行了进一步的加工,处理。通过按键,实现对LED流水灯的对应的各种功能。首先,在这里先介绍一个概念,标志位,标志位可以理解为设置的一个变量,这个变量作为标志位去使用,给标志位赋不同的值,执行不同的任务。比如标志位F......
  • python入门笔记 1.环境配置
    1.python编译器下载https://www.python.org/downloads/windows/下载3.10版本的python,因为3.13还在prerelease,3.12和3.11在bugfix,担心有稳定性问题。负责代码的执行,并且有python的一些基础包,比如os。可以进行一些基础功能,就好像游戏的本体。有游戏的基本玩法,后续可以通过买dlc......
  • C++入门第一课
    我准备再出一个合集,这个合集主要是讲C++一些知识,主要是因为懒得写洛谷题解(´ー∀ー`),适合新手学习。本人语文不太好,有些用词不太恰当,还请各位多多指正o( ̄︶ ̄)oOK我们现在就开起C++学习吧ヾ(≧▽≦*)o!第一课认识C++要学习C++,就首先要知道C++是什么。1.C++是一种面向对象的计算机程......
  • Android Qcom USB Driver学习(十)
    本章主要是基于之前的学习,实现一个hidraw的驱动,发现有两种用于识别usb设备的方式,放别是usb_device_id和hid_device_idhid_probe(1)hid_device_idkernel/msm-4.19/drivers/hid/usbhid/hid-core.cbus=usbusb_register注册驱动->sys/bus/usb/driver↓↓↓↓↓↓......
  • Android Qcom USB Driver学习(九)
    本章主要是基于之前的学习,实现一个hidraw的驱动,发现有两种用于识别usb设备的方式,放别是usb_device_id和hid_device_idhid_probe(1)hid_device_idkernel/msm-4.19/drivers/hid/usbhid/hid-core.cbus=usbusb_register注册驱动->sys/bus/usb/driver↓↓↓↓↓↓......
  • FreeRTOS+CubeMX入门(二)--使用cubemx生成FreeRTOS工程
    目录CubeMX创建FreeRTOS入门实例基础配置第一个项目-驱动OLED中断配置文件的简单认识主函数代码简单分析编写业务函数实验效果CubeMX创建FreeRTOS入门实例该笔记记录使用CubeMX创建FreeRTOS工程的粗略讲解,快速构建一个工程,对FreeRTOS有一个初步认识选择CubeID......