ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

基于LDR6500的Type-C PD边充边OTG转接器DIY全攻略

基于LDR6500的Type-C PD边充边OTG转接器DIY全攻略 1. 为什么我要折腾一个带充电的OTG转接器手里有一堆Type-C口的设备手机、平板、笔记本平时拷个文件、接个鼠标键盘最顺手的就是OTG。但用过的都知道普通OTG转接器有个特别膈应人的地方——插上U盘或者鼠标之后手机就没法同时充电了。尤其是出门在外手机电量本来就紧张再挂个OTG设备电量掉得跟开闸放水似的。市面上倒是有那种“OTG充电”二合一的转接器但价格参差不齐而且很多便宜货用起来问题不少要么充电功率上不去要么OTG设备识别不稳定要么干脆两个功能互相打架。我拆过几个成品发现里面用的方案五花八门有的甚至就是简单粗暴地把VBUS和GND并联完全没有电源路径管理用起来提心吊胆。后来接触到LDR6500这颗芯片发现它正好切中了这个需求。LDR6500是一颗Type-C PD协议芯片支持DRP双角色端口模式能够动态协商电源角色和数据角色。说白了它可以让你的Type-C口在“供电方”和“受电方”之间灵活切换同时还能处理PD协议通信。用它来做带充电的OTG转接器逻辑上完全走得通。这篇文章就是把我从选型、画电路图、打样、焊接、调试的完整过程整理出来。涉及Type-C接口定义、PD协议基础、LDR6500外围电路设计、电源路径管理这几个核心板块。不管你是刚入门的硬件爱好者还是想找个练手项目的电子专业学生或者单纯想搞明白Type-C那些引脚到底怎么回事这篇内容应该都能给你一些可以直接抄作业的东西。注意本文涉及的是低压直流电路DIY操作时注意防静电、防短路。涉及锂电池的场景请务必使用带保护板的电芯不要拿裸电芯瞎搞。2. 先搞明白Type-C和PD协议到底在干什么2.1 Type-C母座引脚定义与关键信号很多人拿到Type-C母座看到一排引脚就懵了。其实常用的16Pin母座也就是常说的14P或者16P不同厂家叫法略有差异核心引脚就那么几组。我先把最关键的列出来引脚名称功能说明在OTG场景中的作用VBUS电源正极默认5VPD协商后可升压给设备供电或从适配器取电GND电源地公共参考地CC1/CC2配置通道用于检测插入方向、协商角色决定谁是Host谁是DeviceD/D-USB 2.0差分数据线传输USB 2.0数据SBU1/SBU2边带使用通道音频、调试等模式OTG一般不用TX/RX差分对USB 3.0/3.1高速数据线需要USB 3.0时才用这里重点说CC引脚。Type-C之所以能正反插就是因为有两根CC线。插入时Host端的CC上拉Device端的CC下拉通过检测哪根CC上有电压来判断插入方向和角色。在OTG场景里手机通常是DRP或者Source角色它通过CC线告诉外设“我是Host”然后外设回复“我是Device”。SBU1和SBU2这两个引脚在纯OTG转接器里基本是悬空的。它们主要用于Audio Adapter Accessory模式模拟音频耳机或者DisplayPort Alt Mode视频输出。如果你只是做USB数据充电不用管它们。但如果你想把转接器做得更通用可以预留测试点方便以后扩展。2.2 PD协议协商的基本流程PD协议全称USB Power Delivery核心作用是在Type-C接口上实现更高的充电功率和更灵活的供电方向。它的通信是走CC线的用的是BMC编码双相标记编码速率300kbps左右。一个典型的PD协商流程大致是这样的插入检测Source端检测到CC上的下拉电阻确认有设备插入。能力广播Source端发送Source Capabilities消息告诉对方自己能提供哪些电压档位5V/9V/12V/15V/20V等。请求协商Sink端根据自身需求选择一个合适的电压档位发送Request消息。接受确认Source端回复Accept然后调整VBUS电压到目标值。电源就绪Source端发送PS_RDY表示电压已经稳定Sink端可以开始取电。LDR6500在这套流程里扮演的是协议控制器的角色。它负责处理CC线上的PD通信管理电源角色的切换同时控制外部电源路径的导通与关断。2.3 OTG与PD共存的难点在哪里普通OTG转接器之所以不能同时充电根本原因在于VBUS的冲突。OTG模式下手机作为Host需要向外设提供5V电源VBUS。而充电时外部适配器又要向手机提供5V电源。如果直接把两个VBUS接在一起轻则充电器和手机互相“打架”重则烧端口。解决思路有几种方案一电源路径管理IC。用专门的电源多路复用芯片在OTG供电和外部充电之间做切换。缺点是成本高而且很多芯片不支持PD协商。方案二分立MOS管搭建。用PMOSNMOS组合通过逻辑控制实现电源路径切换。成本低但设计复杂容易出问题。方案三PD协议芯片集成路径管理。LDR6500这类芯片本身就带GPIO和电源控制逻辑可以通过固件配置实现“边充边OTG”。这也是我选它的主要原因。LDR6500支持DRP模式意味着它可以在Host和Device之间动态切换。当检测到外部充电器插入时它可以协商让充电器供电同时保持OTG数据通道畅通。具体实现方式后面会结合电路图详细说。3. LDR6500核心电路设计与选型考量3.1 LDR6500芯片关键特性速览LDR6500是一颗QFN封装的PD协议芯片引脚间距0.5mm焊接的时候需要点耐心。它的主要特性包括支持USB PD 3.0协议兼容PD 2.0支持DRP双角色端口模式集成CC逻辑检测和BMC收发器内置MCU支持固件定制提供多个GPIO可用于控制外部MOS管或LED指示工作电压范围宽3.3V到5.5V都能跑我选它的核心原因是GPIO可编程。这意味着我可以通过固件配置让它在检测到充电器插入时自动切换电源路径同时保持数据通道不断开。市面上很多PD芯片是固定功能的做不到这种灵活控制。3.2 电源路径管理电路设计电源路径管理是整个设计的核心。我的思路是这样的默认状态手机通过Type-C母座向OTG设备供电VBUS_OUT同时数据线连通。充电器插入外部充电器通过另一个Type-C口或者同一个口取决于设计接入LDR6500检测到CC信号变化通过GPIO控制MOS管切断手机对OTG设备的供电转而由充电器同时给手机和OTG设备供电。充电器拔出恢复默认状态手机继续给OTG设备供电。具体电路上我用了一颗PMOS比如AO3401作为电源路径开关栅极由LDR6500的GPIO控制。PMOS的源极接充电器VBUS漏极接系统VBUS栅极通过电阻上拉到源极同时由GPIO拉低来导通。提示PMOS的导通条件是高电平关断、低电平导通相对于源极。所以GPIO输出低电平时PMOS导通充电器供电GPIO输出高电平时PMOS关断手机供电。这个逻辑在写固件的时候要对应上。另外为了防止电流倒灌我在手机VBUS和系统VBUS之间加了一颗肖特基二极管比如SS34。这样当充电器供电时电流不会倒灌回手机VBUS。肖特基的压降大概0.3V左右5V供电时损失不大可以接受。3.3 CC引脚与SBU引脚的接法CC引脚的处理直接关系到PD协商能否成功。LDR6500的CC1和CC2分别接到Type-C母座的CC1和CC2上。注意不要在CC线上加额外的上下拉电阻因为LDR6500内部已经集成了可配置的上下拉。外部只需要加ESD保护二极管即可。SBU1和SBU2我直接悬空了因为我的应用场景不需要音频或视频扩展。但如果你想把转接器做得更全能可以把SBU引脚引出来预留测试点。3.4 外围元件选型与参数计算外围元件的选型直接影响稳定性和成本。我把关键元件的参数整理了一下元件型号/参数作用选型理由PD芯片LDR6500协议控制支持DRPGPIO可编程PMOSAO3401电源路径开关导通电阻低SOT-23封装肖特基二极管SS34防倒灌3A电流压降0.3V电容10uF/25VVBUS滤波陶瓷电容低ESR电阻5.1kΩCC下拉如需1%精度ESD二极管PESD5V0S1BACC线保护低结电容不影响信号VBUS上的滤波电容我用了两颗10uF并联主要是为了应对PD升压时的电压波动。如果你只做5V一颗10uF也够用。但考虑到以后可能升级到9V或12V留点余量没坏处。4. 完整电路图解析与实操焊接调试4.1 整体电路框图与信号流向整个转接器的电路可以分成几个模块Type-C母座A接手机或平板作为Host/Device端口。Type-C母座B接充电器作为电源输入端口。LDR6500核心电路处理CC通信和GPIO控制。电源路径管理电路PMOS肖特基实现供电切换。OTG设备接口可以是另一个Type-C口或者USB-A口接U盘、鼠标等。信号流向是这样的手机通过母座A的CC线告诉LDR6500“我是Host”LDR6500配置内部CC为下拉回复“我是Device”。同时手机通过VBUS向系统供电。当母座B插入充电器时充电器的CC信号触发LDR6500中断固件判断后拉低GPIO导通PMOS充电器开始供电同时肖特基阻止电流倒灌回手机。4.2 关键节点电压与波形实测调试的时候我用示波器抓了几个关键波形这里说几个重点CC线电压默认状态下Host端CC上拉电压约5V通过56kΩ上拉Device端CC下拉电压约0.4V。PD协商时CC线上会有BMC编码的脉冲幅度大概1.2V左右。VBUS电压5V供电时实测4.9V左右纹波小于50mV。PD升压到9V时实测8.8V纹波约100mV。GPIO控制信号充电器插入瞬间GPIO从高电平变为低电平响应时间约10ms。这个延迟主要来自固件的中断处理。注意如果你用示波器测CC线记得用高阻抗探头否则会影响PD通信。我一开始用了个低阻抗探头结果PD协商死活不成功换了探头就好了。4.3 焊接顺序与注意事项LDR6500是QFN封装焊接的时候有几个坑要避开先焊芯片再焊外围。QFN芯片底部有散热焊盘需要先涂锡膏用热风枪吹上去。如果先焊了外围元件热风枪的高温可能会把它们吹跑。锡膏量要控制好。太多容易短路太少虚焊。我的经验是用0.3mm的锡膏针头在每个焊盘上点一小滴刚好覆盖焊盘就行。热风枪温度设300°C左右。太高会损坏芯片太低焊不化。风速调到最低档避免吹跑小元件。焊完后用放大镜检查。重点看引脚之间有没有连锡尤其是CC1和CC2如果短路了PD就废了。4.4 固件配置与GPIO逻辑设置LDR6500的固件需要通过专用的烧录器写入。我用的配置大致是这样的CC1和CC2都配置为DRP模式支持动态切换。GPIO1配置为电源路径控制输出默认高电平PMOS关断。GPIO2配置为LED指示充电器插入时点亮。中断配置CC状态变化时触发中断固件在中断里判断是否需要切换电源路径。固件逻辑用伪代码表示大概是这样void cc_interrupt_handler() { cc_status read_cc_status(); if (cc_status CHARGER_INSERTED) { gpio_set_low(GPIO1); // 导通PMOS充电器供电 gpio_set_high(GPIO2); // 点亮LED } else if (cc_status CHARGER_REMOVED) { gpio_set_high(GPIO1); // 关断PMOS手机供电 gpio_set_low(GPIO2); // 熄灭LED } }实际固件比这个复杂一些还要处理PD协商的超时和重试。但核心逻辑就是这么简单。5. 调试过程中踩过的坑与排查技巧5.1 PD协商失败的那些原因PD协商失败是最常见的问题我遇到过好几次。排查下来原因主要有这么几类CC线接反了。Type-C母座有两根CC线如果只接了一根而且接的是错误的那根PD就协商不起来。解决办法是CC1和CC2都接到LDR6500上让芯片自己判断。CC线上有额外电阻。有些教程会让你在CC上加5.1kΩ下拉电阻但LDR6500内部已经集成了外部再加就会导致电平不对。我一开始就是多加了电阻结果协商一直失败。固件配置错误。LDR6500的固件里CC的角色配置要跟实际应用匹配。如果配置成Source但实际接的是Sink那肯定协商不了。电源纹波太大。PD协商对电源质量有一定要求如果VBUS纹波超过200mV可能会导致通信误码。加滤波电容能解决。5.2 OTG设备识别不稳定的处理OTG设备识别不稳定表现为插上U盘有时候能认有时候认不了。这个问题我排查了很久最后发现是VBUS供电不足导致的。手机OTG输出的VBUS电流一般限制在500mA左右如果U盘或者移动硬盘的启动电流超过这个值就会导致识别失败。解决办法有两个一是用低功耗的OTG设备二是加一颗负载开关在VBUS上并联一颗大电容提供瞬时电流支撑。我后来在VBUS上并了一颗100uF的钽电容识别成功率明显提升。但钽电容有极性焊反了会炸这点要注意。5.3 充电时数据断连的解决方案充电时数据断连说明电源路径切换的时候数据通道也受到了影响。这个问题出在MOS管开关瞬间的电压跌落上。当PMOS导通时VBUS电压会有一个短暂的跌落如果跌到4.0V以下USB设备就可能掉线。解决办法是在PMOS的栅极加一个RC延时电路让PMOS缓慢导通避免电压突变。我用了100kΩ电阻和100nF电容延时大概10ms实测效果不错。另一个办法是在VBUS上加大电容提供储能。我用了两颗10uF并联加上前面的100uF钽电容总共120uF足够撑过切换瞬间。5.4 常见问题速查表现象可能原因排查方法解决方案PD不协商CC线接错或多余电阻测CC电压检查电路去掉多余电阻CC1/CC2都接OTG不识别VBUS电流不足测VBUS电压看是否跌落加大电容换低功耗设备充电时数据断电源切换电压跌落示波器抓VBUS波形加RC延时加大电容芯片发热引脚短路或负载过大摸芯片温度测电流检查连锡降低负载LED不亮GPIO配置错误测GPIO电压检查固件配置提示调试的时候建议先单独测PD协商再测OTG数据最后测充电切换。一步步来不要一上来就全接上出了问题很难定位。6. 从原型到成品还有哪些可以优化的地方6.1 PCB布局布线的改进方向我第一版用的是洞洞板焊接虽然能跑通但稳定性一般。如果要做成正式的产品PCB布局有几个点要注意CC线走线要短且等长。CC线是差分信号虽然速率不高但等长走线能减少反射。我建议CC1和CC2的走线长度差控制在5mm以内。VBUS走线要粗。5V/3A的电流走线宽度至少1mm1oz铜厚。如果空间允许用铺铜更好。芯片底部散热焊盘要打孔。LDR6500的QFN封装底部有散热焊盘PCB上对应位置要打几个过孔帮助散热。ESD保护要靠近接口。ESD二极管要尽量靠近Type-C母座走线越短越好否则保护效果打折扣。6.2 成本控制与元件替代方案如果要做小批量生产成本是个绕不开的话题。我算了一下我这版原型的BOM成本大概在15块钱左右主要贵在LDR6500和Type-C母座上。如果要降成本可以考虑用国产替代PD芯片。市面上有一些pin-to-pin兼容的国产PD芯片价格能便宜30%左右但固件可能要重新调。Type-C母座选简化版。如果不需要USB 3.0用16Pin的母座就够了比24Pin的便宜不少。PMOS选更便宜的型号。AO3401已经算便宜了但如果电流不大可以用更小封装的。不过降成本的前提是保证可靠性尤其是电源路径管理部分省什么都不能省MOS管和电容。6.3 扩展功能的可能性这个转接器的基础功能是“边充边OTG”但LDR6500的GPIO还有富余可以扩展一些实用功能电量指示加一颗LED驱动用GPIO控制显示充电状态。过流保护加一颗电流检测芯片超过阈值时切断输出。固件升级接口把LDR6500的烧录引脚引出来方便以后升级固件。多口扩展用一颗USB Hub芯片把一个OTG口扩展成多个同时接鼠标和U盘。我个人最想加的是过流保护因为OTG设备五花八门万一接了个短路的设备没有保护的话芯片直接烧了。加一颗保险丝或者电流检测芯片成本不高但能省不少心。6.4 实测数据与性能评估最后说一下实测数据。我用这个转接器做了几组测试充电功率用PD充电器实测可以跑到9V/2A也就是18W。手机端显示“快速充电”。OTG读写速度接U盘实测读写速度约30MB/s受限于USB 2.0的带宽。切换时间充电器插入到电源切换完成约15ms。数据通道没有明显中断。温升满载运行30分钟芯片表面温度约45°CPMOS温度约40°C可以接受。整体来说这个方案是可行的稳定性也够用。如果你只是想DIY一个自用的转接器按这个思路走基本不会翻车。如果想做成产品还需要在PCB布局和固件稳定性上多下功夫。我个人在实际操作中的体会是LDR6500这颗芯片的灵活性确实高但固件配置需要花时间摸索。官方提供的配置工具功能齐全但文档写得比较简略很多参数需要自己试。建议先从最小系统开始把PD协商跑通再逐步加功能。另外CC线的处理是重中之重搞不定CC后面都白搭。
返回列表