zoukankan      html  css  js  c++  java
  • USB开发者培训(2)架构、系统、协议和供电

    二、架构、系统、协议和供电

    1.USB系统结构

     

    2.USB拓扑结构

    • USB总线基于分层的星状拓扑结构
    • Hub为中心,连接周围设备
    • 总线上最多可连接127个设备
    • Hub串联数量最多5个
    • 线缆长度最长5米
     

    3.USB拓扑结构示例

     

    4.USB逻辑部件

     
     

    5.USB设备供电方式

    1)Two possible power configurations
    • Self-powered: power provided from external power-supply
    • Bus-powered: power provided from VBUS (5v)
    2)对总线供电设备,才区分低功耗和高功耗USB设备之分
    For bus-powered device, two options are possible:
    • Low-power devices :maximum power consumption is 100mA
    • High-power devices :maximum power consumption is 100mA during bus enumeration and 500mA after configuration
    3)During device enumeration, the device indicates to host its power configuration (self-powered/bus-powered) and its power consumption in the device configuration descriptor (see slide after)
     

    6.USB配置描述符(以Joystick为例)

    Configuration Descriptor
    0x09,
    /* 描述符的长度: 9字节 */
    USB_CONFIGURATION_DESCRIPTOR_TYPE,
    /* 描述符的类型: 0x02 配置描述符(Configuration) */
    JOYSTICK_SIZ_CONFIG_DESC, 0x00,
    /* 完整的描述符包括接口描述符、端点描述符和类描述符的长度 */
    0x01,
    /* 配置所支持的接口数目: 1*/
    0x01,
    /* 用SetConofiguration()选择此配置,所指定的配置号: 1*/
    0x00,
    /* 用于描述此配置的字符描述符的索引号: 0 */
    0xE0,
    /* 供电配置: B7(1 保留), B6(自供电), B5(远程唤醒), B4-B0(0 保留) */
    0x32,
    /* 最大功耗,以2mA为单位计算: 0x32表示 50×2 =100mA */
     
     

    7.USB挂起模式

    • USB device should enter in USB Suspend mode when the bus is idle for more than 3 ms 该【USB挂起模式】 是针对USB设备来说的
    • In suspend mode, when the device is bus powered , the current drawn from VBUS power shouldn’t exceed 2.5mA
    • USB host prevents device from entering in suspend mode by periodically issuing Start of Frame (SOF) or Keep Alive for LS
      • For High-speed, SOF is sent every micro-frame 125us +/- 65ns
      • For Full-speed, SOF is sent every frame 1ms +/- 500ns
      • For Low-speed, Keep Alive (End of Packet) is sent every 1ms in absence of low-speed data
    • Exist from Suspend mode can be USB设备要退出【挂起模式】可以由Host唤醒,或者自己唤醒
      • Initiated from host by issuing the resume signaling
      • Initiated from device by issuing the remote wakeup signaling
     

    8.USB 连接器

    1)标准接口/Mini接口
     
    2)Micro接口
     

    9.USB总线信号

    USB使用的是差分传输模式,两个数据线D+和D-
    • 差分信号1: D+ > VOH (2.8V) and D- < VOL(0.3V)
    • 差分信号0: D- > VOH and D+ < VOL
    • 复位信号(Reset): D+ and D- < VOL for >= 10ms
    • IDLE状态: J 状态
    • 恢复信号(Resume): K 状态
    • SOP:从IDLE状态切换到K状态
    • EOP:持续2位时间的SE0信号,后跟随1位时间的J状态
    • SYNC: 3个重复的KJ状态切换,后跟随2位时间的K状态
     

    10.USB设备的插入检测和速度检测

    Full/high Speed: Pull-up on D+
     
    Low Speed: Pull-up on D-
    • The 1.5K pull-up allows the host to detect the device attachment and its supported speed
    • High-speed device is detected first as full-speed device then high-speed capability is detected through bus handshakemechanism called “chirp sequence”
     
     

    11.连接和断开连接

    1)没有设备连上主机时
    • D+和D-数据线上的下拉电阻起作用,使得二者都在低电平;主机端看来就是个SE0状态;同样地,当数据线上的SE0状态持续一段时间了,就被主机认为是断开状态
    2)设备连上主机时
    • 当主机检测到某一个数据线电平拉高并保持了一段时间,就认为有设备连上来了
    • 主机必需在驱动SE0状态以复位设备之前,立刻采样总线状态来判断设备的速度
     
    FS/HS设备连上
     
    LS设备连上
     
    12.数据编解码和位填充
    1)USB采用NRZI(非归零编码)对发送的数据包进行编码
    • 输入数据0, 编码成“电平翻转”
    • 输入数据1, 编码成“电平不变”
    • 编码出来的序列,高电平: J状态;低电平: K状态
    2)位填充是为了保证发送的数据序列中有足够多的电平变化
    • 填充的对象是(输入数据),即先填充再编码
    • 数据流中每6个连续的“1”,就要插入1个“0”,从而保证编码数据出现电平变化
    • 接收方负责解码NRZI码流,然后识别出填充位,并丢弃它们

     12.USB传输: Packet、 Transaction、 Transfer

    12.1 Packet的组成

    12.2 Packet的内容

     

    Packet分四大类:

    • 命令 (Token) Packet
    • 帧首 (Start of Frame) Packet
    • 数据 (Data) Packet
    • 握手 (Handshake) Packet

    不同类型包,以上的组成部件有所不同

    12.2.1 Packet内容之PID

     

     12.2.2 Packet内容之地址

     12.2.3 Packet内容之帧号

    帧号

    • 11 位
    • 主机每发出一个帧,帧号都会自加1
    • 当帧号达到7FFH时,将归零重新开始计数
    • 仅在每个帧的帧首传输一次SOF包

    帧格式

    12.2.4 Packet内容之数据

    根据传输类型的不同,数据域的数据长度从0到1024字节不等:

    12.2.5 Packet内容之CRC

    Token CRC:

    • 计算地址域和帧号域的CRC
    • G(X) = X5 + X2 + 1

    Data CRC:

    • 计算数据域数据的CRC
    • G(X) = X16 + X15 + X2 + 1

    12.3 Packet的类型

    12.3.1 Packet类型之Token Packet

    12.3.2 Packet类型之SOF Packet

    12.3.3 Packet类型之DATA Packet

     12.3.4 Packet类型之Handshake Packet

    12.4 Data PID toggle

    12.4.1 Data PID toggle 用于数据的同步

    12.4.2 Data PID toggle 用于数据的重发

    12.5 USB传输:Transaction

    1)Transaction可以分成三类

    • Setup transaction: 主机用来向设备发送控制命令
    • Data IN transaction: 主机用来从设备读取数据
    • Data OUT transaction: 主机用来向设备发送数据

    :总是由主机发起

    2)Transaction的packet组成

    • Token packet: 总是由主机发出
    • Data packet: 包含此次transaction的数据负载
    • 可选的Handshake packet

    12.6 USB传输:Transfer

    注:以上摘自《STM32 USB 开发者培训》,2013.5

  • 相关阅读:
    正则表达式体会
    checkbox、全选反选,获取值
    弹出窗体值回调
    页面点击任意js事件,触发360、IE浏览器新页面
    XML增、删、改
    面试题
    行列转换
    DataTable 和Json 字符串互转
    前台js与后台方法互调
    文件与base64二进制转换
  • 原文地址:https://www.cnblogs.com/rockyching2009/p/14231825.html
Copyright © 2011-2022 走看看