多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

单芯片整合USB2.0 HUB与PD控制器:原理、设计要点与调试实战

单芯片整合USB2.0 HUB与PD控制器:原理、设计要点与调试实战 做过多口充电器或者带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线上的角色协商PDPower Delivery协议走的是CC线Configuration Channel在USB Type-C连接器里CC1和CC2这两根线承担了连接检测、角色声明、供电协商三种功能。PD协商的简化流程是这样的连接建立后设备通过CC线上的上拉/下拉电阻声明自己的角色是Source供电方还是Sink受电方双方进入PD通信模式Source广播自己支持的供电能力组合PDOPower 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上拉/下拉电阻选错。作为SourceCC1/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编号电压档位最大电流典型应用场景15V3AUSB2.0设备、手机常规充电29V3A主流手机快充312V3A平板、部分笔记本电脑420V5A高性能笔记本、高功率设备PPS3.3V~20V5A可平滑调压的兼容补充PDO的排序会直接影响设备协商的结果。PD协议规定Source优先匹配最高的PDO但如果你把20V放在第一位而你的5V口同时要带HUB数据传输就可能导致设备协商到20V后HUB端的供电还在同步切换给枚举带来不必要的压力。所以我的建议是根据产品实际用途决定PDO顺序而不是简单按电压从低到高排列。4.3 角色定义你的产品到底是Source还是Sink这是很多第一次做PD产品的人最容易搞混的地方。BGS3506既然把HUB和PD放在一起它的PD角色必须根据产品形态定义清楚产品是充电站输入来自电源适配器输出给手机/电脑那BGS3506就是Source角色下行CC口都做SourceHUB数据从上行口进产品是多口扩展坞接电脑后由电脑给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阶段这个顺序能省掉大量排查时间。
返回列表