
前段时间我们开源了100W快充+USB3.0(3A+1C)高速传输 PD HUB,今天我们重点介绍下工作原理。
主控芯片是CH634X这颗芯片,采用青稞RISC-V处理器,单芯片集成4口USB3.2 Gen1(5Gbps) HUB和Type-C PD功能,原生支持Type-C正反插以及100W快充。 这就很给力了,一颗芯片搞定。
我们先从CH634X开始分析,先看工作模式, CH634X有3种C口工作模式,可通过PDHUB#、SMBDAT和EXCH# 引脚进行配置选择。

可以看到,模式0跟模式1都是通用的HUB模式,就是单纯的一个HUB功能,模式2可以配置为PD-HUB模式,上行口为单面 Type-C 接口,支持Type-C/PD 快充功能,下行口为1个Type-C 接口 + 3个A 型接口,我们的开源项目就是这种模式。

原理图
这里我们先看一个芯片,CH211C,这是一个内置了高压开关和升压模块的Type-C/PD高压接口芯片。芯片内置了4通道高压开关, 用于MCU的PD信号对接高压Type-C接口,并内置了升压电路,支持外部N型MOSFET功率管控制,CH634X通过I2C控制CH211C。

那为什么需要这个芯片,高压开关是什么,TYPE-C口的CC线直接接CH634X 不就行了吗?
CC信号线主要用来协商电压电流(PD协议通信)、侦测插拔,理论上 CC 线最大电压不会超过 5V,CC线电压是独立于 VBUS 电压的,但在某些异常/热插拔瞬间,有可能由于寄生耦合、ESD、电源反灌等,导致 CC 瞬时电压超过 5V,特别是 Type-C 接口短接插反、VBUS 瞬间上升、或者被错误连接时,可能出现异常电压。


还有就是,C口长期使用后,有一些会导致触点摊开,相邻触点的间距缩小,CC口又紧挨着VBUS口,进一步增加了短路的风险。

所以,USB PD HUB中高压端和低压端的CC线绝不能直接相连,必须使用高压信号开关进行隔离和控制,避免MCU的CC引脚直接承受意外的高压。
简言之,CH211C的第一个作用就是CC线的高压开关,里面有两对PD信号高压开关。
如下图,P6口为纯供电的Type-C口,P6的两个CC口与CH211C的高压CC引脚连接,二选一,CH211C的低压CC口与CH634X连接,这样,通过CH211C,外部高压CC口与主控CH634X的低压CC口就硬件上连接起来了。

PD 协议由 CH634X 实现,原生支持 USB PD2.0/3.0 协议,那当充电器插入供电口P6的时候,信号间到底传输了什么信息?我们先看下PD的连接过程。
1、连接检测(Connection Detection)
- Type-C插入检测:当USB-C线缆被插入时,源端(Source,如充电器)和宿端(Sink,如手机)通过检测CC引脚上的电压或下拉电阻来确认连接。
- - Source(DFP)的CC引脚通过一个上拉电阻(Rp)接到电源。
- - Sink(UFP)的CC引脚通过一个下拉电阻(Rd)接到地。
- 方向确认:线缆插入后,Source会检测到CC引脚上的电压被Sink的Rd拉低,从而判断“有设备接入”。同时,因为线缆内部只有一根CC线连通,Source也能通过检测哪一根CC线被Rd拉低来判断线缆的方向(正插还是反插)。
- 默认供电:在建立PD通信之前,Type-C规范中要求Source会先提供vSafe5V的5V电压并且其可用的供电电流有0.5A,1.5A,3A三种,由其上拉电流声明,具体可见下图。



2. 协议连接(Protocol Connection)
物理连接建立后,双方开始尝试建立数字通信协议
- BMC编码与通信:USB PD使用一种名为BMC (Biphase Mark Coding)的编码方案在CC线上传输数据。这种编码对硬件要求较低,适合单线通信。
- Source_Capabilities:充电器先广播它支持的电压/电流组合(PDO,如 5V 3A、9V 3A、20V 5A 等)。
- Sink_Request:PD HUB连接充电器之后先Request 5V电压,在没有接PC设备前,不能请求高电压。只有当PC设备请求高于5V的高电压时,PD HUB才会进行转发请求更高电压,比如 20V 5A,发送请求。
- 随后向Source发送一条Request消息,指明它选择了哪个PDO。
- 若承载电流在3A以上者,则电缆线内部必须配置E-Marker IC,透过VCONN对E-Marker IC供应电源,使E-Marker IC能提供缆线本身的各项资讯,在使用含有E-Marker IC的缆线时,输出电流最大可达5A,即100W (20V,5A) 如下图。



