/***********************************************************************

USB入门系列:

1、USB行业标准介绍

2、USB具体通讯过程

3、USB中端点详细了解

4、USB传输之控制传输

......(待补充)

************************************************************************/

前言
    端点在实际的USB通讯过程种的具体作用与含义十分重要,但是有些难以理解,自己整理一些知识作为备忘。
(注:
1、文中的EP表示Endpoint;

一、端点概念。
    端点(Endpoint),是主机与设备之间通讯数据的接收或来源。主机与设备之间通信时最终会总用于设备上的各个端点,它是主机与设备间通信流的一个逻辑终端。一系列相互独立的端点在一起构成了USB逻辑设备,在系统结构中,位于下方红色方框内:
二、端点的分类
    每个USB设备都有一个唯一的设备地址,设备地址是设备连接上主机时由主机分配的,主机主要依靠这个设备地址对USB设备进行访问。但是在设备内部地址会被分的更细,设备会分出一些端点来,每个端点在设备都会有唯一的端点号,这个端点号是设计设备时给定的。如端点0,端点1等。一个设备最多可以包含16个端点,每个端点的地址为0-15。(网上也有说几十个的,有待考究)    
    其中每个端点地址对应一个方向。例如端点3-IN,端点3-OUT,这两个含义完全不同。但是需要注意其中的一个特殊端点--端点0,每个USB设备必须要有一个端点0,其作用为对设备枚举和对设备进行一些基本的控制功能,端点0也被称为控制端点。并且它与其他的端点还有一个不同之处在于端点0的数据传输方向是双向的,即端点0既可以给主机发送数据,也可以接收主机发送过来的数据,而其它端点均为单向。
    虽然有16个端点,但通常我们只用到3个,如下:
     1)、EP0:做传输配置和控制信息;
     2)、EP1:做数据输入IN_EP;
     3)、EP2:做数据输出OUT_EP。
注意:除了端点0,其余的端点在设备配置之前不能与主机通信,只有向主机报告这些端点的特性并被确认后才能被激活。
三、端点的特性
    一个端点的特性决定了它与客户软件进行传送的类型。一个端点具有以下一些特性:
   ·端点的总线访问频率要求
   ·端点的总线延迟要求
   ·端点的带宽要求
   ·端点的端点号
   ·对错误处理的要求
   ·端点能接收或发送的包的最大长度
   ·端点的传送类型
   ·端点与主机的数据传送方向
四、端点描述符
    USB设备中端点描述符描述了端点信息,端点描述符格式如下:
typedef struct _USB_ENDPOINT_DESCRIPTOR_
{
    BYTE        bLength,
    BYTE        bDescriptorType,
    BYTE        bEndpointAddress,
    BYTE        bmAttributes,
    WORD      wMaxPacketSize,
    BYTE        bInterval
}USB_ENDPOINT_DESCRIPTOR;
各变量具体释义如下:
bLength : 描述符大小.固定为0x07.
bDescriptorType : 接口描述符类型.固定为0x05.
bEndpointType : USB设备的端点地址.Bit7,方向,对于控制端点可以忽略,1/0:IN/OUT.Bit6-4,保留.BIt3-0:端点号.
bmAttributes : 端点属性.Bit7-2,保留.BIt1-0:00控制,01同步,02批量,03中断.
wMaxPacketSize : 本端点接收或发送的最大信息包大小.
bInterval : 轮训数据传送端点的时间间隔.对于批量传送和控制传送的端点忽略.对于同步传送的端点,必须为1,对于中断传送的端点,范围为1-255。
五、端点与管道
1、管道的概念
    管道是主机软件(数据缓存区),和USB设备各各端点之间的数据传输连接,他是两者之间通信流的抽象(实际上数据传输是USB总线接口完成)。管道与USB设备中的端点逐个对应,并且各个管道的数据传输是相互独立的。
2、管道的格式分类
    管带的通信格式分为两种,一种为流,另一种为消息,这两种通信格式不同且互斥。
1)、“流”指不具有USB定义格式的数据流,流通道中的数据是流的形式,也就是该数据内容不具有USB要求的结构。数据从流通道一端流进的顺序与它们从流通道另一端流出时的顺序是一样的(先进先出),并且流通道中的通信流总是单向的。
2)、“消息”指具有某种USB定义格式的数据流。消息通道与端点的关系同流通道与端点的关系是不同的。首先,主机向USB设备发出一个请求;接着,就是数据的传送;最后,是一个状态阶段(这部分即一次命令请求的过程)。为了能够容纳请求/数据/状态的变化,消息通道要求数据有一个格式,此格式保证了命令能够被可靠地传送和确认。消息通道允许双方向的信息流。

六、端点的传输类型

    一个具体的端点只能属于四个传输模式下中的一种。数据传输类型分为四种分别是:控制传输、批量传输、同步传输和中断传输。一般情况下,通常把工作在什么模式下的端点就叫什么端点,例如:控制端点、批量端点、同步端点和中断端点。
    端点0,是设备的默认控制端点,在设备上电后就存在并可以使用,在Set Config之前所有的传输都是通过端点0传输的。
