USB协议基本知识

第9课【USB协议】USB总线 接口 端点 管道 数据包 枚举 STM32_USB-FS-Device_Lib V4.1.0 USB(Universal Serial Bus)通常指通用串行总线,这是一种总线规范,用来规定计算机同其他设备之间的连接,这意味着只要遵循USB规范制作的设备,都能通过USB接口同计算机连接起来。我们日常生活中常见的手机USB数据线,USB鼠标等,他们都遵循了USB总线规范,其中USB2.0规范是目前较为广泛被运用,且易于理解的,以下内容都会基于USB2.0总线规范USB通过硬件接口PIN脚上的差分信号传输数据,PIN脚的数量,在不同版本的USB协议以及不同类型的USB接口中都是不一样的差分信号是什么。 阅读详情

USB 基本知识

USB的重要关键概念:

1、 端点:位于USB设备或主机上的一个数据缓冲区,用来存放和发送USB的各种数据,每一个端点都有惟一的确定地址,有不同的传输特性(如输入端点、输出端点、配置端点、批量传输端点)
2、 帧:时间概念,在USB中,一帧就是1MS,它是一个独立的单元,包含了一系列总线动作,USB将1帧分为好几份,每一份中是一个USB的传输动作。
3、upstream、downstream(上行、下行):设备到主机为上行,主机到设备为下行


下面以一问一答的形式开始学习吧:

问题一:USB的传输线结构是如何的呢?

答案一:一条USB的传输线分别由地线、电源线、D+、D-四条线构成,D+和D-是差分输入线,它使用的是3.3V的电压(注意哦,与CMOS的 5V电平不同),而电源线和地线可向设备提供5V电压,最大电流为500MA

问题二:数据是如何在USB传输线里面传送的

答案二:数据在USB线里传送是由低位到高位发送的。

问题三:USB的编码方案?

答案三:USB采用不归零取反来传输数据,当传输线上的差分数据输入0时就取反,输入1时就保持原值,为了确保信号发送的准确性,当在USB总线上发送一个包时,传输设备就要进行位插入***作(即在数据流中每连续6个1后就插入一个0),从而强迫NRZI码发生变化。这个了解就行了,这些是由专门硬件处理的。

问题四:USB的数据格式是怎么样的呢?

答案四:和其他的一样,USB数据是由二进制数字串构成的,首先数字串构成域(有七种),域再构成包,包再构成事务(IN、OUT、SETUP),事务最后构成传输(中断传输、并行传输、批量传输和控制传输)。下面简单介绍一下域、包、事务、传输,请注意他们之间的关系。

(一)域:是USB数据最小的单位,由若干位组成(至于是多少位由具体的域决定),域可分为七个类型:

1、同步域(SYNC),八位,值固定为0000 0001,用于本地时钟与输入同步

2、标识域(PID),由四位标识符+四位标识符反码构成,表明包的类型和格式,这是一个很重要的部分,这里可以计算出,USB的标识码有16种,具体分类请看问题五。

3、地址域(ADDR):七位地址,代表了设备在主机上的地址,地址000 0000被命名为零地址,是任何一个设备第一次连接到主机时,在被主机配置、枚举前的默认地址,由此可以知道为什么一个USB主机只能接127个设备的原因。

4、端点域(ENDP),四位,由此可知一个USB设备有的端点数量最大为16个。

5、帧号域(FRAM),11位,每一个帧都有一个特定的帧号,帧号域最大容量0x800,对于同步传输有重要意义(同步传输为四种传输类型之一,请看下面)。

6、数据域(DATA):长度为0~1023字节,在不同的传输类型中,数据域的长度各不相同,但必须为整数个字节的长度

7、校验域(CRC):对令牌包和数据包(对于包的分类请看下面)中非PID域进行校验的一种方法,CRC校验在通讯中应用很泛,是一种很好的校验方法,至于具体的校验方法这里就不多说,请查阅相关资料,只须注意CRC码的除法是模2运算,不同于10进制中的除法。

(二)包:由域构成的包有四种类型,分别是令牌包、数据包、握手包和特殊包,前面三种是重要的包,不同的包的域结构不同,介绍如下

1、令牌包:可分为输入包、输出包、设置包和帧起始包(注意这里的输入包是用于设置输入命令的,输出包是用来设置输出命令的,而不是放据数的)

其中输入包、输出包和设置包的格式都是一样的:

SYNC+PID+ADDR+ENDP+CRC5(五位的校验码)

帧起始包的格式:

SYNC+PID+11位FRAM+CRC5(五位的校验码)