电源供应端(Source)输出电压由5V改为9V BMC波形

配置E-Marker IC
3、电源协商
- Accept:充电器回应“接受请求”。Source收到Sink的Request消息后,会进行评估,如果认为请求是安全和可接受的,它会回复一Accept消息。收到消息后,充电器切换到请求的电压档位。
- PS_RDY:充电器切换好电压后,发送“电源就绪”。
- HUB 通过 CH211C 完成 VBUS 的切换与隔离,保证高压安全导通。
- 在检测到充电器刚和PC都连接的时候,MOS就已经导通了,这时候给出的是vSafe5V。
- 协商到更高的电压后,再把高压引入PC。

此时,外部充电器一路给PC充电,另一路给主控以及下行 USB接口供电,稳定运行。
在快充时,随着电池电量上升,宿端可能会请求降低充电功率(例如从20V切换到9V),以保护电池寿命。
这里有两种插拔顺序。
一、HUB 先插充电器 → 再插电脑

- 充电器插入HUB,充电器作为 Source,HUB 作为 Sink 会发生 PD通信,但只“选中5V PDO”,HUB 已经拿到并缓存了充电器的全部 PDO 能力表(电压/电流)。
- 当再插上行口到 PC 时,HUB 作为 Source 跟 PC 协商,若需要更高功率,HUB 立即用已知 PDO 对充电器发起二次
Request,充电器Accept/PS_RDY后 VBUS 才升到 9/15/20 V。
二、HUB 先插电脑 → 再插充电器

- HUB插入电脑后还没插充电器的时候,VBUS = 5V(来自 PC),HUB 由这 5V 上电并完成枚举(USB 数据链路建立)。
- HUB 与 PC 之间进行Type-C连接检测,尝试进行PD通信,这时PC 当 Source,HUB 作为 Sink 只需 5V 即可工作。充电侧未连接,HUB 内部电源管理处于PC 的 5V 作为主供电的状态。HUB 是可以缓存 PC 的 PDO 信息的,只是通常不会用。
- 插入充电器后,充电器与 HUB 会进行Source_Capabilities → Request(5V) 的初次 PD 握手,因此 HUB 会收到并缓存充电器的 PDO 列表。
- HUB 在检测到充电器且充电器能力高于 PC 时综合分析后优先使用充电器为系统供电并向 PC 提供电力。
此时如果拔掉充电器,会发生什么?
这里就涉及到USB PD 的供电角色切换功能了(DRP + 反向供电),我们梳理一下:
1、正常状态(充电器插着)
供电路径:PD充电器 → HUB (CH211C开启MOS导通高压) → 上行口C口 → PC 角色:
- 充电器:Source(供电方)
- HUB:Sink(取电),并把电一路 PR_SWAP(power role swap)给PC
- PC:Sink(被充电)
2、拔掉充电器的瞬间
这里CH634X有一个优势,就是FR_SWAP,即快速角色交换,可以在支持的主机上面,拔掉充电器的时候而不掉电,也就是USB设备不掉。
流程简单来说就是在HUB检测到充电器移除时,会立刻在主机端的CC上发出FR SWAP Signal,支持此功能的主机会完成此流程。之后电源角色互换。在此过程中,HUB的电源需要由自身的储能电容供电。
3、PC 继续作为 Host(默认常见)
- PC 的上行口本身能提供 5V@900mA/1.5A (USB 3.0/3.1 BC1.2供电)。
- 当外部 PD 断开后,PC 就通过上行口 VBUS 给 HUB 本身和下游接口供电。
- HUB 的下游口还可以继续工作,但功率受限(只能是 PC 提供的 5V,不再有高压快充)。

这种情况下,PC 上行口开始向下供电了。
这里拔掉充电器后,会关闭充电器一测MOS,使此端口电压保持在vSafe0V,这时HUB和下行口设备的电源由PC提供,下行口供电能力这时取决的PC的供电能力。
总结一下:
在这个 PD HUB 里,CH634X 是 PD 协商的大脑,处理 CC 上的协议栈;CH211C 是高压守门员,保护CH634X远离高压,同时控制NMOS导通和关断。
这样整个 HUB 就能既保证数据传输稳定,又能根据需求从 PD 充电器拉取不同电压电流,在外部供电拔掉的时候,还能切换供电方向,从PC 上行口进行取电,非常完美!

篇幅有点长了,今天这节就只是讲PD这部分吧,过两天把HUB USB部分再讲解一下。
看到这里的都是老粉了,大家点个赞,转发,评论支持下,不然没动力更新了...
#嘉立创PCB#


登录 或 注册 后才可以进行评论哦!
还没有评论,抢个沙发!