我想问一个关于 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)。有人可以告诉这是否可行吗?