usb设备地址与端点地址概念区分

USB(Universal Serial Bus,通用串行总线)协议定义了主机与设备之间的通信方式。在USB通信中,"设备地址"(ADDR)和"端点地址"(ENDP)是用于标识通信目标的两个不同概念。

设备地址 (ADDR)
定义:设备地址是USB主机用来唯一标识连接到它的USB设备的7位二进制数。
作用:当一个USB设备首次连接到主机时,它会默认分配一个特殊的地址(通常是0),然后通过枚举过程,主机为该设备分配一个唯一的非零地址。这个地址在整个USB系统中是唯一的,确保主机可以单独与特定的USB设备进行通信。
范围:0到127(7位二进制可以表示的最大值)。
端点地址 (ENDP)
定义:端点地址是USB设备内部的一个逻辑实体,它是数据传输的实际终点或起点。每个USB设备可以有多个端点,每个端点都有自己的特性(如方向、类型等),并由4位二进制数来标识。
作用:端点是用来处理特定类型的数据传输的。例如,一个USB键盘可能有一个用于发送按键信息的输入端点和一个用于接收LED状态更新的输出端点。每个端点都有其特定的功能,并且可以在不同的时间与主机交换不同类型的数据。
组成:端点地址包括3位端点号和1位方向位(0表示OUT,即从主机到设备;1表示IN,即从设备到主机)。因此,理论上一个设备最多可以有16个端点(8个输入和8个输出)。
范围:0到15(4位二进制可以表示的最大值),但实际使用的端点号通常是从0到14,因为端点15保留给特殊用途。

USB主机通过一个称为“枚举”(Enumeration)的过程来获取连接设备的详细信息,包括其内部端点地址。枚举是USB设备连接到主机后自动进行的一个初始化过程,在这个过程中,USB主机与设备交换一系列标准请求,以确定设备的功能和配置。

枚举过程中的关键步骤:
默认地址:当USB设备首次连接到主机时,它被赋予一个默认地址0。此时,设备只能响应一些特定的标准请求,这些请求用于收集设备的基本信息。
获取描述符:主机向设备发送Get Descriptor请求,要求设备提供其描述符。描述符是包含有关设备信息的数据结构,包括设备描述符、配置描述符、接口描述符和端点描述符等。其中,端点描述符包含了每个端点的属性,如端点地址、传输类型(控制、批量、中断或等时)、最大包大小和轮询间隔(对于中断和等时端点)。
分配唯一地址:在获取了设备描述符之后,主机为该设备分配一个唯一的非零地址,并通过Set Address请求通知设备使用新地址。从这一刻起,所有针对该设备的通信都将使用新的地址。
配置设备:接下来,主机选择一个配置(如果设备支持多个配置),这通常通过Set Configuration请求完成。一旦配置被选定,设备的所有功能都变得可用,包括其所有的端点。
端点识别:通过解析端点描述符,主机了解到每个端点的具体信息,包括端点号、方向(IN/OUT)、传输类型等。这样,主机就知道了设备内部有哪些端点以及它们的特性,从而可以正确地与这些端点进行数据交换。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值