首页 > 其他分享 >一文详解Type C-CC引脚的作用

一文详解Type C-CC引脚的作用

时间:2024-07-23 23:08:25浏览次数:11  
标签:引脚 CC DRP DFP UFP Type

一文详解Type C-CC引脚的作用

关于USB CC引脚的功能,想必很多人都很好奇。USB经常接触,其内部的VBUS D+与D-大家肯定都知道了解,但对于CC引脚的存在却很少有人知道其作用。所以呢,今日,小白就来简单的介绍一下其功能。

首先还是要先介绍几个关键名词:
DFP(Downstream Facing Port)下行端口,可以理解为Host,DFP提供VBUS,可以提供数据。在协议规范中DFP特指数据的下行传输,笼统意义上指的是数据下行和对外提供电源的设备。典型的DFP设备是电源适配器。只能做Source。

UFP(Upstream Facing Port)上行端口,可以理解为Device,UFP从VBUS中取电,并可提供数据。典型设备是U盘,移动硬盘。只能做sink端。

DRP (DualRolePort):双角色端口,DRP既可以做DFP(Host),也可以做UFP(Device),也可以在DFP与UFP间动态切换。典型的DRP设备是笔记本电脑,手机。

插入检测

在DFP与UFP未连接之前,VBUS是没有输出的。当DFP与UFP连接后,CC pin连接。DFP上的CC pin会检测到来自UFP的下拉。此时代表了DFP与UFP连接成功。随后,DFP会打开VBUS上的FET,输出VBUS给UFP。

识别正反插

以大家接触最多的手机为例。手机属于DRP,既可以做DFP,又可以做UFP。手机因CC logic的存在,当未连接Type C时, CC引脚是不断的循环被上拉与下拉的。此时如果用示波器测量机器的CC Pin的信号其实是方波。

当手机充电时
针对手机而言, 作为UFP时,内部的CC引脚直接通过Rd为下拉至地。
充电器,作为DFP,内部的两个CC引脚是被上拉到VBUS。
当充电器与手机连接,因手机内部CC引脚的下拉进而导致充电器的CC1 Pin被拉低时,此时代表UFP是向上插入。反之,如果充电器检测到CC2 pin被下拉时,则UFP就是向下插入。
左侧为DFP 右侧为UFP

图示CC1被拉低 代表正向插入

了解VBUS配置方式:电流模式与USB PD

下表展示了每个USB标准所能提供的供电能力。纯type C端口可提供5V/3A的供电能力。如果配合PD协议,供电能力可以达到更高(USB pd协议通过CC引脚通信)。

Type c 存在1.5A与3A两种电流模式。其主要取决于DFP的输出能力。DFP通过CC引脚上的电压告知UFP供电能力。UFP的下拉电阻始终为5.1K保持不变,而DFP可通过其CC上的上拉电阻Rp或者电流源Ip来产生电压。

Type-C spec定义了DFP在不同模式下,在CC pin要供多大的电流或是要用多大的上拉电阻Rp阻值。

对于UFP而言,其主要是通过CC pin上的电压来得知DFP的输出能力。例如当5V/3A时,DFP会在CC上传递330uA的电流。在UFP上可得到电压330uA5.1K=1.683V。
亦或通过DFP上的上拉电阻10K计算出UFP上CC pin的电压5V5.1K/(5.1K+10K)=1.688V。一样可以判断DFP为Vrd/3.0A。

侦测连接到设备的端口类型

文章最开始说过DFP为HOST端,UFP为DEVICE端。DFP端的CC pin上存在上拉电阻Rp,UFP端的CC pin上存在下拉电阻Rd。在DFP与UFP未连接时,DFP上的VBUS是断开的,只有当DFP与UFP连接时,DFP便会打开FET,供电给UFP。

DFP可根据CC1与CC2的负载状态(如下图),来判断它是否接到了debug or Audio accessory装置。

配置VCONN

从下图可以看到插座的A5与B5分别存在的是CC1与CC2。与之相对应的插头在A5与B5存在的是CC与Vconn。

CC Pin有CC1与CC2。当其中一个Pin被用来做DFP与UFP之间的连接。另一个Pin则用来供Vconn。当Cable内将另一个CC pin接一个下拉电阻Ra,这表示这是一条主动式Cable,需要被供电的。DFP侦测到Ra,便会输出VCONN在CC pin,供电给Cable(内部含有emark芯片)。Ra的阻抗是定义为800ohm 1200ohm。这个CC引脚将切换至VCONN对外输出4.755.5V,功率最大1W。

在两个端口间协商建立DFP和UFP身份

Type-C除了DFP与UFP,还有一种是DRP(双模式端口,前面提过手机就是DRP),可以以一定的间隔在DFP与UFP间来回切换。当DRP端口与DFP设备相连,DRP则切换为UFP设备;同样地也可以切换为DFP设备。当两个DRP设备连接时,DFP与UFP身份是随机的。

此为某手机内部CC Logic芯片的内部框架图,可以看到CC Pin内部有个开关在RP与RD切换。

