1 简介

USB Type-C其实是USB的一种接口形态,USB的接口形态可以分为USB Type-A、USB Type-B、USB Type-C,USB Type-A和USB Type-B还有两种不同规格的接口形态,分别是USB Mini-A(B)和USB Micro-A(B)。

USB各型号接口图解

越来越多的手机开始采用Type-C作为充电和通信端口,Type-C连接器实物和PIN定义如下图:

Type-C连接器实物和PIN

Type-C 全称是USB Type-C 接口,是一种全新的 USB 接口形式。USB Type-C接口宽度8.3毫米,厚度2.5毫米,而Micro USB接口宽度7.4毫米,厚度2.35毫米,Type-C比Micro USB接口大稍许,比传统USB纤薄小巧。两者大小对比如下图所示。

USB Type-C与传统USB插头对比

区分插头公母的方法有:观察外观形状、检查极性、根据大小和形状区分。以下是详细介绍:

观察外观形状。一般来说,插头的一面是公头,另一面是母头,公头的头部通常带有尖端,而母头的头部则通常带有圆孔。

检查极性。部分插头会在其上标记“J”(公头)和“K”(母头),另外,公头的接触片通常位于内部,而母头的接触片则位于外部。

根据大小和形状区分。通常情况下,母头的尺寸比公头大,公头比母头小,因此,可以通过大小和形状来区分公母。

Type-C插头和插座的管脚线序

Type-C连接器中有两个管脚CC1和CC2,他们用于识别连接器的插入方向,以及不同的插入设备。本文介绍CC的基本识别原理。

Type-C插头和插座的管脚线序

Type-C管脚类型归类

DFP、UFP和DRP概念

DFP——Downstream Facing Port,也就是Host
UFP——Upstream Facing Port,也就是Device
DRP——Dual Role port,既可以做DFP,也可以做UFP。

Type-C插头管脚线序

在建立连接之前,DRP的角色在DFP和UPF之间切换。如果两个DRP连接,最先随机到那种角色后开始建立连接,之后可以通过USB协议协商进行动态切换。

2 为什需要CC检测

虽然USB Type-C插座和插头的两排管脚对称,USB数据信号都有两组重复的通道,但主控芯片通常只有一组TX/RX和D+/-通道(某些芯片有两组TX/RX和D+/-通道)。

由于USB2.0的数据率最高只有480Mbps, 可以不考虑信号走线的阻抗连续性,USB2.0的D+/-信号可以不被MUX控制而直接从主控芯片走线,然后一分二连接至USB Type-C插座的两组D+/-管脚上。

但USB3.0或者USB3.1的数据率高达5Gbps或者10Gbps,如果信号线还是被简单地一分二的话,不连续的信号线阻抗将严重破坏数据传输质量,因此必须由MUX切换来保证信号路径阻抗的一致性,以确保信号传输质量。

下图中右侧所示的MUX从TX1/RX1和TX2/RX2中选择一路连接至主控芯片,而这个MUX就必须被CC管脚控制。

在USB2.0应用中,无需考虑CC方向检测问题,但USB3.0或者USB3.1应用中,必须考虑CC方向检测问题。

注意UFP,比如U盘,移动硬盘内部不需要CC逻辑检测,因为它是上行,只有一对USB2.0或USB3.0信号,如下图

3 CC检测原理

CC信号有两根线,CC1和CC2,大部分USB线(不带芯片的线缆)里面只有一根CC线,DFP可根据两根CC线上的电压,判断是否已经插入设备。通过判断哪根CC线上有下拉电阻来判断方向,下图的说明已经非常清晰。

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

“有效的Rp/Rd连接”指在CC上形成了有效的电压。
从DFP的角度看,下表列出了所有可能的连接状态,

以上只是介绍了CC检测中判断是否翻转的原理,两个CC信号还有向UPF通告DFP提供电流能力的功能等,见下文。

3.1 DFP的上拉电阻Rp

