zoukankan      html  css  js  c++  java
  • usb 驱动

    usb 驱动学习总结:

     


    usb 采用分层的拓扑结构,金字塔型,最多是7层。
    usb 是主从结构,主和主或者从和从之间不能交换数据。理论上一个usb主控制器最多可接127个设备,协议规定每个usb设备具有一个7bit的地址,范围是[0,127], 0地址是保留给为初始化的设备用的。

    一个完整的USB数据传输过程如下:

    下行:
    USB主控制器发出命令和数据 -》 根hub -》子hub或者usb 设备。
    上行:
    设备接收到数据,处理返回数据和信息 -》 上一层hub -》上一层hub...-》主控制器。
    hub 集线器可以扩展出更多的usb接口,但是是不能扩展出更多的带宽。

    Usb2.0 插头:

    USB-A: 指向主控制器,上行方向。

    USB-B: 指向设备和hub, 下行方向。

    usb3.0 插头:

    上图是标准的usb3.0 A接口。
    micro的接口,这里不记录,需要的时候查阅。

    可以看到usb 主要有四根线, VBUS, D+, D-, GND.

    可以看到GND和VBUS比D-,D+要长一些,这是专门为热插拔而设计的硬件结构。
    当插入时:
    先接通GND和VBUS ,然后接通数据线。
    拔下时:
    先断开数据线,再断开GND和VBUS

    这就保证了在插拔时,不会出现有数据信号而无电源的情况.如果数据数据线早于电源线接通,则可能会让芯片I/O引脚电压比电源电压高,从而进入芯片闩锁-latch up 现象, 一旦进入这个状态,轻则不能工作,重则芯片过流,过热烧毁。要解除latch up现象,必须断开电源,重新上电。

    usb信号线的颜色: VBUS:红色 D-:白色 D+:绿色 GND:黑色

    参考文献:
    http://www.totalphase.com/support/articles/200472426#s1.1

  • 相关阅读:
    用redux-thunk异步获取数据
    用react + redux + router写一个todo
    用react+redux写一个todo
    给产品经理算的一卦。。。
    不知道为什么,我这里出了问题
    通过回调函数阻止进程创建(验证结束,方案完全可行)
    内核回调的触发时机
    我犯下的错误
    搬家完成
    sqlmap从入门到精通-第七章-7-14 绕过WAF脚本-overlongutf8.py&overlongutf8more.py
  • 原文地址:https://www.cnblogs.com/biglucky/p/5547806.html
Copyright © 2011-2022 走看看