· Ivan Li · 41 min read
造一个支持隔离、PD 供电的 全速 USB-C HUB
需求
我觉得呀,我一直缺一个 USB-C 口的集线器。为了能使用 USB-C,我买了好几个转接头长期插在 USB type-A 口上。所以这次我准备先开发一款 3C1A 的 USB HUB,同时通过 USB-C 数据线与电脑连接。
作为业余爱好者,折腾硬件的时候还是容易不小心接错线,上错电,为了避免把电脑一波带走,还是得考虑搞个隔离。
我预计将来大概会折腾使用 USB-C 接口索要 PD 供电,并且使用同一个接口进行烧录和调试,所以我还准备为下游的 USB-C 口提供 65W PD 输出。
这样的话,电源输入还得折腾。考虑使用 DC 端口进行 HUB 部分以及 PD 部分的供电,输入电压 24V。另外再加一个 USB PD 20V 作为备用的供电输入,通过 PD sink 芯片取电。快充芯片会根据输入电压来决定输出最大的电压档位,所以兼容性应该是 OK 的。这样的话总功率也得做限制,毕竟不是专门用来充电的,不考虑太大功率的使用。预计总输出功率也是限在 100W 以内。
既然 PD 输出安排了,那电流检测也得安排一下,如果电子负载项目的电流电压采集功能验证顺利,这次的 USB HUB 项目准备采用 MCU 的 ADC 采样电流、电压数据。否则考虑直接四个 INA226 采集。
这样看来要不要再加个屏幕呢?感觉没空间放屏幕,先预留 SPI 接口吧。
概念
USB-C 接口
参考资料:
USB-C 接口角色
USB-C 数据角色分为:
- 下行端口(DFP):向下游发送数据;它通常是设备所连接的主机或集线器上的端口。DFP 将为 VBUS 供电(主机与设备之间的电源路径),还可以为 VCONN 供电(为电子标记的电缆供电)。包含 DFP 的典型应用是集线站。
- 上行端口(UFP):连接到主机或集线器的 DFP,接收设备或集线器上的数据。这类端口通常从 VBUS 中取电。包含 UFP的典型应用是显示监视器。
- 双角色端口(DRP):端口可以用作 DFP(主机)或 UFP(设备)。此类端口在连接时的电源角色决定了其初始角色。源端口承担 DFP 的数据角色,而接收端口承担 UFP 的数据角色。不过,通过使用 USB PD 数据角色交换功能,可以动态地更改此类端口的数据角色。包含 DRD 端口的典型应用是笔记本电脑、平板电脑和智能手机。
USB-C 供电角色分为:
- 源端口(Source, SRC)
- 接收端口(Sink, SNK)
- 双角色电源端口(Dual Role Port, DRP)
这两类角色中,如果设备初始角色是双角色角色,那么在物理连接后可以随时协商到具体的角色。数据角色和供电角色可以任意搭配,虽然常见的是 DFP + SRC 和 UFP + SNK 这样的组合,但是它俩之间是相互独立的,并没有绑定关系。
USB-C 与 USB 2.0
USB SDP 与 CDP
SDP 和 CDP 能够对连接到它的任何设备进行 USB 枚举,原因是 SDP 和 CDP 是 PC/笔记本电脑或 USB 集线器上的主机/集线器端口。
- 标准充电端口 (SDP):遵循 USB 2.0 规范,最大输出为 500mA,通常出现在计算机 USB 主机端口或集线器中。
- 充电下游端口 (CDP):具有 USB 2.0/3.0 电流限制的扩展,允许高达 1.5A 的输出电流,与计算机或集线器上的 USB 主机端口关联。 在 USB-C 接口中,USB 2.0的数据传输信道由两组引脚提供:正面的 A6(D+)和 A7(D-),以及背面的 B6(D+)和 B7(D-)。这两组引脚无论在上游设备或是在下游设备,都是直接物理连接的。而 USB-C 公头只连接 A6 和 A7 两个引脚,最终连接的效果与 USB Type-A 接口一致。
USB-C 与 USB PD
USB-C 具有四个 VBUS 引脚,它们分别是 A4、A9、B4、B9。这些引脚不应该在插入 USB-C 电缆时立即供电。规范要求的供电过程如下:
- 连接检测:主机通过 CC 引脚检测到设备连接。
- 方向确定:根据哪个 CC 引脚检测到连接,确定插入方向。
- 能力协商:如果支持 USB PD,可以通过 CC 引脚进行电源能力协商。
- 启动供电:只有在正确检测到连接并完成必要的协商后,才能启动 VBUS 供电。
USB HUB 与过流检测
出于安全原因,USB 规范(修订版 2.0)要求所有自供电集线器设计具有过流保护。过流检测和电源切换需要外部电源开关。
USB HUB 一般会在出现过流时自动切断供电并禁用端口,并向标记过流状态,等待主机看到后,由主机决定是否要求 HUB 重新启用端口。
USB HUB 一般有两种电源切换模式:
- 组模式(Gang Mode):如果一组端口中所有端口消耗的总电流超过预设限制,则集线器会关闭该组端口。在 CH338F、CH339F 中,是全部下游端口都在同一组。
- 独立模式(Individual Mode):如果一个端口的电流超过预设限制,则集线器会关闭该端口。
显然,独立模式在某一端口出现过流时,不会影响到其他端口的供电。
分析
先 HUB 还是先隔离?
USB 2.0 分为三种速度:
- 低速 1.5 Mbps
- 全速 12 Mbps
- 高速 480 Mbps
隔离芯片目前我看到主要是两种方案,一种支持低速、全速的 ADUM4160 这类 USB 数字隔离器芯片,淘宝大概 15 ~ 20 元,另一种就是 ISOUSB211 这种支持高速的芯片了,价格在45 ~ 80 元的样子。
对于我来说,全速的接口其实带宽不太够用,比如我经常使用的无头 USB 逻辑分析仪,就挺吃速率的。正常来说,下游每一路 USB 接口都应该单独隔离的,避免一波带走其他连接的 USB 设备。但是,我一般不会同时开发多个项目,所以连接在硬件上的调试工具,也是有可能直接从硬件这侧带走工具,所以我就不太考虑每路独立做隔离。
综上,出于成本考虑,我准备使用的连接方案如下图所示:
flowchart LR
Computer --> isoUSB[Isolated USB Repeater]
isoUSB --> hub[USB HUB]
hub --> port1[USB Port 1]
hub --> port2[USB Port 2]
hub --> port3[USB Port 3]
hub --> port4[USB Port 4]
这样保证了充分发挥 USB 2.0 的带宽,节约了成本。如果需要独立保护,大不了我再搓一个然后继续星形拓扑。
供电
从计算机连接到隔离芯片的这部分直接从上游端口取电就行了,这个没啥需要分析的,有点麻烦的是 HUB 以及下游端口如何取电和供电。
首先,
我准备让隔离芯片下游侧和 HUB 芯片使用同一路电源供电。那么这电源就有两种来路了,一种是从上游端通过独立的 DC-DC 隔离电源提供,另一种就是从独立外部供电提供。这是让我想了很久的问题。
我想了想我现在使用的 USB HUB,轻载输出 5V出头的电压,输出 0.3 A 后电压掉到 4.5 V,看起来这点实力属实有点差,毕竟中间有 1.5 米的线,可能是线阻比较大的缘故。
今天我买的 DC-DC 隔离电源模块也收到了,好家伙,10 W 的,还挺大。为了成品的体积不要太大,我毅然决然地决定:
flowchart LR
pd[USB PD IN] --> pdSource[USB PD DC-DC Source]
pdSource --> port1[Port 1 USB-C]
pd --> iso[ISO DC-DC]
iso --> iso2[Isolated USB Repeater]
iso --> hub[USB HUB]
hub --> port2[Port 2 USB-C]
hub --> port3[Port 3 USB-C]
hub --> port4[Port 4 USB type A]
这样,我就能拥有一个支持 USB PD 协议的 USB-C 接口,以及三个带有 5V 供电的接口。支持 USB PD 协议的接口电源部分没有与外部的电源输入隔离。另外三个通过 10 W 的隔离电源输出 5 V,虽说它们三个之间没有隔离,但也算是符合我的设计思路,优先保护计算机,然后保护外部电源(我怕它炸我),最后保护下游设备。
只设计一路 USB PD 协议的接口,主要考虑我不太会同时调试两个需要 USB PD 协议的设备。其次,只有一路 USB PD 输出,也省得我去做功率管理。
电源输入
正如前文所说,现在这情况就是我必须为这个 USB HUB 提供一路外部供电了,不然没办法使用。输入的接口我准备使用 USB-C 母口,显而易见,输入得支持 USB PD 协议。
还记得我前面提到的,我买了一个 DC-DC 隔离电源模块吗?这是一个支持 9 ~ 36 V 宽电压输入、5 V 稳压输出的 10 W 隔离电源模块。所以这个项目可以允许 9 ~ 28 V 的 PD 输入。不过受限于我所拥有的供电设备和 PD sink 芯片的选择,至少也是会支持 9 ~ 20 V 的输入。我们后面再选,毕竟这个输入还需要作为 65 W 的 PD 输出电路的电源呢。
USB PD 输出
作为半路还没出家的人,我非常不确定怎么把 Source 电路集成到 UDP 电路中。但是反过来想,我好像很清楚怎么把 UDP 电路连到 Source 电路中。有点迷惑但大概只要共地,然后把 USB 2.0 的两根数据线连到母口的两对 USB 2.0 数据脚上就行了。所以对于 USB HUB,我好像知道怎么做了。
其他 USB 电源输出
除了支持 USB PD 的端口 1,另外两个 USB-C 接口,将会提供 5 V 的 输出。这个输出不是一直存在的,而是需要通过 CC 引脚进行检测。因为剩下的两个 USB-C 端口只会提供 5V 电压,反推能得,我们需要实现的是“不带 USB PD 的 USB C DFP USB 2.0“ 的接口。下图是这个接口必要的模块:
受限于我的时间和能找到的资料有限,本文大概会混淆 USB Type-C 1.1 和 1.2 规范,希望不会有什么大问题。最后实现前我会再和 LLM 确认,尽量不要出错。
我们暂时忽略掉 USB 2.0 DFP 部分,只看 和 CC。由于我们不实现 USB 3.1,也不提供 3A 以上的电流,所以 的供电可以省略。剩下的主要就是:
- 开关
- Discharge (650ms 内泄放完成)
- CC logic
USB Type-C 规范要求源端必须支持过流保护,这两路 USB-C 端口和 USB Type-A 端口共享同一路 5V 电源,这个电源自带过流保护,所以就再而外添加保护电路了。
USB 2.0
USB 2.0 通信和物理连接似乎没啥难点,会连连看就行的样子。 根据规范,USB-C DFP、UFP 可以直接将两组 D+、D- 直接连接在一起,这样我们可以省略三份 USB 2.0 Mux 电路。
选型
隔离式 USB 中继器
根据前面的分析,我们需要一个高速 USB 隔离芯片。在淘宝上,ADUM3165 价格和 ISOUSB211 看起来差不多,不过似乎 ISOUSB211 特性更丰富。
ISOUSB211
特性:
- 符合 USB 2.0 要求
- 支持低速 (1.5 Mbps)、全速 (12 Mbps) 和高速 (480 Mbps) 信号传输
- 不需要外部晶体或时钟输入
- 自动速度和连接检测
- 支持 L1(睡眠)和 L2(挂起)低功耗状态
- 可编程均衡,用于补偿高速模式中的板迹线损耗
- 下游端 CDP 广播
- 对侧电源正常指示
- 支持 USB On-the-Go (OTG) 和 Type C® 双角色端口 (DRP) 设计的自动角色交换
- 高 CMTI:100kV/µs
- 在整个隔离栅具有 ±8kV IEC 61000-4-2 接触放电保护
- VBUS 电压范围:4.25V 至 5.5V
- 3.3V 和 1.8 V 内部 LDO
- 符合 CISPR32 B 类辐射限制
- 环境温度范围:—40°C 至 +125°C
- 小尺寸 28-SSOP 封装
- 安全相关认证:
- 符合 DIN EN IEC 60747-17 (VDE 0884-17) 标准的 7071VPK VIOTM 和 2121VPK VIORM(增强型)
- 符合 UL 1577 标准且长达 1 分钟的 5000VRMS 隔离
- IEC 62368-1、IEC 60601-1 和 IEC 61010-1 认证
- CQC、TUV 和 CSA 认证
ADUM3165
特性:
USB 2.0 signaling with automatic detection of low, full, and high speed connections
- 1.5 Mbps, 12 Mbps, and 480 Mbps data rates
Bidirectional USB isolator for upstream and downstream ports
- Redriving and high speed data retiming for input jitter removal and an open eye
- Flexible clock input options
4.5 V to 5.5 V VBUSx or 3 V to 3.6V operation on each side
- 21 mA typical idle, low or full speed mode supply current
- 48 mA typical idle, high speed mode supply current
Ultra low power standby in USB 2.0 suspend (L2) or disconnect
- 1.7 mA typical low power standby, upstream supply current
- 20 μA typical low power standby, downstream supply current
±6000 V IEC 61000-4-2 ESD protection across the isolation barrier
Passed CISPR32/EN55032 Class B emissions
High common-mode transient immunity: 50 kV/μs typical
Safety and regulatory approvals (pending)
- UL (pending): 3750 V rms for 1 minute per UL 1577
- CSA Component Acceptance Notice 5A (pending)
- IEC 62368-1, IEC 61010-1, and IEC60601-1
- VDE certificate of conformity (pending)
- DIN V VDE V 0884-11 (VDE V 0884-11):2017-01
- VIORM = 849 VPEAK (working voltage)
Operating temperature range: -55°C to +125°C
Compact 20-lead SSOP with 5.3 mm creepage and clearance
CH318
特点:
- 上位机模式提供1个USB2.0下行端口,下位机模式提供2个USB2.0下行端口,向下兼容USB1.1协议规范
- 支持480Mbps高速、12Mbps全速和1.5Mbps低速USB传输
- 支持USB控制传输、批量传输、中断传输、同步/等时传输
- 同一芯片可配置为上位机模式和下位机模式,分别连接USB Host主机和USB Device设备
- 搭配CH339芯片,可以实现USB读卡器、USB转SPI、转JTAG、转I2C等多种接口的隔离
- 支持连接状态指示
- 内置电容耦合驱动电路和网络变压器耦合驱动电路
- 纯硬件解决方案,对USB协议完全实时和透明,不需要额外安装任何驱动程序,支持各种包含USB接口的系统
- 提供晶体振荡器,支持外部时钟输入,内置PLL为USB PHY提供480MHz时钟
- 上行端口内置1.5KΩ上拉电阻,下行端口内置USB Host主机所需下拉电阻,外围精简
- USB接口引脚具有6kV增强ESD性能,Class 3A
- 工业级温度范围:-40~85°C
- 提供TSSOP20封装形式
这里出现了一个不一样的家伙,根据我查到的资料,使用磁耦合方案就能与 ISOUSB211 和 ADUM3165 等价。由于我计划使用 CH338F 芯片作为下游的 HUB 芯片,所以如果能使用 CH318 做隔离芯片的话,那就可以说是恰到好处了。
但是这个似乎没有人能保证传输速率,从公开资料来看,没有找到相关应用示例和性能数据,所以这个方案可能得保留了。或许也可以先用 CH318 + CH338F 做一个版本测试一下。
USB HUB 芯片
我觉得这部分不是很重要,要么使用 CH339X,要么使用 CH338X。
CH338
CH338X 支持下游端口独立电源切换模式。
CH339X
CH339X 主要比 CH338F 多了 USB 转网卡、读卡器、UART、JTAG、SPI、I2C、SMBus 功能。不过,我看中的转 SPI、I2C 这种功能,似乎需要驱动程序才能使用。目前公开资料似乎没有表明能在 MacOS 上使用,Linux 和 Android 可以通过WCHSoftGroup/ch341par_linux 驱动。
虽然我很喜欢这些功能,不过我还不清楚具体调用方法,或许后续的版本会使用 CH339X,但是目前的版本我决定使用 CH338F,简化一些设计。如果需要 SPI、I2C 啥的,也可以通过 USB 内置或外置的方式,用 CH437 之类的芯片实现。这方面我想还是后续再验证吧。
USB PD 快充协议与 DC-DC 调节
因为输入是支持 USB PD 3.0 协议,所以输入电压在 5 V ~ 20 V 之间。我能接受输出电压小于等于输入电压,那么要么找到能在电压相等时直通的芯片,要么选择支持自动升降压的芯片。本来想着为了设计简单点,将寻找的范围缩小在同时支持 PD 协议和 DC-DC 控制的芯片上。我找了英集芯、南芯、智融三家,只找到英集芯有这样的芯片,其他的得分成电源和快充协议两个芯片。
IP6557
IP6557 是支持 UFCS/PD2.0/PD3.1/EPR28V 等快充协议的升降压 SOC,支持 USB PD 3.1 的 140 W 输出。输入电压范围 5 ~ 31 V。
IP6557 是一个集成度很好的芯片,但是公开的资料中,只能通过调整输出端的检流电阻两端的电压来改变限流能力。如果这样的话,实际上在与接收端协商能力时,是无法声明带载能力的,这样的话我倒不太想用了。并且这种调节方式,我还不知道如何数控。毕竟我需要根据外部供电的情况来调整输出功率,这样看来没办法用这款芯片了。
SC8701/SC8703
输入 2.7 ~ 29 V,输出 2.5 ~ 29 V,支持轻载 FPM 的外置四管同步升降压控制器。SC8701 支持的最高输入输出电压是 36 V,但是没有 FPM 模式,所以轻载条件下功耗偏高。看起来这两款芯片价格好像差不多,那本项目用例下,输入输出最高都不会超过 28V,所以就选择 SC8703 省点电吧。
不过,使用 SC8703 需要外挂 USB 快充协议芯片。
SW2303/SW2305
这是外挂的 USB Type-A 、Type-C 多快充协议芯片。
SW2303 是一款高集成度 Type-C 口/Type-A 口快充协议芯片,支持 PD、QC、FCP、高低压 SCP、AFC、SFCP 以及 PE 等主流快充协议,支持光耦反馈和 FB 反馈两种工作模式。SW2303 集成了 CV/CC 控制环路,Type-C 接口逻辑,快充协议控制器,以及多种安全保护功能。配合 ACDC 或 DCDC 以及少量的外围元器件,即可组成完整的高性能的 Type-C 口/Type-A 口快速充电解决方案。
通过 FB 反馈到电源芯片,可以调整输出电压。
SW2305 比 SW2303 多了个 VOOC 协议,不过价格看起来得加两元,达到 4.5 元。这就是 VOOC 税吗?我还是尽量选择 2.5 元的 SW2303 吧,我可没机会开发 OV 系的东西。
这两款芯片明确提示了支持通过电阻或 I2C 来动态配置功率限制。基本上符合这个项目的使用场景。
IP2736
IP2736 最大的亮点就是支持 UFCS 融合快充协议了。支持 28V EPR 档位,140 W 功率。价格 5.4 元。但是公开资料非常的粗略,没有提供调整限制功率的方法,还是不要碰了。
快充芯片选型小结
国内厂家可真是秘密多,智融至少算是公开了一些比较够用的信息,其他两家资料可太难找了。最后敲定的方案就是 SC8703 + SW2303 的组合了,唯一的问题就是不知道 SW2303 在 FB 反馈到底能不能支持 CC 和 CV 了。
USB-C 协议芯片
HUB 下游的端口 2 和 端口 3 是计划支持 5 V 1.5 A 的 USB-C 口,所以我们需要 USB-C 协议芯片,来识别和管理供电。其实有个朴素的解决方法,直接判断 CC 脚是否存在 5.1 KΩ 的下拉电阻,有就送电。正常来说这样做不会出太大问题,不过我是讲究人,还是得尽量搞清楚点,省得以后遇到什么奇奇怪怪的问题,到头来发现是自己埋的坑就乐呵了。
大概我的目标是找到集成度高的芯片,最好能自主运行 Source 模式,能内置 VBUS 放电路径,能配置通告的电流能力,要是再集成过流保护就更妙了。
FUSB301A
FUSB301A 支持 USB Type-C 1.1 和 1.0。
FUSB301A 是一款完全自动化的 Type-C 控制器,优化用于<15 W 应用。FUSB301A 提供源模式、接收模式、双向模式(on),配件检测支持和死电池支持的 CC 逻辑检测。 FUSB301A 具有可配置的 IC 地址,以支持每个系统的多个端口。FUSB301A 具有极低的功耗禁用模式以及正常操作时的低功耗。它采用超薄的 12 引脚 TMLP 封装。
作为 source 时,支持通过 I2C 配置 CC 引脚的上拉电流。符合这个项目的使用场景。FUSB301A 比 FUSB301 多了个 I2C 地址配置,这样放两个不会冲突。
FUSB302B
FUSB302B 是 FUSB302 的新版本,支持了 USB-C 的 1.2 版本。这款芯片支持了可编程的 USB PD 协议,目前看至少可以通过软件实现 PD 3.0 PPS。
这款芯片的 I2C 地址是固定的,提供了几个不同地址的版本,但是价格比默认地址的贵了好多。普通的 4 元,特殊地址的要加三五块钱。
FUSB302B 没有内部或外部的 VBUS 放电路径,这部分还需要额外实现。看起来 FUSB302B 是一个底层的 USB PD 芯片。
HUSB331
特点:
- USB PD双重角色(Dual-Role Port)
- 支持USB PD3.0和USB TCPCI V1.1
- Host模式、Device模式和DRP模式的插拔检测
- 电流能力广播和检测
- 线缆类型识别
- 支持VCONN
- 支持死电池模式
- 超低功耗待机模式
- 30V VBUS引脚耐压和24V CC引脚耐压
- 支持2个I2C通信地址
- 支持BIST模式
- e-fuse烧录模式
- WLCSP-9B (1.35mmx1.4mm)和 QFN-14L (2.5mmx2.5mm)两种封装模式
- ±2kV HBM ESD
HUSB331 支持 2 个 I2C 地址,配置,其他和 FUSB302B 其实差不多。
TUSB320
TUSB320 和 FUSB301A 差不多,实现了 USB Type-C 规范 1.1 版本并向下兼容 1.0。支持配置两个不同的 I2C 地址,能够配置 SRC、SNK、DRP、广播电流等功能。
TUSB320 没有提供 PD 协议支持和 VBUS 放电路径。
TPS25810
- 兼容 USB Type-C 版本 1.2 的下行数据端口 (DFP) 控制器
- 连接器连接/断开检测
- 配置通道 (CC) STD/1.5A/3A 电流能力通告
- 超高速极性确定
- VBUS 应用和放电
- VCONN 应用于电子标记电缆
- 音频和调试附件识别
- 端口未连接时,IDDQ 的典型值为 0.7µA
- 三个输入电源选项
- IN1:USB 充电电源
- IN2:VCONN 电源
- AUX:器件电源
- 电源唤醒可保证系统冬眠 (S4) 和关闭 (S5) 功耗状态下的低功耗
- 34mΩ(典型值)高侧金属氧化物半导体场效应晶体管 (MOSFET)
- 1.7/3.4A ILimit (±7.1%) - 可编程
- 端口功率管理可实现多端口的功率资源优化
- 封装:20 引脚晶圆级四方扁平无引线 (WQFN) 封装 (3mm x 4mm) (1)
TPS25810 不支持通过 I2C 编程,但是他支持端口电源管理(PPM)来动态分配电源,看起来能够通过不同的相互连接,实现双 USB-C 口的总功率限制在 4.5 A 或者 2.0 A 或是其他组合。
USB-C 协议芯片选型分析
突然发现之前选择的 10 W 隔离电源好像不太够用,准备更换成同尺寸 20 W 的。这样能支持两路 USB-C 的 1.5 A + 一路 USB Type-A 的 500 mA 电流供应。然后剩下 500mA 一些用来供给其他内部芯片和作为裕量。
这样的话我的希望其实是默认广播并限流两个 USB-C 在 1.5 A。但是也可以通过设置来改成一个是 3.0 A,另一个 500 mA。A 口依然是 500 mA 限流。虽然很极限,不过自用还好,毕竟相当于特殊的模式,如果在这个模式下还需要所有端口都占满功率的话,可以考虑单独给 Type-A 口提供隔离电源。
模式 | 平均 | 聚能 |
---|---|---|
Port 1 (Type-C) | 独立 PD | 独立 PD |
Port 2 (Type-C) | 1.5 A | 3 A |
Port 3 (Type-C) | 1.5 A | 0.5 A |
Port 3 (Type-A) | 0.5 A | 0.5 A |
按照这个计划,我会偏向使用支持 I2C 控制的芯片来处理。所以先排除 TPS25810。剩下的都没自带 VBUS 放电路径的话,那么 1.1 元的 HSUB331 和 2.5 元的 FUSB302B 就是我想选的芯片了。虽然 USB PD 功能暂时用不上,但是后续其他项目的开发可能会使用上,少用一款芯片少折腾一次。反正价格比 FUSB301A 便宜。根据搜索的资料来看 HUSB311 能够 pin to pin 替代 FUSB302。
那么大概结论就是用 HUSB311 来试试了。这样还需要带保护的 USB 开关芯片,以及 VBUS 放电电路。
我改主意了,我完全没必要研究 3 A 的电流能力,或者说电流高了其实还不太安全。如果要高电流或者高功率,我应该使用支持 USB PD 的端口 1,而不是在这研究怎么提供 3 A 的电流能力。增加了系统复杂度,开发周期变长了,就很消磨热情了。
所以我准备还是使用两个 TPS25810,固定限流 1.5 A。
带保护的 USB 开关芯片
CH217K
特点:
- 内置功率开关管,典型70mΩ导通电阻;
- 可通过外置电阻调节限流门限,支持400mA~2.7A,典型误差±10%;
- 支持电源电压2.7V~5.5V;
- 输出短路时快速限流保护;
- 低功耗,典型 50uA 静态工作电流;
- 典型关机电流小于 1uA,关断时没有反向电流;
- SOT23-6封装。
它自带了 VBUS Discharge,有种安全的感觉。
目前只需要一个这个芯片给 USB Type-A 口进行保护,不做开关用途。我就不找其他芯片了,这个感觉挺好的,比一般芯片还多了一个状态指示。
CH217K 价格不到五毛钱,就是没找到能包邮或者凑单的店,运费 2 元,搞几片备用。
开发
CDP 广播
ISOUSB211 在隔离两侧都提供 CDP 广播的使能引脚。由于本项目并没有将隔离芯片的下游通过 USB 接口暴露到外部,而是在内直接连接到了 USB HUB 芯片上,所以这个下游的引脚并不需要启用 CDP 广播。而上游侧作为 USB Device,不需要启用 CDP 广播,项目设计上也不提供角色反转,所以两端都下拉 CDP 使能引脚。
下游的端口 1 使用 USB PD 快充,没准备实现 USB BC,所以是不需要管 CDP。 因为前面已经决定原则上给下游端口 2 ~ 4 只提供 SDP,所以也不考虑 CDP。
主隔离电源外围电路
主隔离电源用于为 USB 端口 2 ~ 4 提供 5 V 供电,并为系统中 MCU 等芯片外设的转换器供电。主要是为了保证 USB 端口的电源干净,根据电源模块手册建议,我为主隔离电源的输出端提供了 LC 滤波电路。
USB PD 电源外围电路
SC8703 的 MOSFET 选择
根据数据手册建议,我直接把选择范围缩小到 耐压 40 V、 耐压 ±20 V 的管子。找了一圈决定使用 NCEP4045GU。
SC8703 死区时间设置
在同步 4 管升降压控制器(也称为同步 4 开关 Buck-Boost 控制器)中,MOSFET 的死区时间(Dead Time)是指在切换期间,为防止同一桥臂上下管同时导通而设置的一个短暂延时。正确计算并设置死区时间对于防止直通电流(Shoot-through)和提高转换器效率至关重要。
以下是计算 MOSFET 死区时间的一般步骤和考虑因素:
了解关键参数:
- MOSFET 的延迟时间和转换时间:
- 关断延迟时间(td(off)):栅极驱动信号下降到漏源电流下降开始的时间。
- 下降时间(tf):漏源电流从高电平下降到低电平所需的时间。
- 导通延迟时间(td(on)):栅极驱动信号上升到漏源电流上升开始的时间。
- 上升时间(tr):漏源电流从低电平上升到高电平所需的时间。
- MOSFET 的延迟时间和转换时间:
计算死区时间:
- 死区时间应满足以下条件,以确保在一个开关器件完全关断后,另一个器件才开始导通:
- 安全裕度:为了适应器件参数的分散性、温度变化和电路中的寄生参数,通常在计算的基础上增加一定的安全裕度。
根据上图可知:
- 导通延迟时间
- 关断延迟时间
- 上升时间
- 下降时间
计算关断路径的总延迟时间:
计算导通路径的总延迟时间:
计算最小死区时间:
计算 20% 安全裕度:
计算推荐的死区时间:
很刚好地超过了 20 ns。 SC8703 的延迟设置如下:
DT 电阻 | 死区时间 |
---|---|
0Ω | 20ns |
68kΩ (±10%) | 40ns |
270kΩ (±10%) | 60ns |
开路 | 80ns |
所以为了避免出问题,我决定将死区时间设在 40ns。
FB 反馈电路
FB 反馈是协议芯片 SW2303 向 DC-DC 控制器 SC8703 的 feedback 的电路。它连接了 SW2303 的 OPTO/FB
引脚、SC8703 的 FB
引脚。
智融没有公开协议控制器 SW2303 的 FB 引脚电压或电路设计建议,但是根据在立创开源广场的相关项目,大家都会为 SC8703 的 FB 网络的配置 100 KΩ 的上拉电阻和 31.6 的下拉电阻,将 设为 5 V 左右。
以下是固定 时,通过修改 调整输出电压的表格:
(V) (目标) | (kΩ) | (kΩ) (计算值) | 推荐的 标准值 (kΩ) | 实际 (V) |
---|---|---|---|---|
3 | 100 | 72.46 | 75 | 3.016 |
5 | 100 | 30.25 | 30 | 5.04 |
9 | 100 | 15.13 | 15 | 9.07 |
12 | 100 | 11.08 | 11 | 12.1 |
15 | 100 | 8.67 | 8.2 | 15.04 |
18 | 100 | 7.1 | 6.8 | 18.11 |
24 | 100 | 5.21 | 5.1 | 24.15 |
计算说明
- 固定 。
- 原始公式:
- 使用公式计算 :
- 内部参考电压
- 将计算值四舍五入到最近的标准电阻值。
- 使用标准电阻值计算实际 。
由于 SW2303 的电源由 SC8703 的输出提供,所以 SC8703 默认输出电压需要在 3.0 V 以上。由因为默认的 USB 电压是 5 V,我认为 SC8703 默认的 FB 电阻配置应该是要让电压在 3 V ~ 5 V。固定 为 100 KΩ, 应该在 72.46 KΩ(3.016 V)~ 30.25 KΩ(5.04 V)之间。
输入与输出限流
从上图中可以看出,输入输出的限流的电路结构上是一样的,根据数据手册说明,我们可以按比例使用电流采样电路的三个电阻:
- 使用 10 mΩ 的检流电阻和两个 1 kΩ 的电阻对
- 使用 5 mΩ 的检流电阻和两个 510 Ω 的电阻对
给定公式:
我们需要计算 :
代入已知值:
计算 在 到 A 的范围内,1A 递增:
计算结果:
(A) | (Ω) | 推荐标准电阻阻值 (Ω) | 实际限流值 (A) |
---|---|---|---|
1 | 123420 | 120k | 1.03 |
2 | 61710 | 60.4k | 2.04 |
3 | 41140 | 40.2k | 3.07 |
4 | 30855 | 30.1k | 4.10 |
5 | 24684 | 24k | 5.19 |
6 | 20570 | 20k | 6.21 |
7 | 17631.43 | 17.8k | 6.93 |
8 | 15427.5 | 15k | 8.29 |
9 | 13713.33 | 13.3k | 9.28 |
10 | 12342 | 12k | 10.29 |
实际限流值是根据使用的标准电阻重新计算得到的。