DFP的CC1和CC2信号上都必须有上拉电阻Rp,上拉到5V或3.3V。或者CC1和CC2都用电流源上拉。最终的目的是在插入后,能检测到CC1或CC2上的电压,进而判断是否翻转以及DFP的电流能力。如下是所有可能的配置。可以选择右边三列中的任何一列作为上拉方式,比如Fairchild的FUSB300就是用330uA上拉,TI的TUSB320LAI用的是80uA的上拉,不同的上拉方式在CC引脚上形成的电压不同,不同的电压对应不同的电流能力。

3.2 UPF的Rd

UFP的CC1和CC2管脚都要有一个下拉电阻Rd到GND(或者使用电压钳位)。Rd的处理方式如下表。

注意,最后一列的电流源连接至的电压,是指3.1节中表格的最后一列电流源的上拉电压。
结合这个表格,和3.1节的表格,我们把每种可能的上下拉范围都计算出了最终形成的电压范围,如下表。

CC检测芯片会检测这个电压,通过判断电压范围来决定下一步操作。下表是CC管脚上不同的电压对应的DFP能提供的电流能力。第二列列出的每一种电压范围,都分别覆盖了上表计算出的电压。Rp/Ra的计算是同理的。

3.3 数据线上的Ra

带电子标签的线缆,其中一个CC管脚被更名为VCONN,用于给电子标签芯片供电。这个VCONN管脚与GND之间需要一个Ra电阻,这个电阻值范围是800Ω~1.2KΩ。

3.4 VCONN电源

VCONN的允许范围是4.75V~5.5V,要求供电能力是1W。默认情况下DFP提供这个电源。如果两个DRP连接,则双方可以通过USB PD协议协商来交换VCONN供电方。
支持PD的USB3.0接口均需支持VCONN,可以通过下面两种方式之一提供VCONN电源。

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

4 手机都是DRP

现实中,我们的手机都是DRP,既能做DFP,又能做UFP,那么是如何切换呢?
DRP在待机模式下每50ms在DFP和UFP间切换一次。当切换至DFP时,CC管脚上必须有一个上拉至VBUS的电阻Rp或者输出一个电流源,当切换至UFP时,CC管脚上必须有一个下拉至GND的电阻Rd。此切换动作必须由CC Logic芯片来完成。当DFP检测到UFP插入之后才可以输出VBUS,当UFP拔出以后必须关闭VBUS。此动作必须由CC Logic芯片来完成。下面是一个CC逻辑芯片框图,CC上有一个开关,在不断切换功能。

5 USB Power Delivery 2.0

这个是由USB-IF制定的单线协议,在CC线上传输,用于协商供电角色,电压,最大供电能力,数据角色,备用模式等,端口与供电电缆之间的通信业通过PD协议进行。协议不做展开,详见USB-IF官网。下面是协议的几个特点:

1.所有通信均通过CC线。
2.DFP是总线主设备,用于发起所有通信。
3.所有消息均采用32bit 4b/5b编码的双向标记编码(Bi-phase Mark Coded,BMC)
4.波特率300K
5.CRC32错误检验+消息重试

6 Type-C线缆规范

线缆至少支持10000次拔插。
不规定信号线规,但是必须保证USB2.0和USB3.0的信号完整性
CC和SUB1/SUB2线上的阻抗不大于50Ω
GND返回路径上的最大IR压降为250mV
Vbus上的最大IR压降为500mV
USB Type-C规范中并未明确规定线缆长度,但是电器要求产生了一些物理限制。USB3.1 Type-C转Type-C电缆组件在5GHz下的插入损耗指定为为-6dB,从而将电缆长度有效限制为1米。USB3.0 Type-C转Type-C电缆组件在5GHz下的插入损耗指定为为-7dB,从而将电缆长度有效限制为2米。

7 带电子标签的Type-C数据线

如果Type-C数据线上带了芯片(我们称之为电子标签),这个芯片可以通过USB供电规范2.0 BMC协议与USB端口通信。电子标签电缆可用VCONN供电,也可以直接由Vbus供电,最高可消耗70mW的功率。如下类型的电缆必须要电子标签:

兼容USB3.1的USB Type-C电缆
100W供电电缆。能够实现60W以上功率承载能力的任何电缆都必须有电子标签,并且能够与DFP端口通信。
带电子标签的电缆如果插入不支持USB供电规范2.0的插座中,其行为与标准的无源电缆完全相同。

