首页 > 其他分享 >USB子系统驱动 USB通信协议 Type A、Type A 3.0、Type C

USB子系统驱动 USB通信协议 Type A、Type A 3.0、Type C

时间:2025-01-05 16:02:05浏览次数:3  
标签:USB 引脚 正极 通信协议 电源 Type 设备

目录

USB硬件基础

Type A引脚说明

Type A 3.0引脚说明

Type C引脚说明

USB驱动你一定需要知道的事


USB硬件基础

在了解LINUX的USB驱动之前,我们肯定是要了解相关硬件内容的,如下给出了三种常用的USB接口。

特性Type A (2.0)Type A 3.0Type C
接口形状长方形,单向插入与 Type A 2.0 相同椭圆形,可双向插入
引脚数量4924
数据传输速率高速模式最高 480 Mbps超高速模式最高 5 Gbps 或 10 Gbps (3.1)高达 40 Gbps (Thunderbolt 3/4)
供电能力5V,最大 500 mA(2.5W)5V,最大 900 mA(4.5W)支持 USB PD,最高 20V,5A(100W)
兼容性向下兼容向下兼容 2.0向下兼容 USB 2.0 和 3.x
是否支持 OTG支持,但功能有限支持,但功能有限支持完整 OTG 功能
使用寿命插拔约 1,500 次插拔约 1,500 次插拔约 10,000 次
多功能性仅支持 USB 信号传输仅支持 USB 信号传输支持视频、音频、数据和供电多种协议
方向性单向插入单向插入双向插入,方便使用
是否支持 Thunderbolt不支持不支持支持 Thunderbolt 3 和 4(部分设备)
典型应用场景鼠标、键盘、打印机、U盘等外设高速存储设备、外接硬盘、摄像头等高速设备智能手机、平板、笔记本充电和数据传输等

Type A引脚说明

USB 2.0 Type A 只有 4 个引脚,定义如下:

引脚编号名称描述功能
1VBUS电源正极 (+5V)提供设备电源
2D-差分数据负极传输 USB 数据
3D+差分数据正极传输 USB 数据
4GND地(电源负极)提供电源回路

但是这个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 个引脚,定义如下:

引脚编号名称描述功能
1VBUS电源正极 (+5V)提供设备电源
2D-差分数据负极USB 2.0 数据传输
3D+差分数据正极USB 2.0 数据传输
4GND地(电源负极)提供电源回路
5StdA_SSRX-超高速接收负极(SuperSpeed RX -)USB 3.0 数据接收
6StdA_SSRX+超高速接收正极(SuperSpeed RX +)USB 3.0 数据接收
7GND_DRAIN屏蔽接地屏蔽和地回路
8StdA_SSTX-超高速发送负极(SuperSpeed TX -)USB 3.0 数据发送
9StdA_SSTX+超高速发送正极(SuperSpeed TX +)USB 3.0 数据发送

:USB 3.0 的引脚使其能够在 SuperSpeed 模式下实现高达 5 Gbps 的数据传输速率。

因此我们可以看到,这个USB3.0其实是一个全双工的协议,因为有TX也有RX而且还是差分,相比之前的USB更强了。

Type C引脚说明

USB Type C 拥有 24 个引脚,支持双向插入,定义如下:

引脚编号名称描述功能
A1GND接地电源回路
A2SSTXp1超高速发送正极(通道 1)USB 3.x 数据发送
A3SSTXn1超高速发送负极(通道 1)USB 3.x 数据发送
A4VBUS电源正极提供电源
A5CC1配置通道 1检测连接方向和电源管理
A6D+差分数据正极USB 2.0 数据传输
A7D-差分数据负极USB 2.0 数据传输
A8SBU1辅助信号通道 1支持音频、视频信号
A9VBUS电源正极提供电源
A10SSRXn1超高速接收负极(通道 1)USB 3.x 数据接收
A11SSRXp1超高速接收正极(通道 1)USB 3.x 数据接收
A12GND接地电源回路
B1GND接地电源回路
B2SSRXp2超高速接收正极(通道 2)USB 3.x 数据接收
B3SSRXn2超高速接收负极(通道 2)USB 3.x 数据接收
B4VBUS电源正极提供电源
B5CC2配置通道 2检测连接方向和电源管理
B6D+差分数据正极USB 2.0 数据传输
B7D-差分数据负极USB 2.0 数据传输
B8SBU2辅助信号通道 2支持音频、视频信号
B9VBUS电源正极提供电源
B10SSTXn2超高速发送负极(通道 2)USB 3.x 数据发送
B11SSTXp2超高速发送正极(通道 2)USB 3.x 数据发送
B12GND接地电源回路

  1. Type C 引脚支持多种协议(如 USB 2.0、3.x、Thunderbolt、DisplayPort 等)。
  2. 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 通过发送包含设备编号的命令来与指定设备通信。