2、数据包:分为DATA0包和DATA1包,当USB发送数据的时候,当一次发送的数据长度大于相应端点的容量时,就需要把数据包分为好几个包,分批发送,DATA0包和DATA1包交替发送,即如果第一个数据包是 DATA0,那第二个数据包就是DATA1。但也有例外情况,在同步传输中(四类传输类型中之一),所有的数据包都是为DATA0,格式如下:

SYNC+PID+0~1023字节+CRC16

3、握手包:结构最为简单的包,格式如下

SYNC+PID

 

USB的四种传输类型:

1.  控制传输:

      控制传输是一种可靠的双向传输,一次控制传输可分为三个阶段。第一阶段为从HOST到Device的SETUP事务传输,这个阶段指定了此次控制传输的请求类型;

      第二阶段为数据阶段,也有些请求没有数据阶段;第三阶段为状态阶段,通过一次IN/OUT 传输表明请求是否成功完成。

      控制传输通过控制管道在应用软件和 Device 的控制端点之间进行,控制传输过程中传输的数据是有格式定义的,USB 设备或主机可根据格式定义解析获得的数据含义。

      其他三种传输类型都没有格式定义。

      控制传输对于最大包长度有固定的要求。对于高速设备该值为 64Byte;对于低速设备该值为 8;全速设备可以是 8或 16或 32或 64。

      最大包长度 表征了一个端点单次接收/发送数据的能力,实际上反应的是该端点对应的Buffer 的大小。Buffer 越大,单次可接收/发送的数据包越大,反之亦反。

      当通过一个端点进行数据传输时,  若数据的大小超过该端点的最大包长度时,需要将数据分成若干个数据包传输,并且要求除最后一个包外,所有的包长度均等于该最大包长度。

      这也就是说如果一个端点收到/发送了一个长度小于最大包长度的包,即意味着数据传输结束。

      控制传输在访问总线时也受到一些限制,如:

        a. 高速端点的控制传输不能占用超过 20%的微帧,全速和低速的则不能超过 10%。
        b. 在一帧内如果有多余的未用时间,并且没有同步和中断传输,可以用来进行控制传输。

2.  中断传输:

      中断传输是一种轮询的传输方式,是一种单向的传输,HOST通过固定的间隔对中断端点进行查询,若有数据传输或可以接收数据则返回数据或发送数据,否则返回NAK,表示尚未准备好。

      中断传输的延迟有保证,但并非实时传输,它是一种延迟有限的可靠传输,支持错误重传。
      对于高速/全速/低速端点,最大包长度分别可以达到1024/64/8 Bytes。

      高速中断传输不得占用超过 80%的微帧时间,全速和低速不得超过 90%。

      中断端点的轮询间隔由在端点描述符中定义,全速端点的轮询间隔可以是1~255mS,低速端点为10~255mS,高速端点为(2interval-1)*125uS,其中 interval取 1到 16之间的值。

      除高速高带宽中断端点外,一个微帧内仅允许一次中断事务传输,高速高带宽端点最多可以在一个微帧内进行三次中断事务传输,传输高达 3072 字节的数据。

      所谓单向传输,并不是说该传输只支持一个方向的传输,而是指在某个端点上该传输仅支持一个方向,或输出,或输入。如果需要在两个方向上进行某种单向传输,需要占用两个端点,

      分别配置成不同的方向,可以拥有相同的端点编号。

3.  批量传输:

      批量传输是一种可靠的单向传输,但延迟没有保证,它尽量利用可以利用的带宽来完成传输,适合数据量比较大的传输。

      低速 USB 设备不支持批量传输,高速批量端点的最大包长度为 512,全速批量端点的最大包长度可以为 8、16、32、64。

      批量传输在访问 USB 总线时,相对其他传输类型具有最低的优先级,USB HOST 总是优先安排其他类型的传输,当总线带宽有富余时才安排批量传输。

      高速的批量端点必须支持PING 操作,向主机报告端点的状态,NYET 表示否定应答,没有准备好接收下一个数据包,ACK 表示肯定应答,已经准备好接收下一个数据包。

