Linux内核中Typec CC检测原理及主从模式切换原理

news2024/12/29 4:26:12

一,Typec CC引脚定义

在这里插入图片描述

可以看到,数据传输主要有TX/RX两组差分信号,CC1和CC2是两个关键引脚,作用很多:
• 探测连接,区分正反面,区分DFP和UFP,也就是主从
• 配置Vbus,有USB Type-C和USB Power Delivery两种模式
• 配置Vconn,当线缆里有芯片的时候,一个cc传输信号,一个cc变成供电Vconn
• 配置其他模式,如接音频配件时,dp,pcie时

电源和地都有4个,这就是为什么可以支持到100W的原因。

二、基本概念

DFP(Downstream Facing Port):即Host端,是数据的接收方。
UFP(Upstream Facing Port):即Device端,是数据的发送方。
DRP(Dual Role Port):双角色端口,既可以作为DFP,也可以作为UFP。在建立连接之前,DRP的角色在DFP和UFP之间切换。如果两个DRP连接,会先随机确定一种角色后开始建立连接,之后可以通过USB协议协商进行动态切换。

三、CC检测原理

Type-C连接器中有两个管脚CC1和CC2,它们用于识别连接器的插入方向以及不同的插入设备。CC检测原理主要依赖于这两个管脚上的电压和电阻变化。

DFP端:
DFP的CC1和CC2信号上都必须有上拉电阻Rp,上拉到5V或3.3V,或者CC1和CC2都用电流源上拉。目的是在插入后,能检测到CC1或CC2上的电压,进而判断是否翻转以及DFP的电流能力。

UFP端:
UFP的CC1和CC2管脚都要有一个下拉电阻Rd到GND(或者使用电压钳位)。

检测过程:
当Type-C线缆插入时,DFP会根据两根CC线上的电压变化来判断是否已经插入设备,并通过判断哪根CC线上有下拉电阻来判断方向。
如果CC1引脚检测到有效的Rp/Rd连接(对应的电压),则认为电缆连接未翻转;如果CC2引脚检测到有效的Rp/Rd连接(对应的电压),则认为电缆连接已翻转。
“有效的Rp/Rd连接”指在CC上形成了有效的电压。CC检测芯片会检测这个电压,通过判断电压范围来决定下一步操作。

DFP可根据两根CC线上的电压,判断是否已经插入设备。通过判断哪根CC线上有下拉电阻来判断方向,下图的说明已经非常清晰。
在这里插入图片描述

如果CC1引脚检测到有效的Rp/Rd连接(对应的电压),则认为电缆连接未翻转。
如果CC2引脚检测到有效的Rp/Rd连接(对应的电压),则认为电缆连接已翻转。

“有效的Rp/Rd连接”指在CC上形成了有效的电压。

3.1 DFP的上拉电阻Rp

DFP的CC1和CC2信号上都必须有上拉电阻Rp,上拉到5V或3.3V。或者CC1和CC2都用电流源上拉。最终的目的是在插入后,能检测到CC1或CC2上的电压,进而判断是否翻转以及DFP的电流能力。如下是所有可能的配置。可以选择右边三列中的任何一列作为上拉方式。
在这里插入图片描述

3.2 UPF的Rd

UFP的CC1和CC2管脚都要有一个下拉电阻Rd到GND(或者使用电压钳位)。Rd的处理方式如下表。
在这里插入图片描述

3.3 VCONN电源管理

带电子标签的线缆中,其中一个CC管脚被更名为VCONN,用于给电子标签芯片供电。VCONN的允许范围是4.75V~5.5V,要求供电能力是1W。默认情况下,DFP提供这个电源。如果两个DRP连接,则双方可以通过USB PD协议协商来交换VCONN供电方。
在这里插入图片描述

如果其中一个CC引脚上检测到有效的Rp/Rd连接,则VCONN电源可以接到另一个对应的CC引脚。
如果其中一个CC引脚上检测到有效的Rp/Rd连接,先检查另一个CC引脚是否也有Rp/Ra连接,然后再提供VCONN。
先检测是否有Ra存在,如果有说明需要Vconn供电,此时再提供Vconn。检测过程不需要Vconn存在。
注意,每一个CC引脚内部都有一个开关,轮训CC和VCONN功能,下图是一个典型的连接方式:
在这里插入图片描述

四,模式切换原理

DRP模式切换流程:

DRP在待机模式下会不断在DFP和UFP之间切换。切换时,DRP会改变CC线上的电阻值,以模拟DFP或UFP的状态。
当检测到有设备插入时,DRP会根据CC线上的电压变化来确定插入设备的角色(Host或Device)。
根据确定的角色,DRP会切换到相应的模式,并配置相应的数据传输模式和电源管理状态。

连接检测阶段

电压检测:
    当有设备插入时,DFP端会立即检测CC1和CC2管脚上的电压变化。
    如果其中一个CC管脚检测到有下拉电阻Rd存在(即电压发生变化),则说明有设备插入。