总结:
    关于端点的了解暂时总结这么多,后面有时间继续补充;欢迎大家指正上面可能存在的问题,我会及时改正。
参考:
USB端点(二):https://blog.csdn.net/qq_41637011/article/details/79103647
USB端点的定义:https://blog.csdn.net/qq_41637011/article/details/79103591

USB中的端点详细了解相关推荐

  1. USB开设备开发学习之三:USB中的端点详细了解

    原文:https://blog.csdn.net/go_str/article/details/80985717 前言     端点在实际的USB通讯过程种的具体作用与含义十分重要,但是有些难以理解, ...

  2. USB中的端点详细了解(转)

    原文链接: http://www.360doc.com/content/19/0806/08/7551_853249151.shtml 前言 端点在实际的USB通讯过程种的具体作用与含义十分重要,但是 ...

  3. USB协议详解第6讲(USB描述符-端点描述符)

    目录 1.USB描述符 2.端点描述符组成 3.STM32配置描述符集合代码(必须按顺序) 4.接口描述符组成详解 1.USB描述符 USB描述符有设备描述符.标准配置描述符.接口描述符.端点描述符. ...

  4. Linux USB基础之端点(二)

    Linux USB基础之端点(二) 1 USB端点分类 USB 通讯的最基本形式是通过端点.一个USB端点只能向一个方向传输数据(从主机到设备(称为输出端点)或者从设备到主机(称为输入端点)).端点可 ...

  5. 安装android+手机usb+驱动程序,一加手机驱动怎么安装 一加手机USB驱动手动安装详细教程图解...

    一加手机驱动怎么安装?一加手机的用户目前已知在Win8和Win8.1 X64位系统上,驱动不能自动地.正常地安装,所以需要自己手动安装.手动安装也适用于其他系统无法用万能工具包安装驱动的情况.如果使用 ...

  6. Android manifest文件中的标签详细介绍

    Android manifest文件中的标签详细介绍 概要 每一个Android应用都应该包含一个manifest文件,即AndroidManifest.xml.它包含了程序运行的一些必备信息,比如: ...

  7. 第9课【USB协议】USB总线 接口 端点 管道 数据包 枚举 STM32_USB-FS-Device_Lib V4.1.0

    目录 简介 背景 特点 版本 数据流模型 总线拓扑结构 主/从设备通信流 端点 管道 物理层 接口类型 USB Type-A USB Type-B USB Type-C 引脚定义 4PIN 9PIN ...

  8. ecm工作原理 usb_(转)USB中CDC-ECM的了解和配置

    USB中典型类及子类: 类别 解释 子类 典型应用 IC芯片 备注 视频类 免驱USB摄像头 ECM(p24) 免驱USB网卡 ...... 以前接触过UVC,今天接触了CDC-ECM原理上是一样的, ...

  9. pythonexcel介绍_Python 中pandas.read_excel详细介绍

    Python 中pandas.read_excel详细介绍 #coding:utf-8 import pandas as pd import numpy as np filefullpath = r& ...

最新文章

  1. mariadb自动安装脚本
  2. Cannot send session cache limiter - headers already sent错误解决方法
  3. android透明视频教程,安卓透明教程(Android transparent tutorial).doc
  4. python哪些类型可以作为迭代器_python0.8-----set类型与迭代器
  5. 新浪云python示例_Python Web框架Flask中使用新浪SAE云存储实例
  6. PowerDesigner 中SQL文件、数据库表反向生成PDM
  7. 1313. 解压缩编码列表
  8. 从IT的角度思考BIM(二):模式与框架
  9. 破解class文件的第一步:深入理解JAVA Class文件
  10. 浮点类型float double 以及BigDecimal
  11. openURL的使用(iOS调用系统电话、浏览器、地图、邮件等)
  12. 利用SQL语言实现数据库的静态完整性
  13. 《css权威指南》笔记
  14. html文件里面的中文乱码
  15. 利用阿里云虚拟机作为跳板机实现内网穿透
  16. 台电推出疾霆系列高端NVMe SSD,搭载联芸全新主控高速级读写
  17. 裁判文书网 爬虫 升级最新版本0.7 更新时间2020-12-17
  18. NUC970 裸机USBD驱动(第一章)
  19. Power BI----认识Power BI
  20. 计算机网络水平子系统布线图,图文详解:综合布线系统的组成,很适合新手小白学习!...

热门文章

  1. 需要很多邮箱怎么办?分享几个不错的办法可无限安全生成多个邮箱
  2. 微信h5页面制作总结
  3. 抖音爱心c语言程序,抖音上用记事本编写爱心小程序教程
  4. F - 一卡通大冒险(贝尔数)
  5. VERITA Netbackup日常巡检详细说明
  6. laravel配置语言包,实现网站中英文切换
  7. 《银杏,银杏》原文小说
  8. Springboot整合JDBC和DBUtils,实现简单的增删改查.
  9. 利用AlphaFold进行蛋白质结构预测
  10. JavaME证书的制作和介绍