8 音频配件模式

8.1 数字耳机

Type-C接口的数字耳机是一个UFP(Device),手机是DFP。耳机的CC1和CC2引脚上必须有Rd,实际上,乐视数字耳机的CC管脚上有一颗5.1K电阻。

8.2 模拟耳机

模拟耳机与Type-C接口的转接线

协议要求模拟耳机转接线上把两个CC引脚直接接到GND(必须小于Ra)。

逻辑框图

USB Type-C数据线除了充电传输数据,还可以传输音视频等,很多安卓手机不但用Type-C接口替代了传统的Micro USB而且还取消了3.5mm耳机插孔。对于这样的手机要使用耳机只能用Type-C转3.5mm耳机转换线,经过研究Type-C接口定义和相关资料,发现Type-C输出音频和接收话筒信号对应的针脚,如下图所示。6、7、8针脚对应右声道、左声道、话筒麦克风,1脚对应耳机的GND。

Type-C输出音频和接收话筒信号对应的针脚

手机上用的耳机都是三节四段式,有四根电缆,分别是GND(地)、Mic(话筒麦克风)、L(耳机左声道)、R(耳机右声道)。用万用表测量多种耳机,大部分是第一种接法,只有诺基亚是第二种接法。如下图所示。注意下图与上图中Type-C各针脚对应关系。

三节四段式耳机插头的管脚图

这样搞清楚了,Type-C各针脚与耳机话筒、耳机左右声道对应关系,就可以动手做一条USB Type-C转3.5mm耳机转接线。体验DIY的乐趣,享受成功的喜悦。注意手机随机的Type-C数据线基本都是缩水的部分针脚缺失,改造之前看一下需要的针脚是否完整。另外USB Type-C插头的针脚较多,非常密集手工焊接存在一定难度,请量力而行。

8.3 兼容数字耳机和模拟耳机

这一类的机型包括小米note3,华为p20pro,坚果锤子等(数字耳机就是一个usb从设备)。

电路板设计有一个耳机自动切换ic,当模拟耳机插入时,模拟耳机的左右声道接在usb+、usb-,因此需要切换开光,如DIO3202A,vbus电平为高,芯片切换到usb通路,vbus电平为低,切换到耳机通路,当数字耳机插入时,type-c逻辑芯片检测到从设备,cpu上的usb切换到主模式,并提供5v(vbus)给从设备供电,完成相应的数字信号传输。

兼容模拟耳机的原理,typec逻辑芯片会识别成不同的设备(数字耳机,usb设备 模拟耳机 音频配件)(也可以使用mic来识别耳机的插拔 原理: 模拟耳机接入耳机后由于vbus没电,耳机逻辑ic选择耳机通道,耳机mic检测脚初始化为高,当模拟耳机插入后,mic相当于一个1k的电阻,由于分压,mic脚的电压会拉低,mic_det脚所在的pmic上的内部电压比较器检测到了电平变化进一步触发了耳机mic的中断,进一步判断耳机的类型,从而识别达到耳机)。

9 电路图

因为TypeC接口有6P、16P、24P等各种,其中6P只能供电,16P除了供电还有USB2.0的D+和D-引脚,24P包含了全功能USB3.0各个引脚。电路图如下:

6P引脚

16P 引脚

24P 引脚

9.1 TypeC-6P

一般单片机可用下面这种电路。

如果想精简电阻,也可以这样:

CC1与CC2短路(不建议)

当供电端不带USB控制芯片时,CC1和CC2可共用一个下拉电阻,此时供电端CC2连接是断开的。但是当使用带Emark的USB控制芯片时,就不行了,此时单片机会被当做模拟音频设备(耳机)而被拒绝供电。

参考:

从树莓派4 USB-C接口设计失误看嵌入式系统的接口升级

CC1和CC2共用一个下拉电阻的问题