方向判断:
    根据检测到下拉电阻的CC管脚(CC1或CC2),可以判断电缆的插入方向。
    如果CC1检测到下拉电阻,则认为电缆未翻转;如果CC2检测到下拉电阻,则认为电缆已翻转。

角色协商:
    在确定设备插入后,DRP会通过与对方设备的CC线进行通信,协商确定当前设备是作为Host还是Device。
    协商过程中,双方会交换各自的角色信息,并达成一致。

五,总结工作流程

DFP (Downstream Facing Port)也就是主,UFP (Upstream Facing Port)为从。除了DFP、UFP,还有个DRP (Dual Role port),DRP可以做DFP也可以做UFP。当DPR接到UFP,DRP转化为DFP。当DRP接到DFP,DRP转化为UFP。两个DRP接在一起,这时就是任意一方为DFP,另一方为UFP。
在DFP的CC pin有上拉电阻Rp,在UFP有下拉电阻Rd。未连接时,DFP的VBUS是无输出的。连接后,CC pin相连,DFP的CC pin会检测到UFP的下拉电阻Rd,说明连接上了,DFP就打开Vbus电源开关,输出电源给UFP。而哪个CC pin(CC1,CC2)检测到下拉电阻就确定接口插入的方向,顺便切换RX/TX。
电阻Rd=5.1k,电阻Rp为不确定的值,根据前面的图看到USB Type-C有几种供电模式,靠什么来甄别? 就靠Rp的值,Rp的值不一样,CC pin检测到的电压就不一样,然后来控制DFP端执行哪种供电模式。
需要注意的是,上图里画了两个CC,实际上在不含芯片的线缆里只有一根cc线。
含芯片的线缆也不是两根cc线,而是一根cc,一根Vconn,用来给线缆里的芯片供电(3.3V或5V),这时就cc端没有下拉电阻Rd,而是下拉电阻Ra,800-1200欧。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2267248.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

uniapp通过v-if进行判断时,会出现闪屏?【已解决】

1.问题:按钮切换时,通过v-if来判断,会出现闪烁情况,影响用户体验 2.v-if 闪烁问题可能的原因 ‌条件切换频繁‌:如果 v-if 指令的条件在短时间内频繁切换,会导致元素不断被销毁和重新创建,从而…

webrtc获取IceCandidate流程

在WebRTC(Web Real-Time Communication)中,ICECandidate是一个关键概念,它用于描述在建立点对点(P2P)连接时可以考虑的潜在通信端点。以下是关于WebRTC中ICECandidate的详细解释: 一、ICECandidate的定义 ICECandidate对象通常包含以下关键属性: foundation:用于唯一…

计算机网络习题(第1章 概论 第2章 数据通信基础)

第1章 概论 1、计算机网络 2、互联网 3、计算机网络体系结构 分层模型 OSI/RM 7层模型 TCP/IP 5层模型 协议、PDU、SDU、SAP等术语 数据封装(计算) 第2章 数据通信基础 1、数据通信系统组成 2、主要性能指标 数据传输速率 码元速率 时延 3…

Springboot项目下面使用Vue3 + ElementPlus搭建侧边栏首页

Springboot项目下面、在html 页面 Vue3 ElementPlus 搭建侧边栏首页 1、效果图 2、static 文件下面的项目结构 3、代码实现 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>首页</title><…

【C++11】可变参数模版

目录 一、可变参数模版 1.1 基本语法及原理 1.2 包拓展 1.3 empalce系列接口 一、可变参数模版 之前我们在C语言中就学过可变参数&#xff0c;但是模版类型是固定的&#xff0c;怎么变呢&#xff1f;这里c11就给出了可变参数模版 1.1 基本语法及原理 C11支持可变参数模…

FFmpeg在python里推流被处理过的视频流

链式算法处理视频流 视频源是本地摄像头 # codinggbk # 本地摄像头直接推流到 RTMP 服务器 import cv2 import mediapipe as mp import subprocess as sp# 初始化 Mediapipe mp_drawing mp.solutions.drawing_utils mp_drawing_styles mp.solutions.drawing_styles mp_holis…

我的秋招总结

我的秋招总结 个人背景 双非本&#xff0c;985硕&#xff0c;科班 准备情况 以求职为目的学习Java的时间大概一年。 八股&#xff0c;一开始主要是看B站黑马的八股文课程&#xff0c;背JavaGuide和小林coding还有面试鸭。 算法&#xff0c;250&#xff0c;刷了3遍左右 项目&…

C++:单例模式

创建自己的对象&#xff0c;同时确保对象的唯一性。 单例类只能有一个实例☞静态成员static☞静态成员 必须类外初始化 单例类必须自己创建自己的唯一实例 单例类必须给所有其他对象提供这一实例 静态成员类内部可以访问 构造函数私有化☞构造函数私有外部不能创建&#x…

RBTree(红黑树)

