做过多口充电器或者带USB口扩展坞的工程师,大概率都经历过这种局面:产品外壳已经定型,却发现主控之间的时序对不上。传统方案里,USB2.0 HUB控制器和PD控制器是两颗独立的芯片,一个管数据信号分配,一个管电压电流协商,两者之间必须靠I2C或UART做握手。握手时序差一点,就会遇到"插上不识别""协商半天不上电""某个口带不动硬盘"这种非常诡异的问题。
苏州博捷的BGS3506把USB2.0 HUB和PD控制器做进同一颗芯片,我第一次看到这个方案的反应是:终于不用同时调两套固件、对两套状态机了。简单说,BGS3506解决的是一类非常具体的产品痛点——设备需要同时具备"多口USB数据扩展"和"PD快充/受电管理"两个能力,但不想在PCB上摆两颗主控。这篇文章我就围绕这颗芯片,把单芯片方案的原理、硬件设计要点、固件配置逻辑以及我在实测中踩过的几个坑完整讲一遍。
如果你是做扩展坞、桌面充电站、智能显示器支架这类产品的硬件工程师或嵌入式工程师,这篇内容会比较对口。哪怕你只是刚接触USB HUB和PD协议,前两个章节也能帮你把这套概念的底层逻辑理顺。
1. 传统双芯片方案的痛点:为什么HUB和PD必须协同
1.1 双芯片方案的典型架构与协同问题
先看传统方案长什么样。一个带PD供电输出的多口HUB产品,主控部分通常是两颗芯片:
- 一颗USB HUB控制器,负责上行口与下行口之间的数据转发;
- 一颗PD控制器,负责CC线通信、PDO协商、电压电流调配。
两颗芯片各自有MCU核心,也各自有固件。为了让整个产品按照设计逻辑工作,HUB控制器需要知道当前PD协商出了什么电压,PD控制器也需要知道某个下行口是不是接了设备、该不该送电。于是硬件上拉一条I2C总线,软件上做一套通信协议,把两边的状态同步起来。
这个架构本身没有问题,问题出在工程实现上。I2C握手是异步的,PD协商完成、VBUS电压爬升、HUB复位释放这三个动作只要时序没有对齐,就可能出现下行口枚举失败。我见过一个案例:某款产品在特定品牌的电脑上总是无法识别USB3.0 U盘,最后发现是PD协商出9V以后,HUB芯片的供电路径切换速度慢了几毫秒,导致设备已经进入枚举流程,VBUS却还没稳定。
1.2 BGS3506单芯片整合的核心价值
BGS3506的思路很直接:既然两套状态机本质上都是"电源管理+数据管理的联动逻辑",为什么不让它们在同一个MCU核心里跑?
单芯片方案带来的三个直接好处,我实际用下来的感受非常明显:
- 消除跨芯片握手时序问题。PD协商结果和HUB端口电源开关在芯片内部直接联动,不需要通过I2C再绕一圈,时序上能做到准同步。
- 降低BOM成本和PCB面积。去掉一颗主控、一路I2C上拉电阻、部分滤波电容和电平转换电路,对紧凑型产品(比如墙插式充电HUB)来说很关键。
- 固件维护简单。原来要同时维护两颗芯片的固件,还要保证版本兼容,现在只需要维护一颗芯片的固件配置。
当然,单芯片方案对芯片本身的设计要求更高,这意味着芯片内部的电源完整性、数字逻辑与模拟电路的隔离都要做到位,否则又会出现新的干扰问题。不过从BGS3506目前的表现来看,它在这些方面的处理是可用的。
注意:下面涉及的具体参数,比如下行口数量、PDO支持范围、寄存器地址等,均以苏州博捷官方数据手册为准。我在这里描述的是这类单芯片方案通用的设计逻辑,具体数值不要直接照搬。
2. USB2.0 HUB和PD协议的核心机制,以及单芯片整合的架构逻辑
2.1 USB2.0 HUB到底做了什么
很多人对HUB的理解停留在"一个口变多个口",但HUB内部的工作远比这个复杂。USB2.0是主从架构,主机在枚举过程中要完成设备地址分配、配置读取、带宽分配等动作,HUB的工作就是把这些事务在下行端口之间合理调度。
一个USB2.0 HUB内部有几个关键部分:
- 上行端口物理层,负责与主机通信;
- 事务译者(Transaction Translator,简称TT),这是USB2.0 HUB的核心,因为我们插在下行口上的设备可能是全速(12Mbps)或低速(1.5Mbps)的,而主机与HUB之间是高速(480Mbps)通信,TT负责把高速事务转换成低速事务;
- 端口电源管理逻辑,每个下行口都有独立的过流检测和电源开关控制。
所以HUB控制器本质上也是一个带状态机的MCU,它要实时跟踪每一个下行口的状态变化,包括设备插入、移除、复位、挂起、恢复等,任何一个环节出错都会导致操作系统报"无法识别的USB设备"。
2.2 PD协议的核心:CC线上的角色协商
PD(Power Delivery)协议走的是CC线(Configuration Channel),在USB Type-C连接器里,CC1和CC2这两根线承担了连接检测、角色声明、供电协商三种功能。
PD协商的简化流程是这样的:
- 连接建立后,设备通过CC线上的上拉/下拉电阻声明自己的角色是Source(供电方)还是Sink(受电方);
- 双方进入PD通信模式,Source广播自己支持的供电能力组合(PDO,Power Data Object),比如5V/3A、9V/3A、20V/5A;
- 双方通过显式控制消息敲定工作的电压电流档位;
- Source把VBUS切换到协商好的电压,完成供电。
PD协议本身是一种基于FSK调制的双相标记编码通信,逻辑上是一套完整的状态机,涵盖错误恢复、重协商、角色互换等异常分支。这就是为什么PD控制器再小也得有一颗MCU核心的原因——它不只是"按电阻分压决定输出多少伏",而是要做实时的通信和决策。
2.3 单芯片整合的架构收益:原子化的电源和数据联动
BGS3506把两套状态机放在同一颗芯片里,产生了一个关键优势:电源动作和数据动作可以原子化完成。
举个例子。一个带PD Sink功能的多口HUB,外部接的是一个GaN充电器,HUB从充电器取电,再给下行口的手机、移动硬盘供电。传统方案里,当某个下行口插入大功率设备时,HUB控制器要先通过I2C告诉PD控制器"功率不够了,请重协商到更高电压",PD控制器协商完再回复HUB"可以了",这个过程在系统层面可能要走好几个任务周期。
单芯片方案里,HUB逻辑可以直接触发内部的PD重协商请求,把状态切换放在同一个时钟周期内完成。实际效果就是:插入高功率设备时,VBUS电压调整和端口电源重配置的间隔更短,设备不会经历明显的"断电重启"过程。
这个特性在做多口充电站类产品时特别有用。你希望的是当三个口同时有大功率设备接入时,系统能平滑地重新分配功率,而不是让某个设备瞬间掉电再重来。
3. 基于BGS3506的原理图设计与PCB布局实操
3.1 电源架构设计:VBUS路径是重中之重
不管芯片本身集成度多高,电源通路的设计永远不能省。BGS3506这类单芯片方案,因为把PD功率管理和HUB电源分配放一起了,VBUS路径上的压降、纹波、瞬态响应会直接影响USB设备的枚举稳定性。
实际设计时我一般按这几步来:
- 根据产品定义确定输入源和功率等级。如果产品是"充电插头+HUB"形态,输入通常是AC-DC适配器模块给出的固定直流,BGS3506需要把输入的受电能力通过PD协议向上游声明,或者直接作为Source向下游供电。如果是"扩展坞"形态,则要考虑上行CC口既能从电脑取电也能给电脑充电,也就是DRP(双角色端口)模式。
- 确定每个下行口的独立供电能力。HUB的每个下行口都要有独立的负载开关和过流保护,BGS3506的主机接口会预留对应的控制引脚,原理图上要把这些引脚连接到VBUS路径上的PMOS栅极驱动电路。
- 在VBUS路径上放足够的电容。USB2.0设备枚举瞬间会有浪涌电流,尤其是带电机或机械结构的设备(比如移动硬盘、USB小风扇),建议在输入和每个下行口输出端都放220uF左右的电解电容或钽电容,具体容值根据最大负载电流计算,保证电压跌落不超过200mV。
3.2 一个典型的电源电路拓扑
以"上行口取电+下行口供电"的扩展坞为例,电源部分的电路逻辑如下:
- 上行Type-C口通过CC引脚接入BGS3506的PD物理层,BGS3506完成Sink角色协商后,把VBUS输入引入芯片的电源管理模块;
- 芯片电源管理模块输出稳压后的VDD供芯片内部逻辑,同时控制几个外部PMOS的栅极,分别给各个下行口提供VBUS;
- 每个下行口的VBUS输出端设置一个电流检测电阻,反馈到BGS3506的过流检测引脚,超过阈值时芯片自动断开该端口;
- 如需支持上行口"边充边传输"(也就是扩展坞同时给笔记本电脑充电),还需要在电路上增加一路从外部适配器到上行口VBUS的直通路径,这个路径同样由BGS3506的内部开关控制。
这里面最容易忽略的一点是:不要把所有下行口的过流阈值设成同一个值。手机充电口的阈值和USB硬盘口的阈值明显应该不同,BGS3506的寄存器配置支持按端口设置,这是硬件设计之初就要规划好的,而不是等到固件调试阶段才考虑。
3.3 USB2.0差分线布线:照规矩做就不会翻车
USB2.0高速信号的布线要求不算苛刻,但有一些红线不能碰:
- 差分阻抗控制在90欧姆±10%。两层板可以通过调整差分线宽和间距实现,四层板则参考相邻参考层;
- 差分对内等长,长度差控制在5mil以内;
- 尽量减少过孔,一对差分信号最好同一层走完;
- 不要在差分线中间插入其他信号线,也不要跨分割参考面。
BGS3506在设计上对PCB布局比较友好,USB2.0引脚位置通常和电源引脚有合理的隔离。我建议把HUB下行口的差分对先行布好,优先保证它们跟器件之间的走线最短,再回来调整电源走线。因为电源走线可以加宽、可以走过孔,差分信号一旦绕线绕太多,EMC问题和信号质量问题都会接踵而至。
3.4 CC引脚与检测电路细节
CC引脚的电路设计往往是PD产品的翻车高发区。常见的问题包括:
- CC上拉/下拉电阻选错。作为Source,CC1/CC2上需要一个5.1kΩ上拉电阻到5V;作为Sink,则需要5.1kΩ下拉到地。BGS3506内部一般会集成这些电阻,但如果产品的应用场景要求外部控制死电池模式或Try.SRC行为,就要对照规格书确认是否需要在外部再补充其他值的电阻。
- 缺少ESD保护。CC线是直接引出到Type-C接口的,没有ESD保护二极管很容易在插拔时被静电打坏。建议在连接器端加一颗低结电容的ESD防护器件,电容要求小于2pF,否则会影响CC信号的通信波形。
3.5 热设计:单芯片不代表发热集中
很多人觉得单芯片方案发热会集中,其实不一定。BGS3506的封装设计通常会把功率输出引脚和逻辑引脚分开布局,散热路径主要靠底部的热焊盘。PCB设计时要在芯片底部打过孔阵列,把热量导到背面铜皮,再用大面积铺铜扩大散热面积。
我实测过一款4口充电HUB,满载输出时芯片表面温度约55摄氏度,外壳温度控制在50度以内。如果没有底部过孔阵列,这个数值预计会高8-10度。所以,画PCB时别省那几十个过孔。
4. 固件配置与PD策略:让BGS3506按产品定义工作
4.1 固件配置的三个层级
单芯片方案的固件配置,我习惯拆成三个层级来理解:
- 基础配置:端口的使能与开关、过流保护阈值、LED指示逻辑、过温保护点;
- PD策略配置:PDO列表、供电角色、PPS调压范围、重协商策略;
- 应用调度行为:下行口功率分配策略、插入事件触发逻辑、异常恢复流程。
BGS3506提供寄存器或配置工具来完成这些设定。量产阶段通常是在出厂前通过I2C烧录口把配置文件写入芯片内部的Flash或OTP区域,也支持在线调试时修改。
4.2 PD策略配置:输出多少电压、分配多少功率
PD部分最核心的配置就是PDO表。一个标准的多电压档PDO表大概长这样:
| PDO编号 | 电压档位 | 最大电流 | 典型应用场景 |
|---|---|---|---|
| 1 | 5V | 3A | USB2.0设备、手机常规充电 |
| 2 | 9V | 3A | 主流手机快充 |
| 3 | 12V | 3A | 平板、部分笔记本电脑 |
| 4 | 20V | 5A | 高性能笔记本、高功率设备 |
| PPS | 3.3V~20V | 5A | 可平滑调压的兼容补充 |
PDO的排序会直接影响设备协商的结果。PD协议规定Source优先匹配最高的PDO,但如果你把20V放在第一位,而你的5V口同时要带HUB数据传输,就可能导致设备协商到20V后,HUB端的供电还在同步切换,给枚举带来不必要的压力。所以我的建议是:根据产品实际用途决定PDO顺序,而不是简单按电压从低到高排列。
4.3 角色定义:你的产品到底是Source还是Sink
这是很多第一次做PD产品的人最容易搞混的地方。BGS3506既然把HUB和PD放在一起,它的PD角色必须根据产品形态定义清楚:
- 产品是"充电站",输入来自电源适配器,输出给手机/电脑,那BGS3506就是Source角色,下行CC口都做Source,HUB数据从上行口进;
- 产品是"多口扩展坞",接电脑后由电脑给HUB供电,同时也可以给电脑反向充电,那BGS3506就是DRP角色,上行口需要动态处理角色切换;
- 产品是"带数据功能的移动电源",输入取电、输出放电都要支持,那就要启动DRP或双角色协商,在状态机层面同时保留两种角色路径。
角色配置错了,最典型的症状就是插上后对方设备完全无响应,或者按了快充按钮却一直停留在5V。排查的时候看一眼角色配置往往能当场发现问题。
4.4 枚举时序与供电唤醒顺序
HUB枚举是最容易被忽略的时序问题来源。所谓枚举,是主机与USB设备之间的一整套初始化通信过程。对BGS3506这样的单芯片方案来说,上行口插入主机后,需要先完成PD协商(如果上行口是Type-C取电),再释放HUB复位,让主机开始枚举。
我实际设计中推荐的上电顺序是:
- VBUS建立并稳定;
- 芯片内部电源域全部ready,包括PD物理层和HUB数字核心;
- PD协商完成,确认VBUS电压档位;
- 释放HUB的复位信号,下行口开始试枚举;
- 下行口检测到设备插入后,按端口策略逐个使能端口电源。
BGS3506固件里通常会提供对应的事件标志位或中断,配置时一定要确认这些事件之间的依赖关系,别把步骤4提前了,否则主机枚举设备时设备还没做好准备,会被识别为"枚举失败"。
5. 实测记录:典型故障现象、排查路径与整改结果
5.1 问题一:下行口枚举失败率高,特定设备必现
某次测试中,我拿BGS3506做了一款4口HUB,接普通U盘时工作正常,但接一块机械移动硬盘时出现很高的概率无法识别。
排查过程:
- 第一步,用示波器抓VBUS的上升波形,发现移动硬盘插入瞬间VBUS跌落超过400mV,持续时间接近5ms;
- 第二步,确认机械硬盘启动电流较大,而当前端口过流阈值设的3A,按理不应该触发保护;
- 第三步,查看过流保护电路的反应时间,发现保护触发得太快,直接把端口断开了。
最终整改:把该端口的过流保护阈值和消隐时间调整为更匹配电机类设备的参数,同时增大VBUS输出电容,问题解决。
这个案例想说的是:同一条PCB,不同下行口对应的负载特性完全不同。调试的时候要根据实际负载的设备类型来调整每个口的独立参数,不要嫌麻烦。
5.2 问题二:PD协商反复失败,表现为"充电指示灯闪个不停"
另一个案例是PD协商失败。设备插入后,VBUS一直以5V输出,无法协商到9V/12V。
排查过程:
- 用PD分析仪抓CC线上的通信波形,发现Source发出的PDO广播消息,Sink没有正常应答;
- 检查CC探路阶段的电阻值,发现外部电路加了一个多余的5.1k下拉电阻,导致Sink角色的等效下拉不是标准的5.1kΩ,信号电平偏差正好触到PD接收灵敏度边界;
- 去掉多余的电阻后,协商恢复正常。
这也是我前面强调CC电阻的原因。常规情况下芯片内部下拉已经够用,外部再叠加会成为"干扰源"而不是"增强信号"。
5.3 问题三:量产批次一致性差,部分板子高速枚举失败
有一批板子在产线上全测通过,到客户手上部分出现"只能用USB1.1速度"的现象。
排查过程:
- 观察故障板差分信号波形,眼图质量明显偏差,特别是靠近连接器的地方有振铃;
- 对比良好板与故障板的PCB,发现故障板的差分线参考平面被一条电源走线切断,导致阻抗突变点刚好在连接器附近;
- 重新改版,确保差分线完整跨越参考平面,问题不再出现。
这类问题在两层板的产品上尤其容易出现,因为参考平面不完整。做USB2.0产品,要么保证参考层完整,要么在布线时严格按90欧姆阻抗控制并避免跨分割,没有第三条路。
5.4 调试工具与基础排查套路
排查USB枚举类问题时,我建议手头常备三样东西:USB协议分析仪(或者带抓包功能的逻辑分析仪)、示波器(至少100MHz带宽,最好200MHz以上)、可调电子负载。
排查顺序也很固定:
- 先看VBUS电压和电流是否正常;
- 再看CC线上的PD协商是否完成;
- 然后看HUB的上行口能否正常枚举;
- 最后逐个下行口插设备测试,观察每个口的电源时序和保护动作。
按照这个顺序,绝大多数问题都能定位到硬件通路、PD配置、HUB逻辑中的某一层,不会乱。
5.5 EMC与静电:走线纠偏之外最容易被要求整改的项
在送样做认证时,ESD和EMC也是常见的整改点。BGS3506方案在这方面的表现,很大程度上取决于PCB设计,而不是芯片本身。
我的经验是:
- 每个Type-C连接器必须就近放置ESD保护器件,CC、VBUS、DP/DN都要保护,连接器外壳接地要短粗直接;
- USB2.0差分线要加强共模扼流圈(CMC)的位置预留,但这个器件必须放在连接器和芯片之间距离尽量短的地方,距离拉远了反而容易引入寄生电容;
- 电源输入端预留磁珠位置,应对传导骚扰测试。
预留位置比后期加板要便宜很多。凡是做Type-C相关产品的原理图,我都会要求预留共模电感和磁珠位置,哪怕打样初期先不贴。
经过这几轮设计、测试和整改之后,我自己的结论是:BGS3506这类单芯片方案,特别适合产品定义清晰、追求紧凑布板、不想在双芯片握手上持续投入的团队。它的学习成本集中在PD协议的理解和端口电源策略的配置上,一旦把这部分理顺,开发周期和调试成本相比传统方案有明显的缩减。如果你想做一款扩展坞或者多口充电站,可以先用官方评估板把PDO和端口行为跑通,再进入自己的Layout阶段,这个顺序能省掉大量排查时间。