1. 边充边OTG到底难在哪:需求拆解与方案选型
做TYPE-C接口产品的硬件工程师,几乎都会在“边充电边OTG”这个需求上栽过跟头。手机通过TYPE-C口外接U盘、键鼠、游戏手柄、采集卡、串口调试模块时,默认进入Host模式,此时手机的TYPE-C口要对外输出5V电源给外设供电。麻烦就麻烦在TYPE-C口只有一组VBUS,一旦对外输出电源,就没办法同时从外部取电给手机充电——除非你动TYPE-C协议里那些专门为“角色切换”设计的心思。
这个项目要解决的,就是让一个TYPE-C口同时干两件事:对外维持OTG Host功能,让U盘和键鼠正常工作;对内保持充电通路,让手机/平板的电池不掉电。市面上常见的土办法有三种:一是改系统软件,强行把USB工作模式切成Host+充电共存,安卓底层确实有相关接口,但手机厂商ROM往往砍掉了这部分逻辑,而且对接口电路有额外要求;二是用模拟开关切换D+/D-通路,配合外部充电芯片,电路可以跑通但每次插拔都要做状态判断,协议兼容性很差;三是用两颗芯片分别处理CC逻辑和电源路径,成本高、布板面积大、调试周期长。
相比这些做法,LDR6028这颗芯片的思路完全不同。它本身就是一颗专门为TYPE-C PD应用设计的协议芯片,内部集成了CC逻辑检测、PD协议协商、VBUS通路控制和OTG信号桥接功能,单芯片就能把电源角色翻转这件事做干净。选定这颗芯片之后,整个项目的核心就变成了“如何把PD协商的结果转化成真实的电源路径切换”,而不是去跟安卓系统的OTG状态机较劲。这也是我把这个项目定位为“实战”的原因——它不只是一个电路,而是一套从协议到功率再到USB信号完整性的完整链路设计。
提示:如果你只是想给手机做个简单的外设转接头,不追求边充边用,LDR6028这套方案确实有点大材小用。但只要你做的是带有持续供电需求的外设——比如将树莓派Zero改造成U盘模式、给便携显示器加反向供电、做带OTG采集的工业设备——这方案就是正向收益。
2. LDR6028的核心机制:怎么用PD协议完成电源角色翻转
2.1 为什么普通单片机方案做不了这件事
在讲LDR6028具体怎么做之前,有必要先理清一个关键问题:为什么很多工程师尝试用STM32或者一颗廉价MCU去模拟CC逻辑,结果都不理想?因为TYPE-C的PD协商不是简单的高低电平判断,它是通过CC引脚上的BMC编码通信完成的——CC线上传输的是经过双相标记编码的差分信号,包含电压、电流能力、电源角色、数据角色等结构化信息。想用GPIO模拟这套流程,你得自己写状态机、做CRC校验、处理超时重传,而且PD协议版本还在不断演进,从1.0到2.0、3.0再到PPS,每种版本对时序和参数的要求都不同。
更麻烦的是,OTG模式下手机作为DRP(双角色端口)设备,它的CC引脚行为本身就处在动态检测过程中。设计者需要在一开始就告诉对方“我是什么设备、我能提供多少功率、我要以什么角色和你通信”,这套握手流程必须在一个非常短的时间内完成,否则手机就会直接拒绝识别外设。用MCU自己写协议栈,很难在成本和稳定性之间找到平衡点。
LDR6028把这一切都固化在芯片内部了。它上电后会自动检测CC1/CC2引脚上的Rp/Rd状态,判断对端是充电器、设备还是DRP,然后根据外部电阻配置的PDO信息,自动完成PD协商。开发者需要关心的不是协议细节,而是“我期望这颗芯片最终呈现什么行为”,然后用电阻和GPIO配置告诉它。
2.2 边充边OTG的协商流程是如何工作的
LDR6028实现边充边OTG的核心逻辑,可以概括为一句话:让充电器直接给手机供电,同时让芯片自己从充电器取电维持OTG信号。这句话听起来简单,但拆开看有两个关键动作。
第一个动作是电源角色交换。手机插入充电器时,按普通情况手机是Device、充电器是Source,手机应该从充电器取电。但你要做OTG,手机就必须把自己当作Host,也就是电源角色上它要变成Source。这时LDR6028会在CC线上向充电器发起PD协议中的电源角色交换(PR_Swap)请求,让充电器保持Source输出VBUS,而手机的角色变成“既是Host又是受电方”——也就是所谓“受电Host”模式。经过PR_Swap之后,充电器继续输出VBUS给手机充电,同时D+/D-上的USB信号由LDR6028桥接给手机,让手机认为自己仍然连接着一个USB Host控制器。
第二个动作是从CC/SBU取电维持自身供电。这个问题很实际:LDR6028芯片要工作,必须有稳定的电源轨。但正常充电器通过CC实现的PD协商是不输出5V以外的电压的,而OTG模式下设备端又希望主控能够稳定输出5V给外设——这两者的能量路径如何在同一个TYPE-C口上共享?答案就在LDR6028的取电设计上:芯片本体可以通过VCONN引脚或直接从VBUS取电,根据外部电路的不同设计,可以选择从充电器的VBUS取电,再从内部稳压出3.3V供芯片本体和外部逻辑使用。这也是为什么该芯片在TYPE-A改TYPE-C的场景中特别受欢迎的原因——它能把整个电源供电逻辑收敛得很干净。
注意:LDR6028有几个不同封装型号,部分型号带内置LDO,部分需要外部供电。选型时务必看清数据手册的VDD引脚要求,我曾经因为想当然接了个5V进去,结果把内部3.3V稳压器直接打穿了。
3. 完整电路设计:原理图级拆解与参数计算
3.1 接口电路:TYPE-C母座、CC引脚与SBU引脚的接法
TYPE-C母座在边充边OTG场景下,涉及的引脚远不止VBUS和GND两对。一个完整的TYPE-C接口有24个引脚,其中关键的信号类别包括:两对高速差分数据线(D+/D-和TX/RX)、两个CC配置通道(CC1/CC2)、两个边带使用引脚(SBU1/SBU2)、以及VCONN引脚用于给线缆芯片供电。
在这个设计中,我们需要关注的是:
- CC1/CC2必须连接LDR6028的CC1/CC2引脚,这是PD协商的唯一物理通路。这两个引脚在芯片内部有比较器,可自动识别电压等级。
- SBU1/SBU2在普通USB2.0 OTG中可以不接,但如果你的设备需要支持模拟音频或DisplayPort Alt Mode,就必须把这组引脚接出来。本项目以USB2.0数据为主,我将SBU引脚悬空处理,但如果追求兼容性,建议引出到标准的音频/视频切换开关。
- D+/D-直接接到LDR6028的USB D+/D-引脚,而不是直接连主控。这两根线在芯片内部经由模拟开关与主控的USB D+/D-连接,PD协商完成后芯片会控制开关切换到正确的通路上。
- VBUS通路需要设计一个受控电源开关,一般使用P-MOS管或者负载开关芯片实现,由LDR6028的输出控制。
接插件选型上,我建议优先选择带金属外壳并且外壳通过磁珠接地或者直接接地的TYPE-C母座,不要小看外壳接地,它直接决定了整个系统的EMI表现。现在市面上很多十几Pin的TYPE-C母座,其实没有引出CC和SBU的完整引脚,买之前看清楚针脚定义,不要只看外观一样就下单。
3.2 供电设计:5V/9V/12V的多档适应电路
LDR6028本身的工作电压范围可以从3.3V到5.5V。考虑到充电器可能是5V/9V/12V等多档输出(取决于PDO协商结果),如果直接给芯片供12V,必然烧毁。所以这里的核心是:VBUS引入后,必须先经过一级降压/稳压,再给芯片供电。
我的方案是使用一颗宽压输入的LDO(例如ME6211或XC6206系列),输入范围4V-18V,输出固定3.3V,最大输出电流300mA,足够LDR6028和外围指示灯等小功率元件使用。虽然LDO效率不高,但芯片自身功耗很小,发热不是问题,而且3.3V电源轨纹波很低,对PD通信的稳定性有好处。
VBUS通路给手机充电的部分不能走LDO,必须直通。也就是说,充电器的VBUS经过TYPE-C母座后分成两路:一路直接连到LDR6028的VBUS检测引脚和电源开关输入端;另一路通过线性稳压后给芯片逻辑供电。当PD协商完成,充电器输出高压(9V/12V)时,VBUS直通路直接给手机充电;低压LDO持续稳定给芯片供电。这个“高低压分离”设计是整个电路可靠工作的关键。
电源开关的选择上,我用了两颗P-MOS背靠背连接(Q1、Q2),控制信号来自LDR6028的VBUS_EN引脚。为什么要背靠背?因为单颗MOS管存在体二极管,在VBUS两侧压差反向时,体二极管会导通,造成无法关断的漏电回路。两颗MOS管源极相连、漏极分别朝向VBUS两端,体二极管方向相反,任何一个导通条件不满足时两边都相互截止,彻底切断漏电通路。具体型号我选了AO3401,VGS耐压20V,ID电流4A,导通内阻典型值只有40毫欧,在3A充电电流下损耗不到0.15W,发热完全可以接受。
3.3 关键参数计算:CC引脚电阻、PDO配置电阻与走线宽度
先看CC引脚。TYPE-C规范要求,设备端的CC1/CC2各自需要下拉一个5.1kΩ的电阻(Rd),当对端充电器检测到这个下拉电阻后,才能识别总线存在并开启VBUS输出。LDR6028内部集成了Rd开关,通常不需要外部再额外焊接5.1k电阻,但为了便于故障排查,我推荐在CC1/CC2上预留一个5.1kΩ贴片电阻的位置(默认不贴),这样怀疑检测异常时可以临时焊上做对比测试。
再看PDO配置。LDR6028支持通过外部电阻分压方式选择PDO组合。以最常见的“5V/3A、9V/2A、12V/1.5A”三档为例,芯片的VSET引脚外接一个电阻分压网络,不同阻值对应不同的PDO电压选择表。我实际用的配置是R3=10kΩ、R4=20kΩ,分压比得到1.65V,对应设置电压为9V档优先。这个参数在不同批次芯片上可能略有差异,务必以官方数据手册的最新版本为准。
走线宽度值得单独提一句。VBUS通路上的充电电流最高可能到3A,按照1盎司铜厚、允许温升10℃的经验值,走线宽度不少于2mm,或者直接铺铜皮。如果板上空间紧张,至少也要保证1.5mm以上宽度并配合散热过孔。D+/D-差分对走线控制在90Ω±10%特性阻抗,并尽量在同一层短距离平行走线,避免跨越分割区域。
经验:我之前第一版PCB就是因为VBUS走线只画了0.8mm,在2.5A充电时实测压降达到0.35V,导致手机认为充电器功率不足,拒绝开启快充。后来改成2mm直连后才恢复正常。TYPE-C这类大电流场景,走线压降一定别忽略,它直接参与协议判定的。
4. 从原理图到PCB:布局要点与信号完整性实战
4.1 功率回路与信号回路的物理隔离
PCB布局是整个项目能否稳定工作的分水岭。LDR6028本身是一颗小尺寸协议芯片,引脚间距不大,但它的工作同时涉及功率路径和高速信号路径——这两种路径对布局的要求截然相反:功率路径希望宽而短、铜皮连续,信号路径希望阻抗受控、远离干扰源。设计时必须把两者在物理空间上分开。
我的做法是,在PCB上以TYPE-C母座为分界线,一侧集中放置功率器件(P-MOS、VBUS走线、去耦电容),另一侧放置LDR6028和USB信号走线。功率器件的地和信号地在一个点相连,避免地平面被功率电流污染。CC1/CC2走线远离VBUS高压走线,间隔至少2倍线宽,防止CC线上的微弱信号被充电通路的开关噪声干扰——CC上的BMC编码信号幅度不大,一旦被干扰,会出现PD协商失败、手机反复枚举外设的现象。
4.2 时钟与噪声:LDR6028系统里的“隐形地雷”
边充边OTG系统里LDR6028往往不是唯一的芯片,如果配合主控MCU(比如做采集卡或游戏外设时还会有主控芯片),那么系统里就会存在晶振时钟、I2C控制信号、USB高速信号等等。这些信号叠加在一起时,如果布局不规范,很容易出现“功能都能用,但偶尔死机”的疑难杂症。
地平面的完整性是这里的关键。我建议整个板子使用完整地平面,不在信号层直接开槽。如果必须分割,分割线的下方不能走任何跨分割的高速信号线,否则信号回路面积会急剧增大,产生强辐射和地弹。LDR6028的电源引脚旁边必须就近放置0.1μF和10μF的去耦电容——0.1μF滤高频,10μF做储能,两个电容都放在距离引脚不超过2mm的位置。这个动作看似简单,如果偷懒省掉,PD通信时的电源纹波会直接从芯片内部串扰到CC驱动电路,轻则协商失败,重则芯片反复复位。
另一个容易被忽略的点是VCONN引脚。如果TYPE-C线缆里带了eMarker芯片,VCONN就需要输出3.3V给线缆芯片供电。VCONN引脚本身输出能力有限,而且纹波要求很高。设计时VCONN线上至少放一个1μF陶瓷电容,还得远离D+/D-走线,否则线缆芯片电源上的噪声会耦合到USB数据线上,直接影响OTG传输稳定性。
5. 打样调试实录:问题定位与常见坑排查
5.1 上电时序与CC检测失败的处理
第一版PCB打样回来,我先不接手机和充电器,直接给TYPE-C公头接入一个5V电源适配器,然后测量LDR6028供电是否正常。实测3.3V输出正常,然后用示波器挂在CC1引脚上观察,发现上电后CC1电压稳定在0.4V,这表示芯片已经正常下拉了Rd。这说明LDO供电、复位、晶振基本没问题。
接着我把手机(开启OTG)通过A转C线接入设备,观察现象:手机显示“正在通过USB供电给外设”,但外设没有枚举出来。这个现象说明CC检测方向正确,但USB数据通路没有建立成功。排查时用万用表量D+/D-静态电压,发现都在0V——正常情况下,接入USB Host后D+会被主控上拉到3.3V。这里的问题就出在,我的电路里D+/D-经过LDR6028内部的模拟开关,芯片必须完成PD协商并对开关状态进行配置后才会把主控的D+信号桥接到TYPE-C母座侧。而这次协商没有完成。
进一步排查发现,问题出在我用的手机在进入OTG模式后,其CC引脚下拉电阻是Open状态,而LDR6028默认配置成了上行端口(UFP)模式在等待Source。两边都在等对方先说话,自然协商失败。解决方式是给LDR6028配置成DRP模式(双角色端口),让它周期性翻转角色,这样无论是插入充电器还是插入手机,芯片都能正确识别对端设备类型并完成协商。
5.2 边充边OTG模式下USB反复掉线问题
第二版固件和配置修正后,充电和OTG都能跑通了,但出现了另一个让人头大的问题:USB外设运行一段时间后会掉线重连,间隔几十秒甚至十几秒出现一次。这种间歇性问题最消耗调试时间,因为不是每次都复现,而且看起来没有任何规律。
我的排查顺序是:先排除充电器功率不足(换了一个65W充电器,问题仍在),再排除线缆问题(换了好几根USB2.0线),最后用示波器同时抓CC1、VBUS和D+信号。抓到D+上存在周期性毛刺,且与充电电流的开关纹波在时间上重合。进一步追查,发现VBUS上的去耦电容虽然放了,但放在了TYPE-C母座和P-MOS之间,而不是P-MOS和LDR6028的VBUS检测引脚之间。这个位置差异导致芯片检测到的VBUS实际是被开关噪声污染后的信号,偶尔触发了芯片内部的过压/欠压保护逻辑。
调整布局后,把VBUS检测线路直接改到从母座端子处短距离引出,加了一颗4.7μF电容对地滤波,问题就彻底消失了。这里要特别提醒:LDR6028的VBUS检测引脚应该尽量靠近TYPE-C母座端,不要在检测点之后串联任何会产生电压降的功率器件,检测引脚的参考点必须是母座的VBUS端子本身。
5.3 常见问题速查表:从现象到根因
| 故障现象 | 可能原因 | 排查方法 / 解决措施 |
|---|---|---|
| 手机插入后无任何OTG反应 | CC引脚未正确下拉,或LDR6028未上电 | 检查CC1/CC2到芯片引脚的连接,测量芯片VDD电压 |
| 充电正常但外设无法枚举 | D+/D-桥接开关未导通 | 用示波器检测母座端D+D-电平,确认PD协商是否完成 |
| 外设偶发掉线重连 | VBUS检测引脚受开关噪声干扰 | 将检测线路改接到母座引脚近端,增加4.7μF滤波电容 |
| 快充不生效一直5V | PDO配置电阻分压不对 | 核对VSET引脚分压电阻阻值,对照数据手册PDO配置表 |
| 整机静态功耗过大 | 电源开关MOS未完全关断 | 检查背靠背MOS接法,源极是否相连,体二极管方向 |
| 插拔瞬间手机重启 | VBUS容性负载过大 | 在VBUS输出端增加软启动电容或使用带限流的负载开关 |
还有一个很实用的排查技巧:在TYPE-C母座的VBUS和GND之间预留一个LED指示灯电路,不做控制只用限流电阻驱动。调试时这个LED能直观告诉你VBUS有没有电、有没有在插拔瞬间掉电——比万用表好用,因为LED的亮度变化在视觉上非常敏感。
6. 这次设计最后沉淀下来的经验与扩展方向
写完这套方案,回顾整个设计过程,我最大的体会是:LDR6028这类专用协议芯片,真正的价值不在于帮你省掉几颗电阻电容,而在于把“协议协调”这件最容易出错、最消耗调试时间的复杂工作给接管了。硬件工程师只需要定义清楚“我要什么结果”,剩下的CC检测、PD协商、角色切换都由芯片自动完成。这让我可以把精力集中在功率路径设计、PCB布局这些硬件本质问题上。
最后再分享一个实用的小技巧:LDR6028支持I2C接口,可以读取当前PD协商状态和角色信息。在产品量产阶段,我建议在板子上预留一个I2C测试点或排针,配合USB转I2C调试器,可以在现场快速确认芯片处于哪种角色、协商的电压电流是多少、是否有过流事件触发。这个调试口在生产测试和售后返修时能帮你省下大量时间,千万不要省。
如果后续你在自己的项目里也用这颗芯片,建议从官方Demo板的电路开始改,先跑通基本功能,再逐步做裁剪,不要一上来就追求最小化电路。边充边OTG这个功能,涉及协议、电源、信号完整性三个维度,每个环节都有坑,按部就班调试才是最高效的路径。