USB协议概述

USB协议有很多博主讲的很详细了,我这里就是按照我个人的理解总结下,本文章倾向于总结结构,关于结构中的每个字节的具体含义推荐大家还是去找手册,我这里只是一笔带过。

本文章借鉴了其他博主的一些内容,侵删!!!!

1 USB协议术语

首先来看下USB通信的简单框图

如上图所示,左边是主机(上位机),右边是USB设备,对于USB协议来说,整个通信链路上,只能有一个主机,剩下的都是从机,一个主机最多挂载127的设备,为什么是127个设备呢,这个是和协议中的一个指令参数有关,后续我们再说。

1.1配置(Configuration)

        一个USB设备可以有多种配置,不同的配置对应于完全不同的功能,比如一会是作为U盘用,一会是作为网卡用,这就是两个不同的配置。

        主机可以控制设备选择哪个具体的配置,但是设备当前只能选择一个配置。​一般1个USB设备只包含一个配置。

1.2 接口(Interface)

配置下一级是接口     

一个配置可以有多个接口,每个接口都是这个配置下的一个小的功能,比如UVC类USB,分为 控制通信 interface功能和数据interface功能,比如,一个打印机可以有一个接口用于打印,另一个接口用于管理。

1.3 End point (ep)端点

接口下一级是端点

   一个接口完成一种功能,每种接口(功能)配有1个或者多个端点,多个端点共同完成某个接口的功能。

        端点和主机之间的通信 线路 被称之为 pipes(管道)。

        主机和USB设备通信,实际上是要指定和USB设备中的哪个端点通信,因为一个USB设备可以支持多个不同的端点,每个端点都可以传输不同的数据,这些端点共享USB的带宽,(因为物理链路上就只有那么几根,速率也是固定的)

每个USB设备最多支持16个端点同时每个USB设备都必须支持端点0,因此用户最多只能多加15个端点。注意除了控制端点0是双向的以外,其余的每个端点的方向是单向的,要么是IN,要么是OUT,不能同时IN  OUT。

为什么是16个端点和127个USB设备呢,这个是由 USB通信协议规定的,USB通信协议的最基本单位是包(packet),一个包的基本格式如下图,下图中的ADDR中的7bit是USB设备地址,就是指是和哪个USB设备通信的,4bit ENDP是端点号,端点号是指和USB设备中的哪个端点通信的。

端点的分类

1 Control Endpoint: 端点0,最基本的控制通信指令传输。
2. Bulk Endpoint: 用于大批量数据传输的端点
3. Interrupt Endpoint: 用于低延迟的中断传输端点
4. Isochronous Endpoint: 同步端点,用于对延迟要求比较低的场景,比如同步视屏,这些场景可以丢数据,但是不能有延迟

上述术语结构可以如下图所示:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值