经过实际测试发现,树莓派4上面的这个USB-C接口,其CC1和CC2是连接在一起的,并共用了一颗5.1k的电阻下拉到地。这个设计看似非常巧妙,USB-C接口的控制做到了极致简单,只需要一颗5.1k下拉电阻。当外接的USB-C Cable是不带Emark芯片的情况下,确实可以正常工作。因为这类USB-C Cable的CC2是悬空的,只有CC1有连接到对端,所以,这种Cable跟RaspBerry 4B的USB-C接口母座一连起来,就非常好的符合了Sink端的设计规范,即CC1上,有一个5.1k的电阻下拉到地。

图2 树莓派4B在使用不带Emark 芯片的连接线时的连接情况

但是,USB TYPE-C规范里面,还规定了一种带Emark 芯片的Cable,这种Cable的CC2上,有一个1K的下拉电阻,用来告知DFP端的CC识别芯片,需要往CC2上提供VCONN Source。一旦跟这样的Cable连接起来,RaspBerry 4 Pi model B就会出现严重问题。因为CC1和CC2连接起来后,会跟Cable上的1K到地电阻并联,形成一个比1k电阻还小的阻抗,从而满足了USB-C规范中Audio Adapter Accessory Mode的连接规范,被电源端误认为是一个模拟耳机设备,从而拒绝供电。

图3 树莓派4B在使用带Emark 芯片的连接线时的连接情况

通过上图我们可以看到,Emark 连接线上的1k电阻会导致,CC1建立失败,1k电阻和5.1k电阻的并联,会导致RaspBerry 4B被认为是一个Audio Adapter Accessory Mode。解决这个问题的方法也很简单,只需要在CC1和CC2上各接一个5.1K电阻到地,互相独立就行了。这一点可以搜索一下笔者在2015年的原创文章《你真的需要TYPE-C芯片吗》。这篇文章为大家提供了判断系统是否需要使用USB-C 控制芯片的三个原则和两个实现方法。

RaspBerry 4B在USB-C接口上的设计,其实属于入门级设计,因为这个接口仅仅用来进行5V供电和一个USB2.0 通信而已,并无复杂的音视频及USB3.0功能。在实际的嵌入式开发中,一个USB-C接口的功能,可能远不止于此。下面我们就大功率供电供电、高速信号传输、双C口DRP控制三点进行阐述。

9.2 TypeC-16P

一般单片机可用下面这种电路:

同理,也可以将CC1和CC2共用一个5.1K的下拉电阻。

9.3 TypeC-24P

用24PIN的TypeC时,一般是需要用到USB3.0协议,则TypeC接口中的A2、A3、A10、A11、B2、B3、B10、B11接到相应芯片的USB3.0接口上,将CC1和CC2按相应角色进行上拉下拉或者接到芯片上即可。

————————————————

参考出处

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:Type-C接口简单介绍-面向单片机应用_type-c接口图片-CSDN博客

版权声明:本文为CSDN博主「AirCity123」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/AirCity12

