USB子系统驱动 USB通信协议 Type A、Type A 3.0、Type C_usb3.0接口定义引脚说明
目录
USB硬件基础
Type A引脚说明
Type A 3.0引脚说明
Type C引脚说明
USB驱动你一定需要知道的事
USB硬件基础
在了解LINUX的USB驱动之前,我们肯定是要了解相关硬件内容的,如下给出了三种常用的USB接口。
Type A引脚说明
USB 2.0 Type A 只有 4 个引脚,定义如下:
但是这个D+跟D-也跟我们常见的差分电压来判断正负不太一样,我们可以看下述内容。
你可以发现D+大于D-时,即为逻辑1,反之则为逻辑0,之前我们在485也说过,主要提高抗干扰能力了,差分电压的作用,至于逻辑电平如何规定,也都是人为遵守的协议了,我们熟知即可。
USB 硬件中,主机端的 D+ 和 D- 线通过 15kΩ 下拉电阻保持默认低电平,用于检测设备是否接入;设备端的 D+ 或 D- 线上接有 1.5kΩ 上拉电阻,用于将线路拉高,通知主机有新设备接入并指示设备的速度类型(D+ 上拉表示全速/高速设备,D- 上拉表示低速设备)。上拉与下拉电阻的配合实现了 USB 接入的自动检测和初步通信初始化。
Type A 3.0引脚说明
USB 3.0 Type A 在 USB 2.0 的基础上增加了 5 个引脚,共 9 个引脚,定义如下:
注:USB 3.0 的引脚使其能够在 SuperSpeed 模式下实现高达 5 Gbps 的数据传输速率。
因此我们可以看到,这个USB3.0其实是一个全双工的协议,因为有TX也有RX而且还是差分,相比之前的USB更强了。
Type C引脚说明
USB Type C 拥有 24 个引脚,支持双向插入,定义如下:
注:
- Type C 引脚支持多种协议(如 USB 2.0、3.x、Thunderbolt、DisplayPort 等)。
CC
引脚用于检测插入方向并管理电源(USB PD)。
这里就是TYPE C的引脚了,可以看到,不管是正插,还是反插,你都可以进行通信的,对比之前的USB接口多出那么多引脚,主要是为了正反插以及增加一路传输协议通道,还有兼容USB2.0协议,比如DP之类的显示设备,C口引脚越多,只是功能上面兼容性的提升,并不是传输速率的提升。
USB驱动你一定需要知道的事
-
USB设备接入检测
- 现象:PC 右下角显示\"发现 Android Phone\",弹出安装驱动程序的提示。
- 原因:
- PC 的 USB 口通过内部硬件机制(D+/D- 线路电平变化)检测到新设备的接入。
- USB 设备内置的上拉电阻(1.5KΩ)将 PC USB 口的 D+/D- 拉高,通知主机有设备接入。
-
接入后的初步识别
- 过程:
- PC 上的 USB 总线驱动程序负责与新接入的设备通信,询问设备类型。
- 设备通过标准协议返回自己的信息(设备描述符)。
- 结果:
- 即使没有安装具体的设备驱动程序,PC 的总线驱动程序也能初步识别设备(如显示“Android Phone”)。
- 过程:
-
设备驱动程序的加载
- 总线驱动程序:负责检测设备、识别设备类型、分配编号并为设备找到合适的驱动程序。
- 设备驱动程序:由用户安装或系统自动加载,用于支持设备的具体功能。
-
USB设备的识别过程
- 标准协议:
- 所有 USB 设备必须遵守 USB 规范。
- 当 PC 发送\"你是什么\"的请求时,设备需按照固定格式返回自己的描述符信息。
- 描述符内容:包括设备类型、制造商、产品 ID 等,用于分类和识别设备。
- 标准协议:
-
设备编号分配
- 默认编号:新接入的 USB 设备初始编号为 0,PC 通过编号 0 与设备通信。
- 分配新编号:总线驱动程序检测设备后,为其分配唯一的编号,用于后续通信。
-
多设备分辨
- 每个接入的 USB 设备都有唯一的编号(地址)。
- PC 通过发送包含设备编号的命令来与指定设备通信。