USB协议(三)

作者: kevin_007 | 来源:发表于2017-06-07 13:14 被阅读64次

内容原创,未经本人同意请勿转载。联系本人:jianshu_kevin@126.com

我想通过上文的《USB协议(一)》可以看出,USB虽然好用,但是对于程序员来说,这可是相当不简单的一块硬骨头,要啃下来没有一定的实力估计是很困难了。好的产品都是这样的,把简单留给用户,把复杂留给自己。

谈到通信,肯定就要想到数据线,没错USB通信就靠两根线D+,D-,相当的简单对吧。可是我告诉你对于软件来说可不是这两根线这么简单。对于软件而言USB通信的基本单位端点以及基于端点的管道

端点是USB芯片提供的基本通信单位,主机和设备之间的通信就是通过管道来实现的,管道的两头分别对应:主机的缓存,设备的端点。请看下面这幅图。

一. USB device 的另外一种描述方式

如果单从通信角度来说一个USB device可以这么描述:

device
{
    interface1
    {
        pipe1
        {
            buffer,
            endpoint
        }
        pipe2
        {
            buffer,
            endpoint
        }
        ...
    }
    interface2
    {
        pipe1
        {
            buffer,
            endipoint
        }
        pipe2
        {
            buffer,
            endpoint
        }
        pipe3
        {
            buffer,
            endpoint
        }
        ...
    }
    ...
}

从上图可以看出如下包含关系

  • 管道包含:缓存+端点
  • 接口包含:多个管道
  • 设备包含:多个接口

二. 为什么需要interface

到这里可能有人要问了,有管道了不就可以直接通信了吗,为什么还要封装成接口。这就不得不说很遗憾,endpoint只能单向通信,要么是host->device,要不是devie->host(端点0除外,后面再说)。而设备通信往往都是双向的,所以为了满足设备的功能,USB协议将多个管道组合到一起就形成了一个接口。

三. function对应interface

一个接口就可以完成USB主机和设备之间的通信了,对于普通设备而言,这个就可以看作一个设备了。USB的世界也是这个样子,但是USB这里,一个接口代表一个function,也就是一个USB虚拟设备。

例如:我手上的MTK设备,USB插入后可以枚举出两个串口,一个通AT指令,一个用来抓log。那么这两个虚拟串口就对应两个function,也就是两个接口。

相关文章

  • USB协议(三)

    内容原创,未经本人同意请勿转载。联系本人:jianshu_kevin@126.com 我想通过上文的《USB协议(...

  • USB3.0/3.1/3.2 有什么区别?

    制定USB协议标准的组织叫做USB-IF,这两年被骂得很惨,因为他把USB协议标准弄得很混乱 最初的usb命名: ...

  • TypeScript 旅途2:接口

    接口就像协议规范一样。比如USB协议,而各个厂商可以有不同的实现方式,但是要遵循这个协议,实现出来的USB设备才能...

  • USB4 规范发布,双倍带宽,达到 40 Gbps

    USB Promoter Group 近日宣布推出 USB4 规范,定义了下一代 USB 协议架构并带来双倍带宽,...

  • USB协议(一)

    内容原创,未经本人同意请勿转载。联系本人:jianshu_kevin@126.com 初次接触USB的同学,可能会...

  • USB协议(二)

    内容原创,未经本人同意请勿转载。联系本人:jianshu_kevin@126.com PIPE usb通信的最基本...

  • USB Power Delivery协议实例分析

    本文使用Totalphase出品的PD Analyzer协议分析仪,以Razor手机通过USB-C to USB-...

  • VSF中的通用USB设备协议栈:应用部分

    VSF中实现了一个相对通用的USB设备端协议栈,可以通过移植芯片的USB SIE驱动,来支持不同的MCU。USB设...

  • linux--USB协议

    端点 端点是一个USB设备唯一可以确认的部分,他是主机和设备之间的通信流的重点。每一个USB逻辑设备都包含了一个相...

  • 5. USB协议

    https://blog.csdn.net/songze_lee/article/details/77658094...

网友评论

    本文标题:USB协议(三)

    本文链接:https://www.haomeiwen.com/subject/qqgofxtx.html