Type-C协议(CC检测原理)-CC1和CC2接电阻-数字和模拟耳机兼容的更多相关文章

  1. H3C IRF MAD检测原理及相关问题验证

    一.IRF简介 IRF(Intelligent Resilient Framework,智能弹性架构)是H3C自主研发的软件虚拟化技术.它的核心思想是将多台设备通过IRF物理端口连接在一起,进行必要的 ...

  2. 浅谈CC攻击原理与防范

    概念         CC攻击的原理就是攻击者控制某些主机不停地发大量数据包给对方服务器造成服务器资源耗尽,一直到宕机崩溃.CC主要是用来攻击页面的,每个人都有这样的体验:当一个网页访问的人数特别多的 ...

  3. CGI 和 FastCGI 协议的运行原理

    目录 介绍 深入CGI协议 CGI的运行原理 CGI协议的缺陷 深入FastCGI协议 FastCGI协议运行原理 为什么是 FastCGI 而非 CGI 协议 CGI 与 FastCGI 架构 再看 ...

  4. TCP协议通讯工作原理

    TCP协议通讯工作原理   一.TCP三次握手 传输控制协议(Transport Control Protocol)是一种面向连接的,可靠的传输层协议.面向连接是指一次正常的TCP传输需要通过在TCP ...

  5. 【转】CGI 和 FastCGI 协议的运行原理

    介绍 深入CGI协议 CGI的运行原理 CGI协议的缺陷 深入FastCGI协议 FastCGI协议运行原理 为什么是 FastCGI 而非 CGI 协议 CGI 与 FastCGI 架构 再看 Fa ...

  6. SPI协议及工作原理分析

    说明.文章摘自:SPI协议及其工作原理分析 http://blog.csdn.net/skyflying2012/article/details/11710801 一.概述. SPI, Serial ...

  7. HTTPS 协议降级攻击原理

    0x00 HTTPS 在传统流行的web服务中,由于http协议没有对数据包进行加密,导致http协议下的网络包是明文传输,所以只要攻击者拦截到http协议下的数据包,就能直接窥探这些网络包的数据. ...

  8. 第十一节、Harris角点检测原理(附源码)

    OpenCV可以检测图像的主要特征,然后提取这些特征.使其成为图像描述符,这类似于人的眼睛和大脑.这些图像特征可作为图像搜索的数据库.此外,人们可以利用这些关键点将图像拼接起来,组成一个更大的图像,比 ...

  9. iOS 覆盖率检测原理与增量代码测试覆盖率工具实现

    背景 对苹果开发者而言,由于平台审核周期较长,客户端代码导致的线上问题影响时间往往比较久.如果在开发.测试阶段能够提前暴露问题,就有助于避免线上事故的发生.代码覆盖率检测正是帮助开发.测试同学提前发现 ...

  10. Harris角点检测原理详解

    http://blog.csdn.net/lwzkiller/article/details/54633670 关于角点的应用在图像处理上比较广泛,如图像匹配(FPM特征点匹配).相机标定等.网上也有 ...

随机推荐

  1. 使用ProWindow时,控制按钮状态的说明

    在Pro SDK中,提供了一个默认的窗口基类,ProWindow Class,提供了基础的窗体样式,可供扩展和调用. 有网友问我,在使用时,会发现窗体右上角的控制按钮,有时会没有按照自己的预期显示. ...

  2. 用nginx正向代理,让内网主机通过外网主机访问外网

    需求1:某几个ip的代理 server { listen 9000; # 监听端口 server_name localhost; set $url "proxy_server_doman_o ...

  3. WinDbg: Failed to find runtime module (coreclr.dll or clr.dll or libcoreclr.so)

    当我们通过 WinDbg 启动一个 .NET 的程序时,WinDbg 将会在运行可执行之前执行一个中断,此时还没有加载 .NET 的运行时. 但是,SOS 扩展需要 clr.dll 或者 corecl ...

  4. 在分布式追踪系统中使用 W3C Trace Context

    在分布式追踪系统中使用 W3C Trace Context https://dev.to/luizhlelis/using-w3c-trace-context-standard-in-distribu ...

  5. Fake JSON Server

    Fake JSON Server https://github.com/ttu/dotnet-fake-json-server Fake JSON Server 是 Fake REST API,可以作 ...

  6. dubbo(一)spring schema拓展技术

    https://blog.csdn.net/java_zldz_xuws/article/details/84648398 在阐述dubbo原理之前,我先介绍一下dubbo与spring怎么糅合在一块 ...

  7. 操作系统messages文件位置更改

    问题现象 在遇到一个问题的时候需要查看操作系统的日志,但是到操作系统上的 /var/log/messages 文件中发现该文件已经很久没有刷新过了. 这个系统之前是做过安全加固的,我怀疑它改过操作系统 ...

  8. composer [ErrorException] Undefined index: process

    执行了升级composer self-update导致了 降级处理 composer self-update --1 composer install

  9. Qt音视频开发39-海康sdk回调拿到数据GPU绘制的实现

    一.前言 采用海康的sdk做开发,最简单最容易的方式就是传入句柄(windows和linux都支持/很多人以为只有windows才支持)即可,这种方式不用自己处理绘制,全部交给了sdk去处理,所以cp ...

  10. 关于Qt中的qss样式表需要注意的坑

    关于QSS要注意的坑. qss源自css,相当于css的一个子集,主要支持的是css2标准,很多网上的css3的标准的写法在qss这里是不生效的,所以不要大惊小怪. qss也不是完全支持所有的css2 ...