USB 总线供电集线器 - 每个设备超过 100 mA?

电器工程 力量 USB
2022-01-11 08:10:01

我想问一个关于 USB 电源管理的非常具体的问题。

首先,我将概述我的设备的设计。它是一个对称信号线驱动器,带有内置音频编解码器,适用于我的 DIY 扬声器系统。该设备在内部分为两个大部分独立的模块:带有控制 MCU 的线路驱动器和音频编解码器(TI 的 PCM2706)。两者都需要 USB 数据连接(通过 FT232R 驱动块),并且整个设备应该由总线供电。这两个模块将通过 USB 集线器芯片链接在一起,从而产生与 PC 的单个上行链路 USB 连接。我预计驱动级的消耗在 100 到 200 mA 之间(肯定不止一个负载单元)。

问题来了:根据 USB 规范,总线供电的集线器每个下游端口只能提供一个单元,而从上游最多抽取 5 个单元。我想知道,如果我通过 FT232 请求两个单元作为驱动级,集线器会做什么。不会达到 5 个单元的上行限制(集线器 1 个单元,编解码器 1 个单元,驱动器 2 个单元),因此计算机在物理上应该能够提供该电流。

对于集线器芯片,我一直在查看http://www.ti.com/lit/ds/symlink/tusb2036.pdf有一个“联动”供电模式的选项,这有什么帮助吗?或者芯片会拒绝将两个单元授予驱动程序?在这种情况下,是否有任何肮脏的解决方法?

我知道在枚举过程中还需要大功率设备来绘制最大 100 mA 的电流;这不是问题,因为 FT232 能够在枚举后立即打开驱动程序。集线器也将独立打开舞台。

希望我把我的问题说得足够清楚,并提前感谢您的时间:)

更新:

我对 TUSB2036 芯片做了更多的研究。过流保护可以通过 /OCPROT 引脚关闭。然后集线器向根控制器报告它无法检测到过电流。数据表中有一条警告,USB 2.0 规范需要 OC 保护——这对我来说没关系,我只需要 1.1 全速。然后,PC 的根集线器应 IMO 为整个设备提供 500 mAmps。因此,我可以将驱动程序的 FT232 设置为仅需要 100 mA,而集线器永远不会知道我是否会超过限制(当然要考虑来自 PC 的 500 mA)。有人可以告诉这是否可行吗?

3个回答

我围绕该集线器设计了一块板。

在我的应用程序中,它允许访问 FT232 和 FT245。

如果一切都在您自己的 PCB 上,我建议您完全忽略整个过流保护系统。毕竟,如果你的 PCB 上的某些东西出现故障,整个事情都需要工作,所以让设备能够处理部分故障是一个有争议的问题。

在我的情况下,我捆绑了 TUSB 以请求完整的 500 ma 并禁用过流保护,然后直接从 USB 5.0v 运行所有内容。我通过强制集线器向上游主机报告为自供电来实现这一点。

我做了几个板子,没有任何实际问题,所以这似乎是一个完全可行的策略。它也被用于几台不同的计算机,所以我很有信心按原样使用它。

当然,如果这是用于生产设备,而不是个人项目或测试工具(在我的情况下就是这样),这是一个完全不同的问题。

在此处输入图像描述

(见示意图上的注释)


对于它的价值,您通常可以非常可怕地滥用大多数现代 USB 端口而不会带来太多麻烦。它们中的许多可以提供比它们额定的 500ma 更多的功率,而且没有太多麻烦。
此外,它们中的大多数(我已经测试过,除了一些笔记本电脑)将很高兴地提供完整的 500ma,而无需设备进行枚举。

但是,这因主板而异,具体取决于 USB 主机的设计方式。你的旅费可能会改变。

我对您的设计的理解是,整个设备位于单个 PCB 上,位于单个外壳内,并通过单个 USB 电缆连接到主机。您已将集线器集成到 PCB 上,以允许两个设备与 PC 通信。以下答案将取决于这些假设,如果它由通过可断开电缆连接的几个独立设备组成,那么情况就会改变。

在这种情况下,我建议您只需将集线器配置为枚举为大功率设备,并在整个板上共享产生的 500 mA。有趣的是,TI 的联动端口示例原理图显示了所有设备都连接在一起,即使使用它们的电源管理 IC 也是如此:

在此处输入图像描述

输入的 5V 电源线(以蓝色突出显示,因为它是我们在这个复杂原理图中感兴趣的两个网络之一)连接到 TPS2041 电源管理 IC(一个宽泛的描述,它实际上只是一个 FET,当它检测到 500mA 的电流通过)。但是,每个输入短接在一起,每个输出也短接在一起,然后分配到每个下游端口(以红色显示的网络)。

基本上,他们正在为单个 IC 中的所有下游部分进行过流保护。他们无法检测是否拥有三个低功率 (100mA) 单元、一个大功率单元或两个低功率单元和一个 300 mA 单元。基于此参考设计,所有这些选项都是可接受的。你写了:

根据 USB 规范,总线供电的集线器每个下行端口只能提供一个单元,而最多可绘制 5 个单元...

但是,要直接回答您的问题,德州仪器(USB 小组成员和主要实施者)的这个设计表明您只需保证总电流小于 5 个单位。


为了解决您的问题,规则状态(摘自优秀的USB 简而言之文档):

高功率总线供电功能将从总线汲取所有电源,并且在配置之前不能汲取超过一个单位负载,之后它可以消耗 5 个单位负载(最大 500 mA),前提是它在其描述符中要求这样做。

如果您可以保证您的驱动级在设备配​​置完成之前不会开始汲取电流(这可能就像主机控制器中的定时延迟一样简单),您可以简单地将所有东西连接在一起。由于您的整个电路位于单个 PCB 上并且没有用户可访问的下游端口,因此您也可以省略 TPS2041 并简单地将系统设计为在任何状态下都不需要超过 500 mA 的电流。

枚举为高功率器件的另一个好处是改进了输入电压规格。当您枚举为低功耗设备时,主机只需要在上游端口产生 4.40 V (由于电缆的电阻,在您的设备上会更低)。当您列举为大功率设备时,规范保证您将获得 4.75 V,这更有可能在您可能使用的任何 5V 组件的工作范围内。

可能有点脏:TUSB2036 允许选择下游端口(p3 NPINT1-0 设置为 10)。然后将您的设备连接到两个(物理)端口,以便您可以并行绘制 2 个单元。