家里的华硕 PN41 迷你电脑没有 3.5mm 音频接口,弄了个小度蓝牙音响播放声音。在看视频等操作声音都挺正常,但在玩四国军旗时,每次移动子时的短音频有很大概率消音,感觉就像短音频发送给蓝牙音响,刚要播放时,电脑又发送停止指令。如果电脑同时播放视频,提供一个底声,四国军旗的声音就正常了。初步怀疑是蓝牙音响在没有音频播放时,会关闭 PA;每次开启 PA 有一定的延迟,所以短音频需要等待 PA 开启延迟才播放,而刚要开始播放时,又被电脑停止了。由于没有深入研究蓝牙的传输流程,一直还没有解决这个问题的思路。
不过前两天看到了 USB Type-C 接口的耳机,就在想是不是能给 PN41 用?不知不觉就将 Tpye-C 接口研究了一下。
Type-C 插座定义
一个 Type-C 母口共 24 pin,分为 5 部分看:
- 电源引角:4 个 GND + 4 个 VBUS,共 8 pin
- 高速差分对:4 对,共 8 pin
- 低速差分对:2 对,共 4 pin
- 配置通道:CC,2 pin
- 辅助通道:SBU,2 pin
在 Type-C 之前,通常可以通过形状区分主机和设备:方形的 Tpye-A 为主机,其它形状为设备。现在主机和设备均使用 Type-C 接口,无法从外部区分,其使用 CC(Configuration Channel) 引角来协商区分:
- Host 的 CC 使用上拉电阻,Device 的 CC 使用下拉电阻;
- Host 端必须监控 CC 信号;只有在监控到 CC 信号在正确的分压范围内,才会开启 VBUS 供电
- Device 如果使用简单的 USB 2.0 模式可以不用监控 CC 信号
C-B 线缆内置下拉电阻,确保 Host 能正确识别 CC,为其开启 VBUS:
Type-C 插头定义
插头与插座定义基本呈左右对称,但有两点不同:
- CC2 被 VCONN 取代
- 插头只有一个 USB 2.0 低速差分对
为什么插头只有一个 CC1 针脚呢?
这就是 CC 针脚的第二个功能:识别正反面。Type-C 插座分为正反两面,而插头可以正反插,这就需要插头上的 CC1 与插座上的两个 CC 信号配对,插座上的芯片通过识别两个 CC 信号的电压来识别正反面,有压降的 CC 为正面,即插座上的电路有能力将针脚定义根据情况旋转 180° 来和插头针脚配对;这也符合将复杂的留给设备,简化线缆的设计原则。
为什么插头上只有一对 USB 2.0 低速差分对呢?
因为插座上两对是用来是针脚可 180° 旋转设计的,而插头的针脚定义不需要旋转。
Tpye-C 线缆
对于线缆有个很常见的误区,认为两对 D+,D- 内部短接,或者两对 RX+,RX- 内部短接;其实线缆内部除了电源引角短接使用同一根电缆传输,其它信号均分开传输或者浮空。比如有两对 D+,D-,线缆内部只会连接一对,另外一对浮空。
USB 2.0
USB 2.0 是 Type-C 口承载的最简单协议。此时 4 对高速差分对和 2 对辅助通道(SBU)均浮空未使用。插座两面的 D+,D- 通常短接,这使得无需数字电路监控两个 CC 针脚,以最简单、最低成本的模拟电路满足了插座可 180° 旋转针脚定义的要求。
所以 USB 2.0 C-C 线缆只需 5 根线:VBUS,D+,D-,CC,GND;这里的 CC 引脚主要用于 Host 识别到 Device 接入,为其开启 VBUS 电压;旋转针脚定义的功能由模拟电路自行完成。表格中的 Vconn 只有在使用了 E-Makerd 芯片的线缆中才需要用到,普通的 3A 电流,480Mbps 传输速率的 C-C 线缆内部均为 5 芯;6A 电流,480Mbps 传输速率内部为 6 芯。
USB 3.0
首先分析插座电路如何根据 CC 信号旋转针脚定义:
- USB 2.0 使用的 D+ 和 D- 因为速率不高,可以直接将正反两个信号使用铜线短接。
- USB 3.0 使用的差分信号因为速率太高,正反面信号引脚直接使用铜线短接会导致信号完整性问题,此时就需要数字电路监控 CC 信号并使用多路复用器来选择使用哪对差分信号。
再分析插头和线缆,因为 USB 3.0 只使用了两对高速差分信号,另外两对浮空。所以 USB 3.0 C-C 线缆需要 9 根线:VBUS,D+,D-,CC,GND,RX1+,RX1-,TX1+,TX1-;如果该线缆增加了 E-Marked 芯片,则需要 10 芯;
此外,如果使用 A-C 线缆,线缆需要内置上拉电阻,使带有 USB 3.0 功能的 Device 能需要根据 CC 区分正反面:
Alternate Mode 替代模式
除了承载 USB 协议,还可以承载 DP 等其它协议,比如同时保持 DP 和 USB 连接:
在这种模式下,需要全功能 C-C 线缆,即电缆至少有 16 芯。
Audio Adapter Accessory Mode 音频适配器模式
当 Host 的两个 CC 信号同时被小于 Ra(800Ω) 的电阻下拉时,会进入音频适配器模式,使用 Type-C 充当 Audio 接口。此时 Host 所有数字电路都与插座断开:
- D+ 连接右声道
- D- 连接左声道
- SBU1 连接麦克风
- SBU2 连接模拟地
- 由于无法通过 CC 针脚检测插头正反插入,还需要 Host 的电路具备探测并切换两个 SBU 的能力;这同时也是因为没有明确的定义 TRRS 环 GND 和 MIC 的环路
USB Type-C Current
对于普通的 USB 5V 供电,可以通过 Host 端的 Rp 电阻大小向 Device 宣告其最大提供的电流,其中 Device 端的下拉电阻 Rd 均为 5.1K:
- Rp 为 56K,代表只能提供 100mA(USB1.1)、500mA 电流(USB2.0) 或 900mA 电流(USB3.0)
- Rp 为 22 kΩ 时,提供 1.5 A 电流
- Rp 为 10 kΩ 时,提供 3 A 电流
Electronically Marked Cables
对于需要通过 3A 以上电流和 5Gbps 以上速率的 C-C 线缆,需要带有 E-marked 芯片的线缆,以向 Host 宣告其支持的电流和速率。该线缆会使用插头的 Vconn 为芯片供电:
当 Host 通过 CC 信号识别到 Device 接入时,会检测 CC2(Vconn)上是否有 1kΩ 的 Ra,如果识别到,则为 CC2(Vconn)提供正电压:
USB PD
对于需要 5V 以上电压进行充电的设备,可以通过 PD(Power Delivery) 协议进行协商:
协商时使用 CC 信号线,并使用 BMC 编码电平:
整个协商过程如下:
树莓派 4 的供电问题
对于 Device 端,不要因为成本而将 CC1 和 CC2 通过一个电阻下拉,因为带有 E-mark 芯片的 C-C 线缆内置下拉电阻;这会导致 Host 将 Device 识别为一个 Audio 设备而不供电:
总结
对于 Host,通过检测两个 CC 信号获取状态和正反面位置关系:
并根据状态进行操作:
总的来说,Type-C 接口的核心是 CC 针脚,主要有三个功能:1. Host 识别 Device 的接入。2. 识别插头插入的正反。3. 传输USB PD 协商信号。