4.  同步传输:

      同步传输是一种实时的、不可靠的传输,不支持错误重发机制。只有高速和全速端点支持同步传输,高速同步端点的最大包长度为 1024,低速的为 1023。

      除高速高带宽同步端点外,一个微帧内仅允许一次同步事务传输,高速高带宽端点最多可以在一个微帧内进行三次同步事务传输,传输高达 3072 字节的数据。

      全速同步传输不得占用超过 80%的帧时间,高速同步传输不得占用超过 90%的微帧时间。 同步端点的访问也和中断端点一样,有固定的时间间隔限制。

      在主机控制器和 USB  HUB 之间还有另外一种传输——分离传输(Split  Transaction),它仅在主机控制器和 HUB之间执行,通过分离传输,可以允许全速/低速设备连接到高速主机。

      分离传输对于USB 设备来说是透明的、不可见的。

      分离传输:顾名思义就是把一次完整的事务传输分成两个事务传输来完成。其出发点是高速传输和全速/低速传输的速度不相等,如果使用一次完整的事务来传输,势必会造成比较长的等待时间,

      从而降低了高速 USB 总线的利用率。通过将一次传输分成两此,将令牌(和数据)的传输与响应数据(和握手)的传输分开,这样就可以在中间插入其他高速传输,从而提高总线的利用率。

USB 的工作原理:简介(第 1 部分) 如今,从小型拇指驱动器到大型存储设备,几乎每台设备都配备通用串行总线 (USB),仿佛它是万能的!这绝对是双关语。除了用于存储设备外,它还是各种外围设备(如键盘、鼠标、打印机、相机等)的标准化连接。然而,直到 1996 年,情况才开始发生变化;在此之前,公司使用的是更大、更慢的连接,例如串行端口和并行端口。该标准是康柏、DEC、IBM、英特尔、微软、NEC 和北电自 1994 年开始共同努力开发的。当时的目标是开发一个可用于多种设备的单一接口,消除使用的许多不同连接器,并提高电子设备的数据传输速率。 阅读详情

相关推荐

终于能看懂的USB协议笔记

一.什么是USB USB的全称是Universal Serial Bus,通用串行总线。它的出现主要是为了简化个人计算机与外围设备的连接,增加易用性。USB支持热插拔,并且是即插即用的,另外,它还具有很强的可扩展性,传输速度也很快,这些特性使支持USB接口的电子设备更易用、更大众化。 二.USB传输基础知识介绍 1.USB金字塔型拓扑结构 塔顶为USB主控制器和根集线器(Root Hub),下面接USB集线器(Hub),集线器将一个USB口扩展为多个USB...

weixin_40787463的博客 4611

USB协议介绍

当USB设备接入主机时,VCC和GND优先被接通;拔掉设备时,D-和D+数据线优先断电。USB,通用串行总线,是一种计算机与外围设备进行数据交互的通信协议。在低速和全速模式下,采用电压传输模式,在高速下,采用电流传输模式。,因而有两条数据线D+和D-。

青春易逝,愿不负昭华,期待梦与远方 1万+

USB 基本知识(三)----- usb全接触之usb function----usb传输(1)

<br />简介:从本节开始,我们将介绍usb的传输机制。这节先介绍usb现有传输方式的背景知识,做为对下节将要展开的四种传输类型,描述符,等相关知识的一个导引。<br />2。usb传输。<br />我们在上一节中了解到了usb的“packet”的感念,了解到了usb传送一个packet总是以sync开始,以eop结束,这个称为delimiter,即标记packet的始末。有了packet,我们就可以在usb总线上传输数据了。但是这还不够,比如数据传送方向,即传回usb主机还是传下usb从机,数据传送的地

小破猴的专栏 1231

USB 协议分析(含基本协议和 USB 请求和设备枚举)

目录 1. 物理特性 1.1 引脚 1.2 USB 信号(差分信号) 1.3 USB 信号编码(NRZI) 1.4 USB 字节序 1.5 USB 设备检测 2. 通信协议 2.1 包组成(Packets Content) 2.1.1 PID 域 2.1.2 Address 地址域 2.1.3 Frame Number 帧号域 2.1.4 Data 数据域 2.1.5 C...

StephenZhou 6万+

USB协议基础篇

初次接触USB的同学,可能会被里面各种名词给搞晕,下面就来梳理一下这些知识,希望能帮助大家理解USB。 文章目录一,从最常见的名词说起1.1 什么是USB1.2 USB协议版本1.3 USB接口分类1.4 PIPE1.5 endpoint1.6 管道通信方式1.7 传输方式1.7 逻辑设备1.8 interface1.9 class协议1.10 host/device二,USB框架/拓扑结构三. ...

kevin的博客 1万+

USB充电协议

