2. PD控制器硬件基础:典型PD控制器芯片引脚功能、内部框图、电源与时钟要求
好,咱们进入正题。这一章我打算聊聊PD控制器的硬件基础。说白了,就是那些芯片长什么样,每个引脚干嘛用的,内部又是怎么个结构。我个人习惯是,拿到一个新芯片,先不看手册里的长篇大论,而是先瞄一眼引脚图和内部框图。这就像看一个人的骨架,骨架清楚了,后面就好办了。
咱们今天挑两个最典型的芯片来聊:FUSB302和STUSB4500。这两款芯片我都在项目里用过,一个偏简单,一个功能更全。你想想看,搞懂了它们,其他PD控制器基本也就触类旁通了。
2.1 FUSB302:一颗小巧的PD物理层芯片
FUSB302是安森美(ON Semiconductor)出的,主打一个“小”字。它主要负责PD协议里的物理层和一部分协议层工作。说白了,它就是个翻译官,把MCU发过来的指令,转成CC线上能跑的PD信号。
2.1.1 引脚功能
FUSB302的封装很小,常见的是WLCSP 9-ball或者QFN 14-pin。引脚不多,但个个关键。我列个表,你看着会更清楚。
| 引脚名 | 功能描述 | 我的一点经验 |
|---|---|---|
| VDD | 电源输入,典型值3.3V | 注意滤波,我习惯在VDD引脚附近放一个0.1μF的陶瓷电容,再加一个1μF的钽电容。 |
| VSS | 地 | 没啥好说的,铺铜要铺好。 |
| CC1 / CC2 | 配置通道引脚,用于PD通信和检测 | 这是PD的灵魂引脚。CC线上有下拉电阻(Rd)或上拉电阻(Rp),用来确定角色是Source还是Sink。我在调试时,经常用示波器抓这两个脚的波形,看通信是否正常。 |
| SCL / SDA | I2C接口,用于和MCU通信 | 标准I2C,速率400kHz就够用了。注意上拉电阻,我一般用4.7kΩ。 |
| INT_N | 中断输出,低电平有效 | 这个脚很重要。当有PD事件发生时(比如插入、拔出、协商成功),芯片会拉低这个脚通知MCU。MCU的GPIO要配置成下降沿触发中断。 |
| VBUS_EN | VBUS使能控制输出 | 用来控制外部VBUS开关的。当PD协商通过后,这个脚输出高电平,打开VBUS。 |
2.1.2 内部框图
FUSB302的内部框图不算复杂。核心是一个状态机,负责处理PD协议。它通过CC收发器(CC Transceiver)跟外部通信。I2C接口则负责跟MCU交换数据。还有个VBUS检测模块,用来监测VBUS电压。
嗯,这里要注意,FUSB302本身不直接控制VBUS的开关,它只是输出一个使能信号。真正的VBUS开关,需要外接一个PMOS或者专门的负载开关芯片。我习惯用TI的TPS22965,内阻小,发热低。
2.1.3 电源与时钟要求
电源方面,FUSB302只需要一个3.3V供电。电流消耗很小,典型值在几百微安到几毫安之间。时钟方面,它内部有一个振荡器,不需要外部晶振。这算是个优点,省了一个元件,也省了PCB空间。
2.2 STUSB4500:一颗自带电源管理的PD控制器
STUSB4500是意法半导体(ST)的,功能比FUSB302强大多了。它不光能处理PD协议,还能直接控制一个可编程的电源路径。说白了,它更像一个“独立”的PD控制器,不需要MCU也能完成基本的PD协商。
2.2.1 引脚功能
STUSB4500的引脚多一些,常见的是QFN 24-pin。我挑几个关键的说说。
| 引脚名 | 功能描述 | 我的一点经验 |
|---|---|---|
| VDD | 主电源,3.0V ~ 5.5V | 供电范围宽,可以直接用VBUS供电,省一个LDO。但我建议还是用3.3V,更稳定。 |
| VREG | 内部稳压器输出,需外接电容 | 这个脚要接一个1μF的电容到地。别省这个电容,否则芯片工作不稳定。 |
| CC1 / CC2 | 配置通道引脚 | 跟FUSB302类似,但STUSB4500内部集成了Rp和Rd电阻,外部不用再挂了。这省了不少事。 |
| SCL / SDA | I2C接口 | 同样用于配置和读取状态。但STUSB4500支持NVM(非易失性存储器),配置可以烧录到芯片内部,上电自动加载。 |
| INT_N | 中断输出 | 功能类似FUSB302。 |
| VBUS_SENSE | VBUS电压检测输入 | 用来监测VBUS的实际电压。我一般通过一个分压电阻网络接到VBUS上。 |
| GATE | 外部N-MOSFET栅极驱动输出 | 这个脚厉害了。它可以直接驱动一个N-MOSFET,用来控制VBUS的通断。省掉了外部的负载开关芯片。 |
| VBUS_DISCH | VBUS放电控制 | 当断开连接时,用来快速放掉VBUS上的电荷,符合Type-C规范。 |
2.2.2 内部框图
STUSB4500的内部框图比FUSB302复杂不少。它有一个完整的电源管理单元(PMU),包括一个可编程的降压转换器(Buck Converter)或者线性稳压器(LDO),用来将VBUS转换成系统需要的电压。它还集成了NVM,可以存储PDO(电源数据对象)等配置信息。
你想想看,这意味着什么?意味着你可以把STUSB4500配置成固定的电压输出(比如5V、9V、12V),然后它自己就能完成PD协商,完全不需要MCU参与。这对于一些简单的应用(比如充电底座)来说,简直是神器。
2.2.3 电源与时钟要求
STUSB4500的电源要求比FUSB302灵活。它可以直接用VBUS供电(最高到28V),内部有LDO降压。当然,也可以用外部3.3V供电。时钟方面,它同样不需要外部晶振,内部有RC振荡器。
2.3 两种芯片的对比与选型建议
好了,两个芯片都聊完了。我做个简单的对比,方便你选型。
| 特性 | FUSB302 | STUSB4500 |
|---|---|---|
| 角色 | Sink / DRP | Source / Sink |
| 是否需要MCU | 必须 | 可选(可独立运行) |
| 内部电源路径 | 无 | 有(可编程) |
| NVM | 无 | 有 |
| 外部元件数量 | 较多(需要Rp/Rd电阻、VBUS开关) | 较少(内部集成) |
| 成本 | 较低 | 较高 |
| 灵活性 | 高(由MCU决定) | 中(由NVM决定) |
我个人建议:
- 如果你的项目是做一个智能设备,需要跟PD Source进行复杂的协商(比如要20V 5A),而且你已经有MCU了,那选FUSB302,成本低,灵活度高。
- 如果你的项目是做一个充电器或者充电底座,只需要输出固定的几个电压,而且不想用MCU,那选STUSB4500,省事,稳定。
嗯,这一章就到这里。下一章我会讲讲PD协议栈的软件架构,包括如何用状态机来管理PD通信。到时候我会拿FUSB302的驱动代码来举例,咱们手把手写一个。