▍Type-C 不等于 Type-C,是看起来已经「统一」了

▍Type-C 不等于 Type-C

在搜寻解决办法时,我刷到一个视频,视频提到最近新出的一款 C to C 转接头可以解决 Type-C 设备不支持 C To C 线充电的问题。这玩意名字很奇怪叫「5.1K 电阻转接头」,而且一上架就卖到断货,官方视频下全是催产的声音。

我以前只听说过 Lightning 转 Type-C、micro USB 转 Type-C 这类接口形态上的转换器,没想到如今还能见到 Type-C 转 Type-C 这种同形态的转换头。所以在蹲抢的同时我也和网友讨论了一波 Type-C 接口统一、充电、数据传输等问题,这才明白了开头我买的充电电池不能充电的根本原因。用一句话来总结就是设备没有按照 USB 的设计规范设置识别电阻,充电器不知道要不要对外放电,从而无法给电器供电。

这种情况在一些小家电上比较常见,比如手持风扇、便携台灯、小手电,都是 Type-C 接口,但都只能用 A to C 线进行供电。

那厂商为什么不按标准设计,官方的规范又应该是怎样的?这里就简单介绍一下 Type-C 的设计规范。

▍Type-C 规范简介

Type-C 接口功能丰富,可以支持高功率充放电、传输音视频信号、支持正反插......正因为其功能丰富,实际结构也相对复杂一些。

Type-C 针脚定义

完整的 Type-C 接口共有 24 个针脚,A 面和 B 面镜像对称。根据功能可以简单分成四个部分:供电、数据传输、控制、辅助。

供电

VBUS:A4、A9、B4、B9 → 负责供电,默认 5V,最高可到 48V,取决于协议
GND:A1、A12、B1、B12 → 地线,形成回路并保证稳定性

数据传输

低速通道:D+ / D-(A6、A7、B6、B7)→ USB 2.0 基础数据通信(480 Mbps)
高速通道:TX / RX(A2、A3、B2、B3、A10、A11、B10、B11)→ 用于 USB 3 / USB 4 / Thunderbolt 等高速数据通信

控制(最关键)

CC:A5、B5

  • 判断正反插

  • 判断供电方向(谁给电)

  • 协商电流、电压

  • 启动快充 / 视频模式

辅助

SBU:A8、B8 → 用于音频或视频辅助信号(如 DisplayPort)

上面说到缺少识别电阻,就是 CC 位置阻值为 5.1K 的下拉电阻(RD),所以设备无法被识别为「受电端」,因此充电器就不会开启供电。这 5.1K 的电阻值也是 USB-IF 规定的标准 Rd 值。

不过 Type-C 的问题还不仅仅是缺一个「下拉电阻」这么简单。

▍统一的外表,破碎的心

Type-C 确实是个很不错的接口形态,但距离实现 USB-IF「实现通用、简单、统一的设备连接与互操作」的愿景还有很远。

缩水的接口

实际上用到满 24 Pin 的情况比较少,商家大多会根据实际情况进行阉割。比如一般小家电会去除数据传输相关的针脚只保留充电的部分,留 6 个针脚就足够了------这是很合理的成本控制策略。

实际上不少设备以前用的是 micro USB 接口,因为插在充电头端的 USB-A 默认就是供电端,因此不需要像 Type-C 那样协商供电方向,所以在设备电路上没有相关的识别电阻;更换成 Type-C 接口后,有些厂商为了省成本并没有对原有设备电路做调整,所以就无法用 C to C 线进行充电了。

换句话说,这些线只是套了个 Type-C 外壳,内心还是那个你熟悉的 micro USB。

只有 4 个针脚的 Type-C 母座

例如上图这个只有 4 个针脚的 Type-C 母座,它提供 D+ / D- 用于 USB 2.0 低速数据传输和 VBUS、GND 供电,但没有对应的 CC 引脚,所以使用了这个母座的设备是无法用 C to C 线充电的。

还有些是母座留有 CC 针脚但厂商没有焊接 5.1K 识别电阻。于是有动手能力强的网友自行焊接上识别电阻,让设备支持 C to C 充电。

手工焊接的识别电阻

支持功率不同

如果只考虑充电,外形相同的 C to C 线充电速度也相差很大,以我个人情况为例,我的充电宝用原装 C to C 线能激活小米手机 90W 快充,但别的一些线至多只能跑到 20W。如果不了解这些,可能你花大价钱买的高瓦数充电器一直在低功率的运行。

想要达到 60W 甚至更高的充电功率,需要选择支持 3A 或更高规格的线材。

支持 6A 电流的线材

现在不少显示器都支持一线连功能。只需要一根 C to C 线连接电脑和显示器,就可以传输视频并给笔记本充电,可以让桌面更加整洁。

