Перейти к содержанию

Питание от шины USB (bus-powered и self-powered)

Устройство USB может жить целиком от кабеля, а может иметь свой блок питания и брать от шины только на интерфейс. Спецификация USB 2.0 делит устройства по этому признаку на классы и для каждого задаёт, сколько тока и когда можно взять от VBUS.

Обновлено Редакция GAW

Питание от шины (bus-powered) и собственное питание (self-powered) — два способа, которыми устройство USB получает энергию. Устройство с питанием от шины целиком живёт от линии VBUS кабеля. Устройство с собственным питанием имеет свой источник и берёт от VBUS не больше одной единицы нагрузки — на интерфейс USB. От класса зависит, сколько тока и когда можно потреблять, и это устройство обязано честно объявить хосту в дескрипторе.

Единица нагрузки и классы устройств

Спецификация USB 2.0 считает ток единицами нагрузки (в тексте спецификации — unit load) по 100 мА (разд. 7.2.1). Это абсолютный максимум, а не среднее за период. Все устройства после подключения считаются маломощными; разрешение брать больше даёт программа хоста при выборе конфигурации.

Класс по разд. 7.2.1До конфигурацииПосле конфигурации
Маломощная функция с питанием от шиныдо 100 мАдо 100 мА
Мощная функция с питанием от шиныдо 100 мАдо 500 мА
Функция с собственным питаниемдо 100 мА от VBUS на интерфейсдо 100 мА от VBUS, остальное — свой источник
Хаб с питанием от шиныдо 100 мАдо 500 мА на всё, а на каждый свой порт даёт по 100 мА

Хаб с собственным питанием обязан давать на каждый порт пять единиц, 500 мА; хаб с питанием от шины — только одну, поэтому мощное устройство в нём не заработает.

Маломощная функция должна работать уже при 4,40 В на своём конце кабеля, мощная — перечисляться при 4,40 В и выходить на полную мощность при 4,75 В (разд. 7.2.1.3–7.2.1.4). Мощному устройству поэтому не стоит рассчитывать на полные 5 В: от разъёма до его входа уже просело напряжение кабеля.

Как устройство объявляет класс

В дескрипторе конфигурации (табл. 9-10) два поля:

  • bmAttributes, бит D6 — Self-powered: 1, если у конфигурации есть свой источник; бит D5 — поддержка remote wakeup; бит D7 всегда равен 1.
  • bMaxPower — наибольший ток от шины в этой конфигурации, в единицах 2 мА: 50 — это 100 мА, 250 — 500 мА.

Если хост не может дать столько, сколько записано в bMaxPower, — например, устройство на 500 мА включили в хаб с питанием от шины, — он не выберет эту конфигурацию, и устройство останется ненастроенным. Ток считают с запасом: в него входят стабилизатор, светодиоды и всё, что питается от VBUS.

Что ещё требует спецификация

  • До конфигурации — одна единица. Пока хост не выбрал конфигурацию по итогам перечисления, устройство берёт не больше 100 мА; включать мощную нагрузку можно только после этого.
  • Приостановка. Устройство с питанием от шины обязано обнаруживать отсутствие активности на шине и снижать потребление — см. приостановка USB. По поправке Suspend Current предел — 2,5 мА, у настроенного хаба с питанием от шины — 12,5 мА.
  • Стабилизатор. Микроконтроллер на 3,3 В питают от VBUS через стабилизатор: так, для STM32F4 RM0090 прямо требует внешний стабилизатор, который делает VDD из VBUS (разд. 34.5).
  • Бросок тока. Регулятор устройства с собственным питанием, который питает интерфейс от VBUS, тоже ограничивает пусковой ток (разд. 7.2.1.5).
  • Ток только в одну сторону. Никакое устройство не отдаёт ток в VBUS своего восходящего порта — это касается прежде всего устройств с собственным питанием.

Токи зарядных портов BC 1.2, USB 3.x и Type-C в эту схему не входят и задаются своими спецификациями; сравнительная таблица — в статье об USB.

Частые вопросы

Сколько тока можно взять от USB 2.0?

До конфигурации — не больше одной единицы нагрузки, 100 мА, даже если порт может дать больше. После того как хост выбрал конфигурацию, мощное устройство может брать до пяти единиц, 500 мА, если столько заявлено в bMaxPower. Числа — абсолютный максимум, а не среднее (разд. 7.2.1 USB 2.0). Зарядные порты и Type-C дают больше по своим спецификациям.

Что указывать в bMaxPower?

Наибольший ток, который устройство возьмёт от шины в этой конфигурации, в единицах по 2 мА: 50 означает 100 мА, 250 — 500 мА (табл. 9-10). Если в дескрипторе 500 мА, а порт даёт только 100 мА — например, хаб с питанием от шины, — хост эту конфигурацию не выберет. Устройство с собственным питанием указывает, сколько берёт от VBUS на интерфейс.

Можно ли устройству с собственным питанием брать ток от VBUS?

Можно, но не больше одной единицы нагрузки — 100 мА, и только на интерфейс USB, чтобы хост мог обнаружить и перечислить устройство при выключенном основном источнике (разд. 7.2.1.5). Остальное питание идёт от своего источника. Отдавать ток в VBUS устройство не может ни в каком режиме.

Источники

  1. USB Implementers Forum. Universal Serial Bus Specification, Revision 2.0 (April 27, 2000) — разд. 7.2.1: единица нагрузки (unit load) — 100 мА, число единиц — абсолютный максимум, а не среднее; маломощное устройство — одна единица, мощное — до пяти; все устройства по умолчанию маломощные, переход к большему току — под управлением ПО; хабы: с питанием от шины берут одну единицу при включении и до пяти после конфигурации, дают одну единицу на порт; с собственным питанием дают пять единиц на порт; маломощная функция с питанием от шины — не больше одной единицы всегда; мощная — одна единица при включении и до пяти после конфигурации; функция с собственным питанием может брать от VBUS до одной единицы, чтобы работал интерфейс USB; ни одно устройство не отдаёт ток в VBUS; до конфигурации ток не больше одной единицы; устройство с питанием от шины обязано обнаруживать отсутствие активности и уходить в приостановку; разд. 7.2.1.3–7.2.1.5: маломощная функция работает от 4,40 В, мощная — в маломощном режиме от 4,40 В и на полной мощности от 4,75 В; у функции с собственным питанием регулятор интерфейса ограничивает бросок тока; табл. 9-10: bmAttributes D6 — Self-powered, D5 — Remote Wakeup, D7 = 1; bMaxPower — максимальный ток от шины в этой конфигурации в единицах 2 мА (50 = 100 мА); конфигурация с питанием и от шины, и от своего источника указывает ненулевой bMaxPower и ставит D6
  2. USB Implementers Forum. Engineering Change Notice «Suspend Current Limit Changes» to USB 2.0 — ток приостановки 2,5 мА для всех устройств, кроме InterChip USB; настроенные хабы и составные устройства с питанием от шины — до 12,5 мА (2,5 мА на электронику хаба и по 2,5 мА на каждый внешний порт); ненастроенный хаб с питанием от шины — маломощное устройство, 2,5 мА
  3. STMicroelectronics. RM0090 Reference manual STM32F405/415, F407/417, F427/437, F429/439, Rev 21 (June 2024) — разд. 34.5: чтобы сделать устройство с питанием от шины, нужен внешний стабилизатор, который получает VDD микросхемы из VBUS

Нашли ошибку?