USB充电协议 一、USB知识点 1、DFP与UPF 数据通讯方面,主机端称为下行端口 (Downstream Facing Port,DFP) 数据通讯方面,外设端称为上行端口 (Upstream Facing Port,UFP) 2、源端和吸端 电源方面,供电端被称为源端 (Source) 电源方面,耗电端被称为吸端 (Sink) 3、Type-C CC线在两台设备连接期间能起到定义电源角色的作用 标准的Type-C电缆额定的负载能力是3A,当更高的电流出现时,含有电子标签的电缆

小破孩的博客 1万+

USB协议基本知识(上)

<br />USB 基本知识<br />USB的重要关键概念:<br />1、    端点,位于USB设备或主机上的一个数据缓冲区,用来存放和发送USB的各种数据,每一个端点都有惟一的确定地址,有不同的传输特性(如输入端点、输出端点、配置端点、批量传输端点)<br />2、    帧,时间概念,在USB中,一帧就是1MS,它是一个独立的单元,包含了一系列总线动作,USB将1帧分为好几份,每一份中是一个USB的传输动作。<br />3、上行、下行:设备到主机为上行,主机到设备为下行<br /><br />一条

空之轨迹~约修亚 1230

Windows侧USB设备枚举过程综述

本文讲解USB枚举过程中,需要用到的一些知识点,比如USB协议中定义的几种USB设备状态、USB控制器与USB设备之间的控制包交互,也就是setup数据包,以及USB设备需要上报的一些描述符信息,至于其他相关信息,请自行查看USB协议文档。

四儿家的小祖宗的博客 2213

usb驱动的基本知识