目录 红黑树的概念 红黑树的性质 红黑树节点的定义 红黑树的插入 1. 按照二叉搜索的树规则插入新节点 2. 检测新节点插入后&#xff0c;红黑树的性质是否造到破坏 红黑树的检测 红黑树的删除 红黑树和AVL树的比较 红黑树的概念 红黑树&#xff0c;是一种二叉搜索树&…

linux自动化一键批量检查主机端口

1、准备 我们可以使用下面命令关闭一个端口 sudo iptables -A INPUT -p tcp --dport 端口号 -j DROP我关闭的是22端口&#xff0c;各位可以关其它的或者打开其它端口测试&#xff0c;谨慎关闭22端口&#xff01;不然就会像我下面一样握手超时&#x1f62d;&#x1f62d;&…

Python大数据可视化:基于python大数据的电脑硬件推荐系统_flask+Hadoop+spider

开发语言&#xff1a;Python框架&#xff1a;flaskPython版本&#xff1a;python3.7.7数据库&#xff1a;mysql 5.7数据库工具&#xff1a;Navicat11开发软件&#xff1a;PyCharm 系统展示 管理员登录 管理员功能界面 价格区间界面 用户信息界面 品牌管理 笔记本管理 电脑主机…

AEO海关认证的注意事项

AEO海关认证的注意事项繁多且至关重要&#xff0c;企业需细致准备&#xff0c;确保万无一失。 首先&#xff0c;企业需深入研读相关政策文件&#xff0c;如《中华人民共和国海关注册登记和备案企业信用管理办法》及《海关高级认证企业标准》&#xff0c;以政策为指引&#xff0…

MySQL如何只取根据某列连续重复行的第一条记录

前言 MySQL如何只取根据某列连续重复行的第一条记录&#xff0c;条件&#xff1a;某列、连续、验重 建表准备 DROP TABLE IF EXISTS test; CREATE TABLE test (id bigint NOT NULL,time datetime NULL DEFAULT NULL,price int NULL DEFAULT NULL,PRIMARY KEY (id) USING BT…

c++编译过程初识

编译过程 预处理&#xff1a;主要是执行一些预处理指令&#xff0c;主要是#开头的代码&#xff0c;如#include 的头文件、#define 定义的宏常量、#ifdef #ifndef #endif等条件编译的代码&#xff0c;具体包括查找头文件、进行宏替换、根据条件编译等操作。 g -E example.cpp -…

JS中的闭包和上下文

变量提升 和 函数提升 这里要提到一个提升的概念&#xff0c;即在JS中&#xff0c;在解析代码之前还有一个预处理的过程&#xff0c;这个过程中会把部分变量和函数声明提前到代码的最顶部&#xff0c; 会在其他所有代码之前执行。虽然当我们按照规范&#xff08;严格模式或者T…

GitLab 将停止为中国区用户提供服务,60天迁移期如何应对? | LeetTalk Daily

“LeetTalk Daily”&#xff0c;每日科技前沿&#xff0c;由LeetTools AI精心筛选&#xff0c;为您带来最新鲜、最具洞察力的科技新闻。 GitLab作为一个广受欢迎的开源代码托管平台&#xff0c;近期宣布将停止服务中国大陆、澳门和香港地区的用户提供服务。根据官方通知&#x…

【2024年最新】BilibiliB站视频动态评论爬虫

废话不多说&#xff0c;直接先放git仓库&#xff1a;GitHub - linyuye/Bilibili_crawler: bilibili爬虫&#xff0c;基于selenium获取oid与cookie&#xff0c;request获取api内容 〇&#xff1a;概念简述 oid&#xff1a;视频/动态的uuid&#xff0c;b站对于发布内容的通用唯…

汽车IVI中控开发入门及进阶(46):FFmpeg

概述: FFmpeg 是领先的多媒体框架,能够解码、编码、 转码、复用、解复用、流、过滤和播放 几乎所有人类和机器创建的东西。它支持最模糊的古老格式,直到最前沿。无论它们是由某个标准委员会、社区还是公司设计的。它还具有高度的可移植性:FFmpeg 在各种构建环境、机器架构…

计算属性 简写和 完整写法

计算属性渲染不加上括号 methods方法和computed属性区别&#xff1a; computed只计算一次&#xff0c;然后缓存&#xff0c;后续直接拿出来使用&#xff0c;而methods每次使用每次计算&#xff0c;不会缓存 计算属性完整写法&#xff1a; 既获取又设置 slice 截取 成绩案例 …

WebRTC Simulcast 大小流介绍与优化实践

Simulcast 是 WebRTC 中的一种标准化技术 &#xff0c;简称大小流。通过 Simulcast&#xff0c;客户端可以同时发送同一视频的多个版本。每个版本都以不同的分辨率和帧率独立编码&#xff0c;带宽较多的拉流端可以接收较高质量的视频流&#xff0c;带宽有限的拉流端则可以接收较…