深入解析TPS65987D:FRS、死电池与BC1.2三大核心功能设计实战

发布时间:2026/7/25 1:32:44
深入解析TPS65987D:FRS、死电池与BC1.2三大核心功能设计实战 1. TPS65987D现代设备供电与连接的核心枢纽如果你拆开一台近几年的高端笔记本电脑、显示器或者高性能扩展坞有很大概率会在其USB Type-C接口附近找到一颗来自德州仪器TI的芯片——TPS65987D。这枚芯片远不止是一个简单的接口芯片它是整个设备能否实现“一线通”单线缆传输数据、视频并供电的灵魂。在USB Type-C和Power DeliveryPD的世界里它扮演着协议翻译官、电力调度员和安全卫士的多重角色。简单来说没有它你的设备可能就无法通过那小小的Type-C口实现100W的快速充电、4K60Hz的视频输出以及10Gbps的数据传输。我接触过不少基于这颗芯片的设计从最初的手忙脚乱到后来的游刃有余深感其功能之强大与设计之精妙。今天我们就深入这颗芯片的“内脏”重点聊聊三个在实际产品开发中至关重要却又容易被数据手册复杂描述所掩盖的功能快速角色交换FRS、死电池操作和BC1.2充电检测。理解它们你就能明白为什么你的笔记本能在插着电源的同时还能通过同一个Type-C口给手机快速充电FRS为什么电池完全没电的电脑插上充电器后还能开机进入恢复模式死电池操作以及为什么一个老旧的USB-A充电器插上Type-C转接头依然能给新设备充电BC1.2检测。2. 快速角色交换FRS无缝切换的供电指挥权想象一个场景你的笔记本电脑正在通过Type-C线连接显示器笔记本作为“源”Source为显示器供电并传输视频信号。此时你拔掉了笔记本的电源适配器笔记本的电池开始放电。为了节省电量你希望立刻将供电角色反转让已经接通电源的显示器反过来给笔记本充电。如果没有FRS这个过程会非常笨拙需要先断开连接等待双方重新协商再建立新的供电合同耗时可能长达数秒期间视频信号会中断。而FRS的目标就是在不断开数据连接如DisplayPort Alt Mode的前提下在毫秒级别内完成供电角色的互换。2.1 FRS的硬件实现机制TPS65987D在硬件层面为FRS提供了直接支持这比纯靠固件轮询检测要快得多也更可靠。其核心在于对CCConfiguration Channel引脚电压的实时监控。当端口配置为接收端Sink且使能FRS时芯片会持续监测CC引脚上的电压。这个电压是由对端的Source通过上拉电阻Rp产生的。一旦检测到CC电压低于一个特定的阈值VTH_FRS典型值可能在0.4V左右具体需查数据手册硬件会立即向数字核心发出一个中断信号。这个电压骤降就是来自对端Source的“求救信号”或“指挥权移交请求”。数字核心收到此信号后会立即终止当前的Sink行为并迅速切换为Source角色开始在自己的CC引脚上提供上拉电阻Rp并准备在VBUS上输出电压。注意VTH_FRS这个阈值非常关键。设置得太高容易受到噪声干扰而误触发设置得太低则可能无法及时响应真正的角色交换请求。TI通常会在数据手册或应用笔记中给出推荐值设计时务必遵循。反之当端口作为供电端Source且使能FRS时如果数字核心例如基于系统电量状态决定发起角色交换它会直接控制一个内部的下拉电阻R_FRSWAP如图8-15所示连接到CC引脚。这个动作会瞬间将CC线的电压拉低。对端的Sink设备也必须支持FRS检测到这个电压跌落低于其VTH_FRS后就会明白“哦Source没电了需要我接管供电”从而触发其自身的Sink到Source的切换。2.2 设计考量与避坑指南在实际电路设计中FRS的稳定性和速度取决于几个细节CC引脚的RC常数CC线上通常会有对地的滤波电容如图9-1中的220pF C2/C3。这个电容不能太大否则会延缓电压的上升/下降沿导致FRS检测变慢甚至失败。TI的典型参考设计是220pF这是一个在噪声滤波和信号速度间取得平衡的值除非有极强的EMI问题否则不建议随意增大。R_FRSWAP的阻值这个内部下拉电阻的阻值需要足够小以确保能将被拉高的CC电压通常约0.66V或1.23V取决于Source的电流能力快速且可靠地拉低到阈值以下。芯片内部已经做了优化我们无需担心。固件配合硬件检测只是第一步。数字核心在收到FRS信号或决定发起FRS后必须能够快速执行一系列操作更新PD状态机、控制电源路径开关如内部或外部的MOSFET、调整VBUS的电压/电流。这就要求固件的中断服务程序ISR要足够高效不能有冗长的延迟操作。一个我踩过的坑在早期的一个扩展坞项目中我们启用了FRS但在测试时发现角色交换成功率不高。后来用示波器抓取CC波形发现电压跌落是正常的但我们的固件在ISR中进行了大量的日志打印和状态上报导致角色切换动作慢了近10ms有时对端设备已经超时放弃了。教训是FRS相关的处理代码路径必须极致优化避免任何非必要的阻塞操作。3. 死电池操作绝境中的系统生命线“死电池”Dead Battery或“无电池”No-Battery模式是TPS65987D一个极具实用价值的功能。它解决了设备在电池完全耗尽0V或根本没有电池如台式显示器、扩展坞时如何通过Type-C接口从外部Source获取初始电力从而启动系统的问题。3.1 死电池广告的硬件“后门”根据USB Type-C规范一个Source只有在检测到Sink在CC引脚上提供了正确的下拉电阻Rd约5.1kΩ后才会开启VBUS供电。这就像一道安全门禁你必须出示正确的门卡Rd电力VBUS才会送达。但当设备完全没电时主控制器和TPS65987D的固件都无法运行也就无法主动配置CC引脚为Rd模式。这就成了一个“先有鸡还是先有蛋”的困境。TPS65987D的解决方案是设计了一个硬件“后门”电路见图8-16。在死电池状态下芯片内部的一个特殊路径会被激活。此时CC引脚通过一个未经微调的电阻RD_DB连接到地。这个RD_DB的阻值虽然不如正常模式下的RD_CC精确但足以让对端的Source识别出“这里有一个Sink”从而开启5V的VBUS供电。一旦VBUS上电TPS65987D和系统主控获得电力开始启动。随后应用代码固件会接管控制将CC引脚的下拉电阻切换为更精确的RD_CC并开始正常的PD协议通信协商更高的电压和电流。3.2 BUSPOWER引脚与启动配置如何告诉TPS65987D当前是死电池状态以及该如何行动呢这就是ADCIN1在上下文中被标记为BUSPOWER引脚的作用。如图8-17所示你需要通过一个电阻分压网络R1, R2将LDO_3V3的电压分压后送到ADCIN1。芯片上电后内部ADC会立即读取这个引脚上的电压数字核心根据这个电压值对应不同的分压比DIV来决定启动行为。这通过引脚绑缚Pin Strapping来实现具体配置见表8-5。例如BP_NoResponse如果ADCIN1电压落在0.00-0.18 DIV区间芯片将不响应VBUS供电。它只会等待主电源VIN_3V3通常来自电池或DC-IN上电。这适用于永远不需要从Type-C口取电启动的设备。BP_WaitFor3V3_Internal如果电压在0.20-0.28 DIV芯片会开启内部电源开关将VBUS的电提供给PP_HVx路径但会暂停启动流程等待VIN_3V3主电源就绪。这常用于笔记本电脑确保只有在外接电源和电池/DC电源都就绪后才完全启动。BP_NoWait如果电压在0.60-1.00 DIV芯片会直接从VBUS取电并立即尝试加载配置和启动。这适用于纯粹由Type-C供电的设备如显示器或扩展坞。关键设计步骤确定模式根据你的产品需求是笔记本、平板还是扩展坞从表8-5中选择合适的死电池模式。计算电阻根据选定的DIV范围计算R1和R2的值。例如选择BP_WaitFor3V3_Internal其中值DIV0.24。假设LDO_3V33.3V则ADCIN1电压应为3.3V * 0.24 ≈ 0.792V。选取R210kΩ则 R1 R2*(Vldo/Vadc -1) 10k * (3.3/0.792 -1) ≈ 31.6kΩ。选择最接近的1%精度电阻如31.6kΩ。连接GPIO16特别注意如果你的模式是BP_WaitFor3V3_External或BP_ECWait_External意味着你使用外部MOSFET作为VBUS的电源开关。此时必须使用GPIO16来控制这个外部开关。芯片固件会通过这个GPIO来使能外部供电路径。如果错误地连接到其他GPIO死电池功能将失效。一个真实案例我们曾设计一款二合一平板电脑要求即使电池完全没电插上Type-C充电器也能显示充电Logo并进入低电恢复模式。我们选择了BP_WaitFor3V3_Internal模式。但在试产时发现部分主板无法从死电池状态启动。排查后发现是ADCIN1分压电阻的精度用了5%的导致实际电压漂移出了DIV的有效窗口。教训是死电池相关的配置电阻必须使用1%甚至更高精度的电阻这是数据手册明确要求的不能将就。4. BC1.2充电检测与旧世界的兼容桥梁尽管USB PD是未来但世界上仍有海量的旧式充电器USB-A口支持BC1.2、Apple 2.4A、三星AFC等。TPS65987D内置的BC1.2检测与广告模块就是一座连接PD新世界与旧式充电器的桥梁确保用户随便拿一个充电器都能以尽可能快的速度充电。4.1 检测原理握手与识别BC1.2检测是一个主动探测的过程主要通过D和D-数据线进行见图8-18。TPS65987D内部集成了电压源、电流源和比较器可以自动执行以下步骤数据接触检测DCD首先芯片在D上输出一个微小的电流源IDP_SRC同时在D-下拉一个电阻RDM_DWN。如果连接的是一个设备而非充电器D和D-会被设备内部的USB收发器下拉电压不会升高。如果连接的是充电器D的电压会被拉高从而检测到“有东西连接上了”。初级检测Primary Detection确认连接后开始判断充电器类型。芯片会在D-上施加一个电压VDX_SRC同时在D上设置一个电流阱IDX_SNK然后测量D的电压。通过这个电压值可以判断D和D-之间是开路、短路还是接有特定电阻从而区分是标准下行端口SDP即普通电脑USB口、充电下行端口CDP能提供更大电流的电脑USB口还是专用充电端口DCP如充电头。4.2 广告模式主动告知充电能力除了检测对方是什么TPS65987D还能主动“广告”自己是什么以触发某些设备特别是老款手机和平板的快充协议。它支持多种广告模式CDP广告模拟电脑CDP端口的行为在D和D-上产生特定的电压序列告知设备可以抽取大于1.5A的电流。DCP广告短路模式直接将D和D-通过一个电阻RDCP_DAT通常约200Ω短接。这是最广泛的识别方式绝大多数智能设备看到DD-短接就认为这是一个DCP充电器会提高充电电流。2.7V分压器模式一种专有协议。在D和D-上各提供一个约2.7V的电压源通过R_DIV输出。某些特定品牌的设备看到这个信号会允许从VBUS抽取超过2.4A的电流。1.2V模式另一种专有协议。在D-上提供1.2V电压同时将D和D-短接。用于触发另一些设备的快充。DCP自动模式这是最省心也是最推荐的模式。在此模式下TPS65987D会自动探测连接的设备类型并动态切换上述广告模式以匹配设备能识别的协议无需断开VBUS重试。4.3 设计实践与注意事项外部电阻不可省数据手册备注中明确提到USB 2.0标准所要求的主机或设备上下拉电阻TPS65987D内部并未提供。这意味着如果你的端口需要作为USB 2.0 Host或Device进行数据传输必须在D和D-线上外部添加15kΩ的下拉电阻对于Device或上拉电阻对于Host。这个细节很容易被忽略导致USB数据功能不正常。VBUS电流能力匹配当你启用2.7V或1.2V等专有广告模式时意味着你承诺VBUS电源可以提供更大的电流数据手册建议分别至少2.4A和2A。你必须在电源设计上保证这一点否则可能导致电压跌落或过载保护反而影响充电。与PD的优先级通常BC1.2检测发生在PD通信之前或并行进行。如果连接的是支持PD的Source双方会通过PD协商更高的功率BC1.2的结果会被覆盖。固件需要妥善管理这个状态机避免冲突。一个兼容性提升技巧在项目后期我们经常接到测试报告称某款旧手机充电速度慢。排查后发现该手机只认一种特定的DCP短路电阻值。我们通过调整固件中RDCP_DAT的等效配置虽然主要是硬件固定但有些芯片可通过并联外部电阻微调将短路电阻从标准的200Ω调整到150Ω成功解决了该型号手机的充电识别问题。这说明对于海量的非标充电器和设备有时需要在合规的框架内进行细微的“适应性调整”BC1.2模块的灵活性为此提供了可能。5. 系统集成与配置实战理解了核心功能后如何将它们整合到一个实际产品中TPS65987D通过配置包Configuration Bundle和I2C主机接口提供了极高的灵活性。5.1 启动流程与配置加载芯片上电后无论是从VIN_3V3还是VBUS首先执行引导程序Boot。这个程序会读取ADCIN1和SPI_POCI的引脚状态见表8-5决定死电池模式和行为。然后它会尝试通过SPI接口连接外部Flash或I2C接口从主机处理器加载一个“配置包”。这个配置包是一个二进制文件定义了设备的几乎所有行为默认的电源角色Source Sink DRP支持的PDO电源数据对象如5V/3A 9V/3A 15V/3A 20V/5A等是否支持Alternate Mode如DisplayPortFRS功能的使能与配置BC1.2各种广告模式的使能GPIO的功能映射各种超时和重试参数TI提供了图形化的“应用定制工具”Application Customization Tool来生成这个配置包。这是开发过程中最重要的软件工具你可以通过勾选选项、填写参数来生成初始配置无需从头编写复杂的寄存器映射。5.2 I2C主机接口运行时控制加载配置包后设备进入运行状态。此时系统的主处理器如x86 EC或ARM MCU可以通过I2C总线通常是I2C1或I2C2与TPS65987D通信。这个主机接口允许实时读取端口状态连接状态、当前电压/电流、PD合约内容。动态更改配置例如在系统电量低时通过命令触发FRS请求对端供电。响应各种中断事件连接断开、PD消息接收、FRS信号检测等。I2C地址设置是一个关键硬件设计点。I2C1的地址可以通过ADCIN2引脚的分压电阻来配置见表8-2和表8-4这允许同一个I2C总线上挂载多个TPS65987D芯片例如在双Type-C口的设备上。你需要为每个芯片的ADCIN2设置不同的分压以分配唯一的I2C地址。5.3 电源路径设计与保护如图9-1典型应用所示TPS65987D管理着复杂的电源路径。它内部集成了高压电源开关连接PP_HVx用于切换VBUS的供电方向。在死电池或高功率场景下这些内部开关可能不够用需要驱动外部的背对背MOSFET通过GPIO16/17控制PEXT1/2。VBUS保护至关重要。由于PD支持高达20V/5A非标设备可能带来高压热插拔风险。必须在VBUS入口设计保护电路通常包括过压保护OVP器件如TVS二极管用于钳位浪涌电压。缓启动电路防止插拔时的电流冲击。理想的二极管或负载开关用于实现电源路径的优先级管理例如优先使用适配器供电而非电池供电。6. 调试与故障排查实录在实际开发中遇到问题才是常态。以下是围绕FRS、死电池和BC1.2的常见问题及排查思路。6.1 FRS功能失效现象角色无法切换或切换时视频信号中断。排查步骤确认双方支持首先用PD协议分析仪如Ellisys, LeCroy捕获PD通信确认两端设备在PD Discover Identity和Discover SVID消息中都宣告支持FRS。检查CC波形使用示波器高精度探头测量CC线波形。当尝试触发FRS时观察CC电压是否有清晰的跌落沿作为Source发起或监测到跌落作为Sink响应。如果波形畸变或缓慢检查CC线上的对地电容是否过大。验证固件配置在TI配置工具中确保FRS功能已使能并且相关的时间参数如tFRSwap设置符合USB PD规范。检查电源路径切换速度角色交换的核心是VBUS供电方的切换。用示波器同时测量原Source和新Source的VBUS。在FRS触发后原Source的VBUS应快速关闭通常在几百微秒内新Source的VBUS应快速开启。如果外部MOSFET开关速度过慢会导致供电中断时间过长造成系统复位。6.2 死电池模式无法启动现象电池耗尽后插入Type-C充电器设备无任何反应。排查步骤测量ADCIN1电压在插入Type-C充电器后立即测量ADCIN1引脚对地的电压。验证其是否落在你预期的DIV范围内见表8-5。如果电压不对检查分压电阻R1、R2的值和焊接。检查VBUS供电测量TPS65987D的VBUS引脚是否有5V电压。如果没有说明对端Source没有识别到Rd。检查CC引脚到Type-C连接器的线路是否连通CC对地电容是否短路。检查LDO_3V3如果VBUS有5V测量LDO_3V3引脚是否有3.3V输出。这是芯片工作的核心电压。如果没有可能是芯片损坏或VIN_3V3/VBUS到LDO_3V3的路径有问题。确认GPIO16连接仅限外部开关模式如果使用BP_WaitFor3V3_External模式测量GPIO16在启动过程中的电平。它应该在芯片获得供电后输出高电平以打开外部MOSFET。如果一直是低电平检查固件配置或芯片是否进入了错误的模式。6.3 BC1.2检测不识别或识别错误现象连接普通USB-A充电器设备充电极慢仅500mA或无法充电。排查步骤测量D/D-电压在连接充电器后使用万用表测量Type-C接口的D和D-对地电压。如果D和D-电压都在0V左右可能BC1.2模块未使能或连接断路。如果D和D-电压相同且约0.6V可能是CDP模式。如果D和D-电压相同且约2.7V是2.7V分压器模式。如果D和D-短路电压相同是DCP模式。如果D-约1.2VD被拉低是1.2V模式。通过电压可以初步判断芯片处于哪种广告状态。检查配置在TI配置工具中确认BC1.2检测和相应的广告模式尤其是DCP自动模式已启用。检查外部电阻如果你的端口也需要作为USB 2.0设备确认已在D和D-上添加了正确的15kΩ下拉电阻到地。缺少这个电阻会导致USB数据功能异常但有时也会影响某些设备的充电识别。尝试固定模式如果“自动模式”下对某些充电器识别不好可以尝试在配置中固定为“DCP广告短路模式”。这是兼容性最广的模式。6.4 功耗与热管理TPS65987D功能强大但在Active状态下功耗不容忽视尤其是在处理高速PD通信和驱动外部MOSFET时。芯片内部集成了温度传感器和热关断功能。过热问题排查检查PCB布局芯片的散热焊盘Thermal Pad必须良好接地并通过足够多的过孔连接到内部或底层的地平面以帮助散热。测量关键点温度在满载工作如20V/5A PD合约生效时使用热像仪或点温计测量芯片表面温度。确保其低于数据手册规定的结温通常125°C。优化电源路径效率如果使用外部MOSFET选择导通电阻Rds(on)更小的型号可以减少开关上的热损耗。确保MOSFET的栅极驱动电压足够使其完全导通。利用低功耗状态当端口未连接或协议交互完成后可以通过I2C命令将芯片置于Idle或Sleep状态以显著降低功耗。这在电池供电设备中尤为重要。开发基于TPS65987D的产品就像在指挥一个交响乐团。FRS、死电池、BC1.2这些功能是其中重要的声部。理解每个声部的工作原理硬件电路熟练运用指挥棒配置工具和固件并提前预演可能出现的杂音调试与排查才能最终奏出稳定、高效、兼容性完美的乐章。这颗芯片的深度足以支撑起从消费电子产品到工业设备的广阔应用而吃透这些细节正是工程师从“能用”到“好用”的关键跨越。