USB基本知识: (1):公共总线协议 (2):两种接口:4个引脚(1,Vcc,2,DATA,3,DATA,4,Ground) 差分线: USB主机软件架构 (1):客户软件-负责和USB设备的功能单元进行通信,以实现其特定功能。 (2):USB系统软件-负责和USB逻辑设备进行配置通信,并管理客户软件启动的数据传输。 (3):于给USB系统提供一个或多个连接点(端口)。 (注

小菜鸟的专栏 1090

【UE5】多用户协同编辑实战:从配置到实时协作

本文详细介绍了在虚幻引擎5中配置和使用多用户协同编辑功能的完整流程。从启用Multi-User Editing插件、配置UDP Messaging网络通信,到启动服务器、创建会话并实现实时协作,提供了从环境准备到实战协作的清晰指南。文章还分享了资产同步、场景分批、对象锁定等实用技巧,并强调了网络配置与版本一致性等关键避坑点,旨在帮助中小型团队提升关卡设计和原型开发的协作效率。

weixin_29001683的博客 267

【分布式系统学习】CAP原理详解

概述:互联网最重要任务莫过于海量数据处理,即大规模分布式系统,分布式是互联网的核心技术!!!如上所述,分布式系统是无法同时满足CAP三个特性的。1.Atomicity(原子性)一个事务中的所有操作,要么全部完成,要么全部不完成,不会在中间某个环节结束。事务在执行过程中发生错误,会被回滚到事务开始前的状态,就像这个事务从来没有执行过一样。2.Consistency(一致性)在事务开始之前和事务结束以后,数据库的完整性没有被破坏。3.Isolation(隔离性)

大龄烤红薯的博客 5024

USB

第 1 章 USB的来龙去脉 目录 1.1. USB是什么1.2. 为何要有USB 1.1. USB是什么 USB是Universal Serial Bus的缩写,中文译为通用串行总线。 所以,从字面意思上,善于思考的人,就问有疑问: 那么与此USB相比,其他还有哪些非串行的总线,以及和此通用的串行总线来说,其他还有哪些相对“不通用”的串行总线呢?

SdustLiYang的专栏 2301

Dify+工作流,通过多模态实现发票自动识别

上个章节我们用Dify实现了基于本地知识库的聊天助手,本节我们通过工作流 ,可视化界面快速构建复杂的工作流和自动化流程。结合 OCR(光学字符识别)技术和工作流引擎,可以实现发票的自动识别、数据提取以及后续的审批流程。本文将详细介绍如何使用 Dify 和工作流来实现发票的自动识别与审批。

odin2005的博客 7425

如何实现Linux下的U盘(USB Mass Storage)驱动

摘要 本文主要介绍了USB Mass Storage的相关的各种协议之间的关系,以及如何在Linux的USB驱动框架下实现U盘驱动 本文提供多种格式供: 在线阅读 HTML HTMLs PDF CHM TXT RTF 下载(7zip压缩包) HTML HTMLs PDF CHM TXT

Lassewang的成长历程 5237

学Simulink——基于故障诊断与容错控制的场景实例:并网逆变器在短路故障下的动态响应及恢复策略

本文详细介绍了使用Simulink进行并网逆变器短路故障模拟与保护策略设计的方法。通过构建高精度逆变器模型,模拟IGBT击穿和桥臂直通故障,分析动态响应特性。重点设计了基于Stateflow的微秒级快速保护逻辑,包括过流检测、PWM闭锁和故障报警。同时提出完整的恢复策略流程,涵盖放电、去磁、自检和软启动等关键步骤。仿真结果表明,该方法能在200μs内有效限制短路电流,保护器件安全,并实现系统可靠恢复。文章还探讨了硬件保护协同、多级保护和预测保护等高级策略,为新能源系统的安全运行提供了重要参考。

amy_mhd的博客 143

汽车行业OTD业务模式入门学习

本文是在学习彭俊松老师的《汽车行业整车订单交付系统》后,对于OTD理解的一些摘录,供诸位参考学习。

qq_40664711的博客 1万+

USB基础知识扫盲

USB基础知识扫盲 文章汇总 1 STM32-USB学习笔记(一) USB基础 链接地址:https://segmentfault.com/a/1190000015995506 特点:通俗易懂,上手容易,阅读排斥性较低,但是对于深层次的电气层信号没有详细描述 评价:⭐⭐⭐⭐⭐ 2 USB协议简介 链接地址:https://blog.youkuaiyun.com/songze_lee/article/details/77658094 特点:对usb协议电气层信号有详细描述, 但是阅读难度高,有些知识点描述的不是特别全面

爱出名的狗腿子 694

【2025年华为秋招(AI)-11月19日-第一题(100分)- 选择题】(题目+思路+Java&C++&Python解析+在线测试)

本文摘要: 本文包含15道单选题和5道多选题,涵盖机器学习、深度学习、概率统计和数值计算等多个领域。单选题涉及Transformer的Softmax层作用、最小二乘法拟合、概率密度计算、注意力机制、反向传播问题、ROC曲线用途、截断误差来源等知识点。多选题考察大模型训练技术、BERT/GPT比较、强化学习对齐方法、CNN常见层以及PCA特性等内容。题目设计注重理论与实践结合,既包含数学推导,又关注前沿技术应用,全面检验读者对机器学习核心概念的理解能力。正确答案均附有详细解析,帮助理解相关技术原理。

m0_73659489的博客 145

stm32-【学习历程】-通信基本知识

规定通讯系统中具有机械、电子功能部分元件特性,即硬件操作。规定通讯逻辑,即统一数据的打包、解包格式,软件编程根据。简单说就是下位机接受到的一组高低电平,通过协议层的通讯逻辑,将高低电平解包转为有价值的信号,再通过物理层写入硬件设备,进行数据存储,以便后续使用。芯片中基本都采用这种TTL标准,高电平为(5~3.3V),低电平为0V。常用于工业控制,高电平15V,低电平-15V,高低电压相差大,所以工业中采用。微控制器可以选用电平转换芯片来进行TTL标准到RS232标准的转换。

m0_67825544的博客 470

智能运营模型的建设与运用实践

一项运营活动的全流程,主要包含客群挖掘与筛选、产品与权益选择、触点与活动选择、运营策略调优等关键环节,涉及客群管理、活动管理、权益管理、触达管理、智能调控等系统支撑需求,如今工商银行已开展与其相对应的推荐模型、分析模型等的研发与实践。自2023年9月该模型被知客运营平台吸收并上线以来,已累计有远程银行中心、吉林分行、重庆分行等30余家分行或机构使用,赋能融e借、积存金、结售汇、基金、理财、存款等12种场景,产生营销客户清单达千万人次,有力促进了保守型理财、天天盈、添益快线、寿险等产品的销售。

银行信息系统应用架构详解 849

39、低功耗处理器性能评估与Cortex - M23/M33低功耗特性解析

本文深入解析了Cortex-M23和Cortex-M33处理器的低功耗特性及其性能评估方法。介绍了ULPMark、CoreMark、IoTMark-BLE和SecureMark-TLS等基准测试在能效评估中的应用,并详细阐述了处理器的睡眠模式、系统控制寄存器(SCR)配置、WFI/WFE指令、退出时睡眠、挂起时发送事件(SEVONPEND)以及唤醒中断控制器(WIC)等关键低功耗机制。结合状态保留技术,展示了如何通过芯片级设计大幅降低泄漏电流,实现高效能低功耗的物联网与嵌入式系统设计。

Pepper的专栏 130
上一篇: linux 虚拟文件系统实现
下一篇: SD卡规范解读
LinuxWorking
博客等级 码龄10年 24粉丝 32原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值