精华内容
下载资源
问答
  • HD-USB12”全速 低速USB2.0协议分析仪技术文档
  • usb协议_全速设备

    2013-11-06 10:03:12
    USB协议,介绍了USB1.1方面的相关协议
  • 本文件包含STM32F10xxx全速USB设备开发套件用户手册中文版.pdf和usb2.0协议.pdf两个文档。旨在帮助广大同学们学习如何利用stm32单片机开发诸如鼠标、摄像头等usb硬件设备。如需学习windows驱动编程为你的usb设备开发...
  • USB2.0协议中文版

    2018-11-26 11:21:43
    USB2.0协议中文版: USB 是一种支持热插拔的高速串行传输总线,它使用差分信号来传输数据,最高速度 可达 480Mb/S。USB 支持“总线供电”和“自供电”两种供电模式。在总线供电模式下, 设备最多可以获得 500mA 的...
  • USB 协议

    2018-11-24 23:35:05
    主机的设备通过一种基于令牌的协议来共享 USB 总线带宽。 USB 总线允许设备连接、配置、 使用以及移除,但是这些操作不会影响其他与 USB 主机相连的设备。 2 usb-fs 2.1 功能描述 USB-FS 2.0 全速/低速模块通过...

    1.简介

    USB 是一种总线,它可以支持一台主机与一系列不同从机之间交换数据。这些连接到 USB
    主机的设备通过一种基于令牌的协议来共享 USB 总线带宽。 USB 总线允许设备连接、配置、
    使用以及移除,但是这些操作不会影响其他与 USB 主机相连的设备。
    2 usb-fs

    2.1 功能描述

    USB-FS 2.0 全速/低速模块通过状态寄存器、控制寄存器以及内存中的数据接口与处理
    器核心进行通信。

    2.2 数据结构

    设备操作的功能是在内存映像中传输或者接收一个在 USB 总线上的请求。为了有效管理
    与 USB 端点的通信, USB-FS 在内存中实现了一个 BDT 表项(缓冲区描述符)。
    2.2.1 缓冲区描述符表

    为了高效地管理端点之间的通信, USB-FS 在系统内存中实现了一个称之为缓冲区描述
    符表的数据结构。BDT 表占据系统内存的一个连续的 512 字节空间,该空间的起始地址由 BDT
    页面寄存器指向。每个端点的方向都需要 2 个 8 字节的缓冲区描述符实体。因此一个具有
    16 个双向端点的系统一共需要 512 字节的内存空间用来实现 BDT。端点的每个方向上的 2
    个缓冲区描述符实体分别为 EVEN BD 以及 ODD BD。这样允许控制器在操作其中一个 BD 的同
    时 USB-FS 操作另外一个 BD。采用双缓冲区描述符的方法允许 USB-FS 很容易地以最大的速
    度传输从 USB 总线上得到的数据。
    软件 API 在需要时通过更新 BDT 来智能地为 USB-FS 管理缓冲区。过这样 USB-FS 可以高
    效地管理数据的发送与接收,同时微控制器负责处理和通信以及其他的功能性程序开销。因
    为缓冲区是由 USB-FS 与微控制器所共享的,因此需要有一个简单的信号量机制来决定允许
    谁来更新 BDT 以及系统中的缓冲区。当为控制器正在操作 BD 实体是,信号量比特 OWN 位被
    清 0。当 OWN 位为 0 时,微处理器可以读写 DB 实体以及系统内存中的缓冲区。当 OWN 位为 1
    时,说明 USB-FS 具有对 BD 实体以及系统中缓冲区操作权,此时 USB-FS 拥有对 BD 表项以及
    相应的数据缓冲区的读写权限,而微控制器不能对该表项以及相应内存中的缓冲区进行任何
    操作。 BD 描述符具有指向内存中缓冲区地址的指针,这种间接地址机制可以同下图中看出
    来。

    2.2.2 USB作为目标设备或者主机

    不论是在哪种模式下, USB 主机或者 USB 目标设备,都是使用相同的数据路径以及缓冲
    区描述符进行数据的发送与接收。正式因为这个原因,一种被称之为基于 USB-FS 内核的命
    名法用来表述 USB-FS 内核与 USB 总线上数据传输的方向。
     2.3 缓冲区描述符表寻址

    当通过 USB-FS 或者为控制器来访问端点数据时,理解缓冲区描述符表的寻址机制是很
    有用的。一些要点如下:
    (1)缓冲区描述符表占据整个系统内存的 512 字节。
    (2) 16 个双向端点完全可以通过整个 512 字节来存储
    (3)每个端点的一个方向需要 16 个字节。
    (4)如果应用程序中的端点少于 16 个,那么可以通过更少的空间(少于 512 字节)来
    实现 BDT
    (5) BDT 页面寄存器指向 BDT 表的起始地址
    (6) BDT 表必须被定位在系统的一个连续 512 字节区间。
    (7)所有端点的 TX 以及 RX 描述符表最好通过索引的方式存到 BDT 表内,这样 USB-FS
    以及微控制器可以很轻松的对其进行访问
    当一个开启某个端点的 USB 令牌到达时, USB-FS 通过其内部集成的 DMA 控制器来查询
    BDT 表。 USB-FS 通过对相应端点的 BD 实体来决定他是否拥有该描述符表项以及该表项在内
    存中的缓冲区。
    为了计算实体在当前 BDT 表中的位置, BDT_PAGE 寄存器将当前的 endpoint(令牌命令
    的端点地址) 、 TX 字段、 ODD 字段连在一起组成一个 32 比特的地址。这种地址机制由下表
    所示。

    2.3缓冲区描述符格式

    2.3.1 USB-FS控制器通过存储在BD中的信息

    (1)谁正在使用内存中的缓冲区
    (2)包标识符为 DATA0 还是 DATA1
    (3)当完成 USB 数据包时,解除对该缓冲区描述符及相应内存的所有
    (4)非地址自动增加(FIFO 模式)
    (5)使能同步数据触发功能
    (6)需要发送或者接受多少数据
    (7)缓冲区在系统内存中的那个位置
    2.3.2 为控制器通过存储在BD中的信息决定以下事件

    (1)谁正在使用内存中的缓冲区
    (2)包标识符为 DATA0 还是 DATA1
    (3)接收到的 USB 令牌包的标识符
    (4)缓冲区在系统内存中的哪个位置

    数据缓冲区描述符(BD)
     

     

     

     3.USB传输

    当 USB-FS 发送护着接收数据时,它将通过 45.3.3 节给出的计算地址机制来计算 BDT
    的地址。
    如果 OWN =1,则进行下列操作
    (1) USB-FS 读取 BDT 表;
    (2) SIE 通过 DMA 向由 BD 计算得到的地址存取数据;
    (3)当令牌完成时, USB-FS 更新当前的 BDT 表。如果 KEEP=0,将 OWN 位清 0;
    (4) STAT 寄存器被更新,并且 TOK_DNE 中断标志位置 1;
    (5)当微控制器处理 TOK_DNE 中断时,会从状态寄存器中读取有关要处理端点的所有
    信息
    (6)于此同时,微控制器重新开辟一个 BD 保证后续的数据能被正确存取在当前端点,
    然后开始处理最后的那个 BD。

    4.USB和主机操作模式

     主机模式逻辑语序像电子摄像机或者掌上电脑等具有 USB 主机控制器。 OTG 逻辑增加了
    一个允许 OTG 主机协商和会话请求(HNP 和 SRP)接口的软件实现。 USB 主机模式允许一个
    类似于电子摄像机的外设直接与一个具有 USB 功能的打印机相连,可以轻松的打印电子照片
    而不用将其上传到 PC 机。在掌上电脑应用中,一个具有 USB 功能的键盘/鼠标可以直接连接
    到掌上电脑来实现多样的轻松的交互。
    主机模式主要使用于手持设备以便其与简单的 HID 设备例如打印机或者键盘进行简单
    的连接,它不适用于基于 PC 机主板具有主机控制器符合 OHCI 或者 UHCI 标准的功能实现。
    USB-FS 作为一个 USB 主机控制的功能不能很好的被 Windows98 操作系统支持。USB 主机模式
    允许批量、同步、中断和控制传输。块数据传输几乎使用所有的 USB 总线带宽。提供支持的
    ISO 传输,但是 ISO 数据流的个数由处理器处理来自于 SIE 的令牌的潜能所限制,并且 ISO
    只是被部分的支持。必须安装相应的客户驱动才能支持主机模式操作。
    设置 CTL 寄存器的 HOST_MODE_EN 位为 1 可以开启主机模式, USB-FS 内核只能工作与外
    设或者主机模式,它不能同时工作于两个模式。当 HOST_MODE 被开启时,只有端点 0 被使用,
    所有的其他端点必须使用软件的方法禁止掉

    5example

    5.1使能主机模式并且检测到一个连接上的设备:

    1.使能主机模式(CTL[HOST_MODE_EN] = 1)。使能下拉电阻,禁止上拉电阻。 SOF 发生
    器开始工作,并且 SOF 计数器被写入的值为 12000。通过向 USB 使能为写 0(CTL[USB_EN]=0)
    来禁止 SOF 数据包的产生这样可以消除 USB 噪声。
    2.使能 ATTACH 中断(INT_ENB[ATTACH]= 1)。
    3.等待 ATTACH 中断(INT_STAT[ATTACH])。通过 USB 目标设备的上拉电阻来改变 DPLUS
    或者 DMINUS 的状态从 0 变为 1(SE0 到状态 J 或者 K)。
    4.检查控制寄存器中 JSTATE 和 SE0 的状态。如果连接到的设备为低速设备(JSTATE 位
    为 0),然后设置地址寄存器中低速标志位为 1(ADDR[LS_EN]=1),并且设置端点 0 控制寄存
    器的没有 HUB 位为 1(EP_CTL0[HOST_WO_HUB] = 1)。
    5.使能复位至少等待 10ms 钟(CTL[RESET]=1)。
    6.使能 SOF 数据包以防止连接上的设备从运行状态状态挂起。
    7.通过发送框架质量开始设备枚举过程,设备框架工作包会发送到连接的设备的默认控
    制管道

    5.2 与接入设备完成控制传输
    1.完成发现一个连接设备的所有步骤;
    2.将端点控制寄存器设置为双向控制传输 EP_CTL0[4: 0]=0x0d;
    3.在内存缓冲区内放置一份设备框架剪力命令的拷贝。
    4.初始化当前 TX EP0 BDT 以发送 8 字节的设备框架命令数据(如, GET DEVICE
    DESCRIPTOR)。
    设置 BDT 命令字为 0x00080080(字节数为 8, OWN 位为 1);然后设置 BDT 缓冲区地址域
    为该 8 字节命令缓冲区的开始地址。
    5.设置 USB 地址为地址寄存器中的值(ADDR[6:0])。 USB 总线复位后, USB 设备地址为
    0,通过设置地址设备框架命令会将其设置为其他的值。
    6.向端点 0 机目标设备的默认控制管道的令牌寄存器写入 SETUP(TOKEN=0xD0)。从而
    在总线上发送 SETUP 令牌,并紧跟一个数据包。该数据包传输结束后,在 BDT 的 PID 域返回
    一个握手包。想 BDT 写入后,会产生令牌结束中断(INT_STAT[TOK_EN]), 结束 SETUP 事务
    的设置阶段。
    7.开始 SETUP 事务的初始化数据阶段(例如得到 GET DEVICE 描述符命令的数据),在存
    储器中为发送建立缓冲区。
    8.初始化当前 TX 端点 0 的 BDT 用于传输数据。首先将 BDT 命令字设为 0x001000C0(字
    节数为 64, OWN 位为 1, DATA 触发为 Data1),然后,将 BDT 缓冲区地址域设置为数据缓冲
    区的开始地址。
    9.向目标设备默认控制通道的端点 0 写入 IN 或这 OUT 令牌, IN 令牌为 GET DEVICE
    DESCRIPTOR 命令(TOKEN=0x90)。该初始化 IN 令牌在总线上,紧跟一个从设备到主机的数
    据包。当数据包完成之后, BDT 被写入并且产生一个令牌完成中断(INT_STAT[TOK_DNE])。
    对于控制传输,一个单独的包数据完成 SETUP 事务的数据阶段。
    10.开始 SETUP 事务的状态阶段,在存储器中建立一个用于接收或发送 0 长度数据包的
    缓冲区。
    11.初始化端点 0 的 BDT 用于发送状态数据。首先,将 BDT 命令设为 0x00000080(字节
    数为 0, OWN 位为 1,数据触发为 Data0);然后,将 BDT 缓冲区地址域设置为数据缓冲区的
    开始地址。
    12.想目标设备默认通道的端点 0 的令牌寄存器写入 IN 或者 OUT 令牌,一个 GET DEVICE
    DESCRIPTOR 命令的 OUT 令牌(TOKEN=0x10)。这将在 USB 总线上初始化一个 OUT 令牌紧跟一
    个 0 字节长度的从主机到设备的数据包。当数据包完成之后,BDT 表将会写入设备的握手包,
    并且产生一个令牌完成中断(INT_STAT[TOK_DNE]),这就结束了 SETUP 事务的数据阶段
    5.3 目标设备发送一个全速块数据

    1.完成发现接入设备的所有步骤并配置接入的设备。向 ADDR 寄存器写入目标设备的地
    址。典型情况是 USB 总线上只有一个设备。所以 ADDR 值为 0x01 并保持不变。
    2.设置 ENDPT0 寄存器为 0x1D,使能带握手的发送和接受。
    3.设置缓冲区描述符表中端点 0 的偶数发送项为最多发送 64 字节。
    4.设置目标 USB 设备地址为地址寄存器的值(ADDR[6:0])。
    5.将 TOKEN 寄存器设置为 OUT,这将触发 OTG 模块发送令牌和数据。
    6.设置缓冲区描述符表中端点 0 的奇数发送项为最多发送 64 字节。
    7.跟第 4 步一样,想 TOKEN 寄存器写入 OUT 令牌。同时可以有两个令牌同时入队,这样
    可以使用双缓冲机制以达到最大的吞吐量。
    8.等待 TOK_DNE 中断,这说明 BDT 的其中一个已经释放给微控制器,并且该传输已经完
    成。如果目标设备发送 NAK,那么 USB-FS 会继续在没有微控制器的干预之下重试已定义的
    传输,除非 EP0 控制寄存器的 RETRY_DIS 位被置位而禁止重试。如果重试禁止为被置位,那
    么握手信号(ACK, NAK, STALL 或者 ERROR(0xf))会被重新写入到 BDT 的 PID 字段。如果
    发生了一个 STALL 中断,那么未处理的数据包会被立刻出队并且在目标设备的错误条件会被
    清除。如果产生一个 RESET 中断(处于 SE0 状态至少 2.5us),那么目标设备会被移除。
    9.产生令牌完成中断(TOK_DNE)之后,可以检查 BDT 并且返回到第 2 步。
    6 OTG操作模式

    USB-OTG 内核体统传感器与控制器来使能 On-The-Go(OTG)操作。这些传感器被 OTG
    的 API 函数使用用来实现主机协商协议(HNP)和会话请求协议(SRP)。提供 API 函数调用
    用来提供访问 OTG 协议的控制信号,包括在设备应用中的 OTG 能力。下面的状态机显示了涉
    及来自 USB 电缆两端的 HNP 以及 SRP 协议的 OTG 操作
     

    展开全文
  • USB2.0协议中文版.pdf

    2020-10-28 19:10:21
    本章对应于USB2.0 协议第4 章。 USB(Universal Serial Bus)是一种支持热插拔的高速串行传输总线,它使用差分信号 来传输数据。在USB1.0 和USB1.1 版本中,只支持1.5Mb/s 的低速(low-speed)模式和12Mb/s 的全速...
  • USB协议

    2019-05-27 20:19:29
    USB(Universal Serial Bus) 速度 High Speed - 480Mbits/s Full Speed - 12Mbits/s Low Speed - 1.5Mbits/s 电气特性 使用NRZI编码,通过D+ ,D-的上拉电阻区分设备速度。 全速 低速 D+...

    USB(Universal Serial Bus)

    速度

    High Speed - 480Mbits/s
    Full Speed - 12Mbits/s
    Low Speed - 1.5Mbits/s
    

    电气特性

    使用NRZI编码,通过D+ ,D-的上拉电阻区分设备速度。

    全速 低速
    D+上拉 D-上拉

    在这里插入图片描述

    在这里插入图片描述

    协议层次

    由高到低是:transfer(传输)— transaction(事务)- packet(包)
    在这里插入图片描述

    PACKET

    PACKET由四类,Token,Data,Handshake,SOF
    每个packet有以下几个域组成,SYNC,PID,ADDR,ENDP(endpoint field),CRC,EOP
    根据PID的不同,每类又有几种。
    在这里插入图片描述

    token packet

    IN:host希望读信息
    OUT:host希望发送信息
    setup:开始控制传输
    

    data packet

    最大1024字节

    handshake packet

    ACK:packet成功接收
    NACK:暂时不能收发packet
    STALL:处于需要主机干预的state

    start of frame packet

    11位,frame号自动增加,在FS,1ms 在HS:125us

    transaction事务

    包含token packet,可选的data packet,status packet

    {
            if (pid_reset[HOTEND_INDEX]) {
              temp_iState[HOTEND_INDEX] = 0.0;
              pid_reset[HOTEND_INDEX] = false;
            }
            pTerm[HOTEND_INDEX] = PID_PARAM(Kp, HOTEND_INDEX) * pid_error[HOTEND_INDEX];
            temp_iState[HOTEND_INDEX] += pid_error[HOTEND_INDEX];
            iTerm[HOTEND_INDEX] = PID_PARAM(Ki, HOTEND_INDEX) * temp_iState[HOTEND_INDEX];
    
            pid_output = pTerm[HOTEND_INDEX] + iTerm[HOTEND_INDEX] - dTerm[HOTEND_INDEX];
    
            #if ENABLED(PID_EXTRUSION_SCALING)
              cTerm[HOTEND_INDEX] = 0;
              if (_HOTEND_TEST) {
                long e_position = stepper.position(E_AXIS);
                if (e_position > last_e_position) {
                  lpq[lpq_ptr] = e_position - last_e_position;
                  last_e_position = e_position;
                }
                else {
                  lpq[lpq_ptr] = 0;
                }
                if (++lpq_ptr >= lpq_len) lpq_ptr = 0;
                cTerm[HOTEND_INDEX] = (lpq[lpq_ptr] * planner.steps_to_mm[E_AXIS]) * PID_PARAM(Kc, HOTEND_INDEX);
                pid_output += cTerm[HOTEND_INDEX];
              }
            #endif // PID_EXTRUSION_SCALING
    
            if (pid_output > PID_MAX) {
              if (pid_error[HOTEND_INDEX] > 0) temp_iState[HOTEND_INDEX] -= pid_error[HOTEND_INDEX]; // conditional un-integration
              pid_output = PID_MAX;
            }
            else if (pid_output < 0) {
              if (pid_error[HOTEND_INDEX] < 0) temp_iState[HOTEND_INDEX] -= pid_error[HOTEND_INDEX]; // conditional un-integration
              pid_output = 0;
            }
          }
    
    展开全文
  • 本文件夹旨在帮助广大同学们学习windows wdf驱动开发。重点是usb驱动开发。学习完这三个文件后,你将拥有为usb设备开发...本人有stm32 usb设备开发的相关文档:“STM32F10xxx全速USB设备开发套件用户手册+usb2.0协议
  • USB2.0协议概述

    万次阅读 2016-11-26 11:29:16
    USB1.1,支持全速12Mbps和低速1.5Mbps。 USB2.0,兼容1.1,增加了高速480Mbps。 USB3.0,兼容2.0,增加了超速5Gbps。 在用户的角度,使用USB设备是非常方便的。但是,在开发人员的角度,可是谈USB色变。 由于USB硬件...

    USB发展到现在,主要流行1.1、2.0、3.0这几个版本,而3.1暂时只有少量笔记本在用。

    主流版本区别:

    USB1.1,支持全速12Mbps和低速1.5Mbps。

    USB2.0,兼容1.1,增加了高速480Mbps。

    USB3.0,兼容2.0,增加了超速5Gbps。

    在用户的角度,使用USB设备是非常方便的。但是,在开发人员的角度,可是谈USB色变。

    这是因为,USB硬件接口非常简单,导致上层协议非常复杂。


    由上图所示,自下而上,USB硬件接口提供物理的通信链路,EHCI等主机控制器负责调度各端点的数据流,USB驱动协助操作系统和USB设备交换数据同时能烧写固件到USB设备,GUI则让用户轻松操纵USB设备,服务器云端数据库提供各种各样的USB驱动。

    USB协议,是一个主从式的协议,所有的通信都由主机发起,设备不能发起。下图,展示了USB家族的主要成员。


    USB Host,即USB主机,一般是PC机。

    USB Device,即USB设备,有USB键盘、U盘等,而USB Hub集线器是一种特殊的USB设备。

    USB OTG,OTG即On-The-Go,同时具备USB主机和USB设备的功能,数码相机就带有OTG的功能。

    以下,细说USB2.0的方方面面。

    一、USB硬件接口

    1.1 接插件。


    由上图所示,USB座有很多种类型,主要分为:公/母、直插、贴片、单/双层、扁/方,等几种类型。

    可以看到它只有四根线,分别是VBUS、DP(或D+)、DM(或D-)、GND。此外,还有屏蔽罩,一般屏蔽罩是通过一个100nF的电容连到GND的。

    1.2 连接线。

    USB线,也分几种:公对公/公对母,带磁环,带屏蔽等。

    注意:USB线不能太长,否则设备可能无法正确工作。

    1.3 热插拔。

    热插拔。它能让你在不断电的情况下,插拔USB设备。

    如果要支持热插拔,必须在VBUS、DP、DM三根线上,加上过压、过流保护,在未上电时DP和DM要保持高阻态。

    另外,要利用金手指长短来控制上电顺序,插入时首先让电源线接通,让电源稳定之后,再接通信号线,拔出时顺序正好相反。这样有效防护接口被损坏。


    1.4 上下拉电阻。

    一般,在USB主机的DP、DM都接了下拉15K欧电阻。

    对于低速设备,DM接了上拉1.5K欧电阻。

    对于全速设备,DP接了上拉1.5K欧电阻。

    对于高速设备,一接在主机的时候DP接了上拉1.5K欧电阻,后面经过握手协议之后,DP上断开1.5K欧电阻。

    1.5 ESD防护。

    一般支持USB接口的芯片ESD防护做得不够好,这个时候要另外加ESD芯片。如下图的USBLC6。


    1.6 端接。

    端接,目的是做阻抗匹配,特别是高速480Mbps对信号质量要求较高。

    一般使用串联端接,在DP、DM上串联22欧电阻。

    1.7 UTMI+和ULPI接口。

    有一些不带USB接口的处理芯片,比如,51单片机、FPGA等。它们都不能直接处理USB总线上的DP、DM的差模信号。

    所以,芯片厂商开发了一些USB PHY芯片,可以把DP、DM上的差模信号转成共模信号。

    其中,成为业界标准的接口,有UTMI+和ULPI。

    如下图所示,UTMI+接口一共有31根信号线。


    如下图所示,ULPI接口一共有12根信号线。


    UTMI+和ULPI,在功能上是等价的。

    UTMI+和ULPI区别在于,ULPI需要读写寄存器,而UTMI+只需直接拉高或拉低信号线。

    如下图所示,ULPI是在UTMI+的基础上封装了一层。


    显然,UTMI+接口的信号线太多,占用大量的PCB空间,才需要推出ULPI接口。

    市场上,大多数的USB PHY芯片都是ULPI接口。

    1.8 检测USB设备速度的流程描述。

    对于低速设备,在DM引脚上拉1.5K。

    对于全速设备,在DP引脚上拉1.5K。

    对于高速设备,则需要握手协议。

    a、USB主机检测到全速设备,即:DP引脚上拉1.5K。

    b、USB主机复位总线,即向总线发送SE0,此SE0持续时间不得小于2.5us。

    c、高速设备检测到SE0持续时间不小于2.5us后,向总线发送Chirp K信号,此Chirp信号持续时间不小于1ms且不大于7ms。

    d、总线回复到SE0状态。如果USB主机支持高速模式,则必须在Chipr K信号结束后100us内做出响应。

    e、USB主机在Chipr K信号结束后100us内做出响应,向总线发送连续的Chirp K/J对,每个Chirp K信号或Chirp J信号的宽度不小于40us且不大于60us,每2个相邻的Chirp K和Chirp J信号之间的间隔不应大于2.5us。

    f、高速设备在检测到连续的最少3对Chirp K/J对后,在500us内必须断开DP上的上拉电阻,并连接D+和D-上的对地高速端接电阻,完成高速握手,进入高速传输模式。

    高速模式的握手协议,反应在USB3300的时序,如下图所示。





    附录:相关资料。

    1、USB2.0官方手册

    2、USB设备类手册

    3、USB3.0官方手册

    4、USB3.1官方手册

    5、EHCI官方手册

    6、USB3300数据手册

    7、USB3500数据手册

    8、UTMI官方手册

    9、ULPI官方手册

    10、《Linux设备驱动程序》(内附Linux下的USB驱动教程)

    11、深入浅出Windows驱动开发》(内附Windows下的USB驱动教程)



    展开全文
  • USB 2.0协议中文版

    热门讨论 2011-10-30 00:04:57
    USB2.0 被设计成为向下兼容的模式,当有全速USB 1.1) 或者低速(USB 1.0)设备连接到高速(USB 2.0)主机时,主机可以通过分离传输来支持它 们。一条USB 总线上,可达到的最高传输速度等级由该总线上最慢的“设备...
  • 转载>USBHID协议解析

    2021-01-24 09:40:45
    它是USB协议最早支持的一种设备类。HID设备可以作为低速、 全速、高速设备用。由于HID设备要求用户输入能得到及时响应,故其传输方式通常采用中断方式。 在USB协议中,HID设备的定义放置在接口描述符中,USB的设备...

    USB设备中有一大类就是HID设备,即Human Interface Devices,人机接口设备。这类设备包括鼠标、键盘等,主要用于人与计算机进行交互。它是USB协议最早支持的一种设备类。HID设备可以作为低速、 全速、高速设备用。由于HID设备要求用户输入能得到及时响应,故其传输方式通常采用中断方式。
    在USB协议中,HID设备的定义放置在接口描述符中,USB的设备描述符和配置描述符中不包含HID设备的信息。因此,对于某些特定的HID设备,可以定义多个接口,只有其中一个接口为HID设备类即可。
     

    一、HID设备简述

    1.1HID设备的特点

    • 交换的数据储存在称为报表(Report ) 的结构内, 设备的固件必须支持HlD 报表的格式。 主机通过控制和中断传输中的传送和请求报表来传送和接收数据。报表的格式非常灵活。
    • 每一笔事务可以携带小量或中量的数据。低速设备每一笔事务最大是8B ,全速设备每一笔事务最大是64B, 高速设备每一笔事务最大是1024B 。 一个报表可以使用多笔事务。
    • 设备可以在未预期的时间传送信息给主机,例如键盘的按键或是鼠标的移动。所以主机会定时轮询设备,以取得最新的数据。
    • HID 设备的最大传输速度有限制。主机可以保证低速的中断端点每10ms 内最多 1笔事务,每一秒最多是 800B 。保证全速端点每 lms 一笔事务,每一秒最多是64000B 。保证高速端点每 125 us 三笔事务,每一秒最多是 24.576MB 。
    • HID 设备没有保证的传输速率。如果设备是设置在 10ms 的时距,事务之间的时间可能等于或小于 10ms 。除非设备是设置在全速时在每个帧传输数据,或是在高速时在每个微帧传输数据。这是最快的轮询速率,所以端点可以保证有正确的带宽可供使用。

    HID 设备除了传送数据给主机外,它也会从主机接收数据。只要能够符合HlD 类别规范的设备都可以是HID 设备。

    设备除了HlD 接口之外,它可能同时还包含有其他的USB 接口。例如影像显示设备可能使用HID 接口来做亮度、对比度的软件控制,而使用传统的影像接口来传送要显示的数据。 USB 扩音器可以使用实时传输来播放语音,同时使用HID 接口来控制音量、 低音等。

    HID 类别设备的规范文件主要是以下两份:
    Device Class Definition for Human interface Devices
    HID Usage Tables
    其中前者是 HID 的基本规范文件,后者可以是前者的附件,为开发人员提供实际的控制类型的描述。文件是用来定义让主机了解以及使用 HID 数据的数值。这两份文件是由USB Device Working Group 制定的,可以在下面官方网址下载:

    https://www.usb.org/documents?search=&items_per_page=50&page=2

    https://www.usb.org/hid

    1.2.HID 设备的硬件要求

    HID 接口必须符合 Device Class Definition for Human interface Devices 规范内所定义的 HID 类别的需求。在此文件内描述了所需的描述符、传输的频率以及传输的类型等。为了符合规范, HID 接口的端点与描述符都必须符合数个要求。所有的 HID 传输都是使用默认控制管道或是一个中断管道, HID 设备必须有一个中断输入端点来传送数据到主机,中断输出端点则不是必需的。

     

    Control管道用于:

    • 接收和响应USB控制和类数据的请求。
    • 在由HID类驱动程序轮询时传输数据(使用Get_Reportrequest)。
    • 从主机接收数据。

     

    主机与设备之间所交换的数据,可以分成两种类型:

    • 低延迟的数据,必须尽快地到达目的;
    • 配置或其他的数据,没有严格时间限制的需求。

    中断管道是控制管道之外的另一种数据交换的方式,特别适合使用在接收端需要定时或是尽可能及时收到数据的时候。中断输入管道携带数据到主机,中断输出管道则是携带数据到设备。在总线忙的时候,控制管道可能会被延迟,而中断管道保证会有可得到的带宽。 HID 不需要一定有中断输出管道。如果没有中断输出管道,主机会在控制管道上使用HID 设备特有的 Set_Report 请求来传送所有的报表。

    1.3 HID的固件要求

    主机的驱动程序要与 HID 设备通信,设备的固件必须符合下列需求:

    • 设备的描述符必须识别该设备包含有 HID 接口(描述符)。
    • 除了默认控制管道外,固件必须另外支持一个中断输入管道。
    • 固件必须包含一个报表描述符来定义要传送与接收的设备数据。

    如果要传送数据,固件必须支持 Get_Report 控制传输与中断输入传输。如果要接收数据,固件必须支持 Set_Report 控制传输与选择性的中断输出传输。

    所有的 HID 数据都必须使用定义过的报表格式来定义报表中数据的大小与内容。设备可以支持一个或多个报表。在固件中的一个报表描述符用来描述此报表,以及如何使用报表数据的信息。

    在每一个报表中的一个数值,定义此报表是一个输入(Input )、输出(Output )或是特征(Feature )报表。主机在输入报表中接收数据,在输出报表中传送数据,特征报表可以在任何方向传递。
     

     

    二、HID 设备描述符

    2.1 HID设备的描述符

    HID 设备除了支持 USB 设备的 5 种标准描述符之外,还支持 HID 设备特有的 3 种描述符。

    这些描述符是:USB 标准描述符:设备、配置、接口、端点和字符串描述符。
    HID 特有的描述符: HID 、报表(Report )和实体(Physical )描述符。
    从描述符的关联关系看, HID 描述符是关联于接口 。 所以如果一个 HID 设备有 2 个端点,设备不需要每个端点有一个 HID 描述符。

     

    报告描述符描述设备生成的每条数据以及数据实际测量的数据。

     

    例如,报表描述符(Report descriptor)定义描述位置或按钮状态的项。 物品信息用于:

    • 确定输入路由的位置 - 例如,将输入发送到鼠标或操纵杆API。
    • 允许软件为输入分配功能 - 例如,使用操纵杆输入来定位坦克。

    通过检查项目(统称为报告描述符),HID类驱动程序能够确定来自HID类设备的数据报告的大小和组成。
    物理描述符(Physical descriptor)集是可选描述符,其提供关于用于激活设备上的控件的人体的一部分或多个部分的信息。


     

    从前面的 USB 描述符可以看出一个规律,描述符的第一、二字节分别是描述符的长度和类型,描述符的类型字段( bDescriptorType )表明描述符的种类,下表列出了不同描述符的类型字段数值。

    对于一个 HID 设备, 设备描述符与配置描述符没有 HID 特定的信息。 其设备描述符的bDeviceClass 和 bDeviceSubClass 字段的值为 0,接口描述符的 bInterfaceClass 字段值为 03,表示设备的该接口是 HID 类别。在接口描述符中其他包含 HID 特定信息的字段还有子类别码( blnterfaceSubClass )与协议码( blnterfaceProtocol 字段) 。
    在接口描述符中子类别码字段等于 1 表示此设备支持启动接口( Boot Interface )。如果设备有启动接口,即便主机的 HID 没有加载驱动程序,设备也可以使用。这种情形可能发生在计算机是由 DOS 直接启动,在启动时观看系统设置画面或使用 Wndows 的安全模式时。
    含有启动接口的键盘或鼠标可以使用 BIOS 或许多主机支持的默认简单协议。 HID 规范定义了键盘与鼠标的启动接口协议。
    如果设备没有启动接口, 并且接口描述符中协议码字段是 1, 表示设备支持键盘接口,协议码字段是 2,表示支持鼠标接口。接口描述符中协议码字段是 0,表示设备不支持启动协议
    在 HID Usage Tables 规范中定义了键盘与鼠标的启动描述符( Boot Descriptor )。BIOS 不需要从设备中读取描述符,因为它知道启动协议,并且假设设备支持启动协议。所以要启动的设备不需要在固件内包含启动接口描述符,它只要在主机尚未要求在报表描述符中的定义协议时支持启动协议即可。在操作系统加载 HlD 驱动程序后会使用Set_Protocol 请求,将设备由启动协议转换成报表协议。
     

    2.2 HID描述符

    HID 描述符的主要作用是用来识别 HID 通信所使用的额外描述符。 下表是 HID 描述符结构。
     

    偏移量字段字节数数值类型说明
    0bLength1Numeric描述符字节数
    1bDescriptorType1Constant0x21 = HID 描述符
    2bcdHID2NumericHID 规范版本号( BCD )
    4bCountryCode1Numeric硬件设备所在国家的国家代码
    5bNumDescriptors1Numeric类别描述符数目(至少有一个报表描述符)
    6bDescriptorType1Constant类别描述符的类型
    7wDescriptorLength2Numeric报表描述符的总长度
    9[bDescriptorType]...1Constant附加的描述符的类型,可选的
    10[wDescriptorLength]...2Numeric附加的描述符的总长度,可选的
    • bcdHID :设备与其描述符所遵循的 HID 规范的版本号码,此数值是 4 个 16 进制的BCD 格式字符。例如 版本 1.1 的 bcdHID 是 0110h 。
    • bCountryCode: 硬件目的国家的识别码(见下图)。如果不说明,该字段为 0。
    • bDescriptorType : HID 描述符附属的描述符的类型(报表或实体) 。每一个 HID 都必须至少支持一个报表描述符。一个接口可以支持多个报表描述符,以及一个或多个实体描述符。
    • HID 描述符的偏移量为 9 和 10 的 bDescriptorType 和 wDescriptorLength 可以重复存在多个。
       

     

    HID支持3种描述符。

    HID描述符,Report描述符和Physical描述符。

    HID设备的这三种描述符时基于类的描述符,他们的值分别如下:

    展开全文
  • 若要实现真正的USB高速传输,一定要2.0主机与2.0集线器连接。但是如果中间插上了一台1.1集线器,就无法达到这个高速传输的效果。此外,当低速或是全速设各被连接至2.0集线器后,这个集线器会转换两者所需的速度...
  • usb协议栈概述

    2020-12-12 21:51:32
    usb协议栈概述 usb协议栈的信息源头是www.usb.org usb协议栈的所有者是usb...USB1.0和USB1.1支持1.5Mb/s的低速模式和12Mb/bs的全速模式。在USB2.0以上 支持480Mb/s的高速模式。 USB3.0的最大数据传输速率为5Gbps USB
  • USB2.0 协议中文版本

    2011-09-18 16:44:48
    USB2.0 被设计成为向下兼容的模式, 当有全速USB 1.1) 或者低速(USB 1.0)设备连接到高速(USB 2.0)主机时,主机可以通过分离传输来支持它 们。一条 USB 总线上,可达到的最高传输速度等级由该总线上最慢的...
  • USB协议4

    2020-07-31 12:37:28
    当一个低速或全速USB设备连接到一个高速的Hub上时,高速USB主机需要使用Split事务来解决从高速模式到低速和全速模式的切换,Split事务分为SSplit(Start split)和CSplit(Complete Split)事务两种类型。...
  • STM32 USB2.0协议

    千次阅读 2017-05-15 09:22:46
    全速(12Mbps):应用于音频等,在stm32f105-stm32f107,以及stm32f2x支持全速模式 高速(480Mbps):应用视频大容量设备、stm32f2x和stm32f4x等系列支持高速 物理特性 USB使用差分传输模式,两根数据线D+和D-。 差...
  • usb2.0协议.rar

    2009-07-02 14:36:24
    USB2.0 被设计成为向下兼容的模式,当有全速USB 1.1) 或者低速(USB 1.0)设备连接到高速(USB 2.0)主机时,主机可以通过分离传输来支持它 们。一条 USB 总线上,可达到的最高传输速度等级由该总线上最慢的...
  • USB协议规范1.1/2.0/3.0 英文高清完整PDF版

    千次下载 热门讨论 2014-10-04 19:12:53
    USB协议规范1.1--支持USB低速和全速规范(12Mbps) USB协议规范2.0--支持USB高速协议规范(480Mbps) USB协议规范3.0--支持USB超高速协议规范(5Gbps) 本资源包括USB 1.1、2.0以及3.0的协议规范文档。随着USB设备的...
  • USB协议框架概述

    2021-03-19 22:49:30
    网上关于USB协议的文章很多,但往往只讲了基本概念或者某一部分的内容,加之USB协议本身十分庞大,导致许多初学者看完云里雾里的,所以我想写个文章把USB实际开发中涉及到的一些要点简单整理一下 物理层 USB采用...
  • usb协议基础

    千次阅读 2016-12-18 01:33:46
    usb简介usb是一种支持热插拔的高速串行传输总线,使用差分信号来传输数据,高速模式下传输速率为480Mb/S,全速模式为12Mb/S,低速模式为1.5Mb/S,USB支持“总线供电”和“自供电”两种供电模式,在总线模式下,设备...
  • 概念 USB是一种串行通信总线(Universal Serial Bus),经历的版本有USB1.0,USB1.1、USB2.0等。USB是一种主从模式的结构,因此它无法在设备与设备。...不同USB协议版本的对比 版本 低速(LS) 全速...
  • 原文地址::... 相关文章 1、USB学习系列之二——USB设备的插入检测机制----http://blog.csdn.net/yxfabcdefg/article/details/52588472 2、USB协议-设备识别过程----http://blog.csdn.net/h
  • USB2.0 被设计成为向下兼容的模式,当有全速USB 1.1)或者低速(USB 1.0)设备连接到高速(USB 2.0)主机时,主机可以通过分离传输来支持它们。一条 USB 总线上,可达到的最高传输速度等级由该总线上最慢的“设备...
  • USB2.0协议中文版.doc

    2011-03-22 16:22:40
    USB2.0 被设计成为向下兼容的模式,当有全速USB 1.1) 或者低速(USB 1.0)设备连接到高速(USB 2.0)主机时,主机可以通过分离传输来支持它 们。一条 USB 总线上,可达到的最高传输速度等级由该总线上最慢的...
  • 事务(Transaction)USB协议定义了三种不同的事务(Transation),即SETUP事务, IN事务和OUT事务SETUP 事务一次成功的SETUP事务包含3个连续的数据包,分别是令牌包(TOKEN PACKET),数据信息包(DATA PACKET),握手包...
  • 目录 1.HID设备概述 2.HID描述符组成 3.STM32配置描述符集合代码(必须按顺序) 4.HID描述符组成详解 1.HID设备概述 ...USB设备中有一大类就是...在USB协议中,HID设备的类型定义放置在接口描述符中,USB的设备描述符
  • USB学习之一:USB协议基础

    千次阅读 2018-12-25 09:39:28
    USB开发者论坛http://www.usb.org/... 在USB1.0和USB1.1版本中,只支持1.5Mb/s的低速(low-speeed)模式,和12Mb/s的全速(full-speed)模式。在USB2.0又加入了速度更快的(480Mb/s)的高速(high-speed)模式。目前...
  • 随着USB(Universal Serial Bus)技术的发展,特别是高速(480 Mbps)USB2.0协议的出现,几乎所有的PC外设都可以移植到USB上,所以USB的PC外设的发展空间是巨大的,甚至在不久的将来,USB将完全取代异步串口和打印机并口...
  • 2.全速USB传输(帧) 3.高速USB传输(微帧) 上一篇讲解端点描述符的时候提到了帧和微帧的概念,可能很多人会晕,这节课先做下补充,避免大家放弃学习。 1.概念 (1)USB2.0帧和微帧属于物理层时间基准的概念,...

空空如也

空空如也

1 2 3 4 5 ... 9
收藏数 167
精华内容 66
关键字:

usb全速协议