DRP未接入任何设备时,开关来回切换,CC1与CC2波形如上图所示。当有设备接入后,根据设备的不同,开关会固定在一端,此时DRP只能是一种模式,为UFP或者DFP。

配置使用其他外设模式

Type-C规范定义了替代(Alt)模式与外设(Accessory)模式。主机、设备与线缆可以发送格式化的厂商自定义信息(VDM)来交换信息和发现USB ID。当主机通过VDM与设备交换信息后进入 Alt 模式,Type-C接口中的引脚定义将会改变以支持PCIe或者DisplayPort。下面的例子是一个Type-C扩展坞,它使用MUX切换PCIe或USB 3.1信号通至Type-C端口。

当CC1和CC2引脚同时使用Ra下拉时,主机将把设备识别成音频设备,然后从USB信号切换至音频信号。

从图中也可以同时看出来,接入音频设备时,Dp接入耳机的右声道,Dn接入耳机的左声道。SBU则连接至MIC。

标签:引脚,CC,DRP,DFP,UFP,Type
From: https://www.cnblogs.com/bujidao1128/p/18319819

相关文章

  • 解锁Nginx日志的宝藏:GoAccess——你的实时、交互式Web日志分析神器!
    在当今数字化的时代,网站的流量和用户行为数据就像是一座蕴藏着无尽秘密的宝藏。而如何有效地挖掘和分析这些数据,成为了许多网站管理者和开发者头疼的问题。GoAccess,一款开源的实时Web日志分析工具,或许能为我们提供一扇窥探这些秘密的窗口。GoAccess:你的流量分析好帮手GoAccess......
  • tdm-gcc 的下载、安装教程
    tdm-gcc的下载、安装教程一、tdm-gcc的下载1、下载地址:【点击跳转】官网:https://jmeubank.github.io/tdm-gcc/2、【此电脑】右键----【属性】,看到电脑是64位的,故可选择64位的进行下载。(如果不确定是几位的,选择第三个下载即可)3、点这里:4、点击下载,等待下载完成即可;......
  • NCCL测试
    ./build/all_reduce_perf-b8-e256M-f2-g2#nThread1nGpus2minBytes8maxBytes268435456step:2(factor)warmupiters:5iters:20aggiters:1validation:1graph:0##Usingdevices#Rank0Group0Pid60407ongpu003device0[0x26]......
  • CeiT(ICCV 2021, SenseTime)论文与代码解析
    paper:IncorporatingConvolutionDesignsintoVisualTransformersofficialimplementation:GitHub-coeusguo/ceit背景近年来,Transformer在自然语言处理(NLP)任务中取得了巨大的成功,并且开始有一些尝试将其应用于视觉领域。然而,纯Transformer架构在视觉任务中通常需要大量的......
  • MySQL 系列八:MVCC
    Author:ACatSmilingSince:2024-07-22什么是MVCCMVCC:MultiversionConcurrencyControl,多版本并发控制。顾名思义,MVCC是通过数据行的多个版本管理来实现数据库的并发控制。这项技术使得在InnoDB的事务隔离级别下执行一致性读操作有了保证。换言之,就是为了查询一些正在被另......
  • 是否可以通过 doctest 测试使用 get_type_hints 的函数?
    我有一个使用typing.get_type_hints的函数。我想向其添加文档测试但是,看起来get_type_hints无法解析doctest中定义的类型。这是一个简化的示例:importtypingdeff(clazz):""">>>classMyClass:...my_field:'MyClass'......
  • MVCC和多版本并发控制策略
    MVCC:多版本并发控制引言在现代数据库管理系统中,并发控制是确保数据一致性和完整性的关键机制之一。随着应用程序对数据库性能要求的不断提高,传统的锁机制(如悲观锁)在某些场景下可能会成为性能瓶颈。为了克服这些限制,多版本并发控制(MVCC)应运而生,它允许数据库事务在读取数据......
  • *.pyi 文件中的代码 '_T = TypeVar('_T')' 意味着什么?
    我是Python注释(类型提示)的新手。我注意到pyi文件中的很多类定义都继承了Generic[_T]和_T=TypeVar('_T')我很困惑,这里的_T是什么意思?fromtypingimportGeneric,TypeVar_T=TypeVar('_T')classBase(Generic[_T]):pass在......
  • SUMA&国产海光平台服务器32DB16主板ECC内存对应表&故障内存定位
    32DB16主板内存映射关系,在ECC报错后,可参考LinuxHWError及EDAC等OS信息,定位出错内存所在位置。一、关于主板型号如何确认?方法一:可以使用以下命令在Linux系统进行查看,sudodmidecode-tbaseboard也可以使用cat/sys/class/dmi/id/board_vendorcat/sys/class/dmi/id/bo......
  • TypeError:预期的字符串或类似字节的对象,在使用导入运行 Pyinstaller 时得到“NoneType
    我正在尝试从Python创建可执行文件,但收到以下错误。我创建了一个干净的环境,并尝试仅通过导入和文件中的简单print('HelloWorld')来重现该问题,如下所示:importtkinterastkimportthreadingfromtkinterimportfiledialogfromtkcalendarimportDateEntryfro......