但经常和这种场景打交道的朋友应该也知道,「一线连」也不是随便拿一根 CtoC 就能用的,需要 Thunderbolt 3 以上标准或全功能 USB-C 线才可以。这些线材会比一般的 C to C 线贵上几倍、十几倍不止。

iPhone 原装线、6A 线、全功能 USB-C 线

私有充电协议泛滥

上述问题你可以说是硬件规格不同造成的,是成本问题。但是国内不少手机厂商画地自治,研发的私有充电协议,就是协议层的问题了。

国内的手机厂商早在 2014 年就开始卷充电功率,从 60W、90W 甚至飙到 100W。那时官方的 PD 充电规格达不到国内厂商的需求,所以便开始研究自家的私有高速充电协议。比较有名的有 OPPO 的 VOOC、华为的 SuperCharge、小米的 HyperCharge 等。这些厂商靠着魔改协议确实达到了高速充电的目的,面对苹果、三星等国际品牌更可谓是遥遥领先。

但私有协议必须使用专用充电头 + 专用线 + 自家手机才能达到满速,一旦更换品牌或是双持党,充电器和线材都兼容不了,只能以 18W 甚至更低的速度充电。在一些高功率充电器上这些协议可能会和原本的 PD 协议起冲突,造成协商失败、功率回退甚至反复握手的情况。

所以本质上,私有协议是在 Type-C 的「统一接口」之上,重新制造了新的「生态壁垒」。

官方混乱的命名

除了设备商的各种阉割、魔改让硬件规格和协议上不统一,USB-IF 在规范命名上的多次调整也进一步增加了用户的理解成本:

2008 年 USB-IF 推出了 USB 3.0 标准。

在 2013 年发布 USB 3.1,将原来的 USB 3.0 更名为 USB 3.1 Gen 1,而 USB 3.1 则称为 USB 3.1 Gen 2。

2017 年 USB-IF 再次更名 USB 3.2 标准,将 USB 3.1 Gen 1 改为 USB 3.2 Gen 1,USB 3.1 Gen 2 改为 USB 3.2 Gen2,并新增 USB 3.2 Gen 2x2(20Gbps)。

......

本来 Type-C 数据线从外观已经难以判断,官方的反复修改使得这一切更加混乱,用户更加难以分清它们的区别了。所以就有网友做了下面这张图来吐槽这一现象:

过去与现在

不过细心的朋友可能会发现,明明之前都在谈 Type-C,怎么现在又变成 USB 3 了?这其实是混淆了接口形态和协议。

Type-C 指的是接口样式,而 USB 3 是具体的接口协议。只是目前 USB 最新的协议都用的 Type-C 接口且也最为广泛,所以不少人会把这两个概念混淆。

接口与协议

▍最后

几天后我的「5.1K C to C 转接头」到家了。这个小东西通过补充识别电阻的方式,让充电器把连接的设备识别为受电端,从而进行供电。

我的问题解决了,那 Type-C 的呢?它看起来是有不少问题:落地实现不统一、协议标准不统一、体验也不统一......但这些似乎也只是表象。真正的问题在于,Type-C 用一个统一的接口形态,掩盖了背后复杂且分裂的实现与协议

它的问题,从来不是「不统一」,而是它看起来已经统一了。

原文链接:

https://sspai.com/post/108352?utm_source=wechat\&utm_medium=social

相关推荐
CHANG_THE_WORLD1 小时前
C 语言的 `fread` 与 C++ 的 `ifstream::read` 区别及设计哲学
java·c语言·c++
geovindu1 小时前
go: Abstract Factory Pattern
开发语言·后端·设计模式·golang
Trustport1 小时前
ArcGIS Maps SDK For Kotlin 加载Layout中的MapView出错
android·开发语言·arcgis·kotlin
jinanwuhuaguo1 小时前
Ollama 全方位深度剖析:大模型时代的“Docker化”革命、算力普惠基础设施与安全边界重构
运维·开发语言·人工智能·深度学习·安全·docker·重构
U盘失踪了1 小时前
go Map
开发语言·golang
skilllite作者2 小时前
SkillLite 架构优化分析报告:项目开发日记
大数据·开发语言·后端·架构·rust·rust沙箱
zore_c2 小时前
【C++】C++——类的默认成员函数(构造、析构、拷贝构造函数)
java·c语言·c++·笔记·算法·排序算法
进击的荆棘2 小时前
C++起始之路——AVL树的实现
开发语言·数据结构·c++·stl·avl
进击的荆棘2 小时前
C++起始之路——红黑树的实现
开发语言·数据结构·c++·stl·红黑树