标签:USB,引脚,正极,通信协议,电源,Type,设备
From: https://blog.csdn.net/weixin_64593595/article/details/144872657

相关文章

  • Verilog6_串行通信协议
    一、通信协议概述1.串行通信与并行通信串行通信(serialcommunication):数据通过单根数据线一位一位地传输;成本低但速度慢;适用于远距离传输,用于计算机与外设之间,如UART、\(I^2C\)、SPI并行通信(parallelcommunication):通过多根数据线同时将数据的所有位一次传输完成;成本高但传......
  • 5.3 Type inference 类型推断
    https://lalrpop.github.io/lalrpop/tutorial/003_type_inference.htmlOK,nowthatweunderstandthecalculator1example,let'slookatsomeoftheshorthandsthatLALRPOPofferstomakeitmoreconcise.Thiscodeisfoundinthecalculator2demo.GPT......
  • 箭头函数有prototype吗?为什么?
    箭头函数在JavaScript中没有自己的prototype属性。这是由箭头函数的设计决定的,主要基于以下几个原因:语法简洁性:箭头函数被设计为更简洁的函数表达式,主要用于简单的操作,而不是作为复杂对象或构造函数的定义。因此,去除prototype属性有助于保持箭头函数的简洁性。不绑定this:箭头函......
  • 在TypeScript中枚举和常量枚举有什么区别?
    在TypeScript中,枚举(Enums)和常量枚举(ConstEnums)都是用于定义一组命名的常量值的数据类型。然而,它们在编译时的行为和使用上存在一些关键差异。1.枚举(Enums)枚举是TypeScript提供的一种特殊的数据类型,它允许我们为一组数值定义友好的名字。默认情况下,枚举中的第一个成员被赋......
  • 在TypeScript中如何实现继承?
    在TypeScript中,可以通过extends关键字来实现类的继承。以下是一个简单的示例:classAnimal{name:string;constructor(name:string){this.name=name;}speak(){console.log(`${this.name}makesanoise.`);}}classDogext......
  • 在TypeScript中as语法是什么?
    在TypeScript中,as是一个类型断言操作符,它允许开发者明确地告诉TypeScript编译器某个值的类型。类型断言在TypeScript中是一种告诉编译器“我知道我在做什么,这个值就是这个类型”的方式。当你在TypeScript中遇到类型不明确的情况,或者TypeScript的类型推断与你的预期不符时,你可以......
  • 在TypeScript中说说你对声明合并的理解
    在TypeScript中,声明合并是一个重要的概念,它允许将多个具有相同名称的声明合并为一个声明。这一特性为前端开发提供了更大的灵活性和代码组织性。以下是我对TypeScript中声明合并的理解:声明合并的定义:声明合并是指TypeScript编译器在编译过程中,将程序中多处出现的同一名字的两......
  • 在TypeScript中tsconfig.json有什么作用?
    在TypeScript中,tsconfig.json文件是一个非常重要的配置文件,它用于指定TypeScript代码编译时的各种选项和目标。以下是tsconfig.json在前端开发中的主要作用:决定编译输出:通过tsconfig.json,可以设定TypeScript代码编译后输出的JavaScript版本,如ES3、ES5、ES6等。这确保了编译后的......
  • 你是如何编译TypeScript的文件?
    在前端开发中,编译TypeScript文件通常涉及几个步骤和工具。以下是一个基本的指南,介绍如何设置和编译TypeScript文件:1.安装Node.js和npm首先,确保你的开发环境中安装了Node.js和npm(Node.js的包管理器)。这些工具是前端开发的基础,并且npm用于安装TypeScript编译器和......
  • 在TypeScript中解释下rest参数的作用及规则
    在TypeScript(以及JavaScriptES6+)中,rest参数(...args)允许你将一个不定数量的参数作为一个数组传入函数。这在处理可变数量的参数时非常有用,尤其是当你不知道会有多少参数被传入函数时。作用:收集参数:rest参数可以收集函数被调用时传入的额外参数,并将它们放入一个数组中。灵......