Наверное многие уже использовали PD-триггеры, чтобы запитать от USB-зарядника самые разные устройства. Очень удобная штука. Однако у разработчиков железа бывают и более сложные требования по управлению питанием, для них и была сделана эта библиотека.
Когда это полезно
Вот несколько примеров, когда фиксированного триггера может не хватать
Меняется сопротивление нагрузки (например, медь/вольфрам при нагреве), и надо крутить напряжение чтобы мощность не падала.
Нужно задать какие-то нестандартные напряжение (через PPS-профиль)
Хочется выставить ограничение по току, чтобы заряжать аккумуляторы напрямую.
Хочется использовать микроконтроллер с поддержкой USB PD (например STM32Gxxx), и упростить внешний обвес.
В общем, это актуально для разработчиков железа, у которых есть свобода выбора "что рисовать на схеме".
Когда не имеет смысла
Усложнять конечно стоит не всегда.
Если вы не разрабатываете свое железо, а пользуетесь готовым - логичнее использовать копеечный внешний триггер.
Если делаете что-то совсем простое, и нужно только фиксированное питание из стандартного списка - с готовым триггером тоже может быть проще. Или можно использовать микросхему, аналогичную тем что в готовых триггерах.
Так что разумный выбор за вами.
Что получилось и зачем новая библиотека
Опенсорсные проекты есть, но все со своими особенностями. Где-то не поддерживаются EPR-режимы (28+ вольт), где-то код гвоздями прибит к операционной системе, которая не всем нужна, и т.п. В общем, смысл в новой библиотеке с перламутровыми пуговицами точно был.
Поскольку время не резиновое, делал только самую востребованную вещь, которая у всех пригорает - режим Sink (потребление энергии). Вот что есть уже сейчас:
Полностью независимое от платформ ядро.
Полная поддержка Sink.
Драйвер FUSB302B - одного из самых популярных чипов.
Совместимость с самой последней версией стандарта USB PD 3.2. Сейчас массовые зарядники поддерживают спецификацию 3.1. Новые, с поддержкой 3.2 и AVS-профилями выпустят в следующем году. Точно выпустят, сертификация чипов уже прошла, с рельсов не свернуть.
Поддержки режима Source (источника питания).
Наворотов по управлению режимами кабеля.
Драйверов для STM32G / WCH (руки не дошли)
Оно работает?
Да. В исходниках есть примеры. Библиотека используется в реальном проекте reflow-паялки, про которую недавно писал. Собственно, она и была поводом сделать свой USB PD стек. А так как привык все делать основательно, решил что стоит упростить жизнь следующим разработчикам. Ну и всё попутно проверялось на десятке зарядников, которые были под рукой, проблем нет.
Честно предупреждаю, тема не самая тривиальная. Если хочется просто привинтить FUSB302B к ардуине и повертеть напряжениями - может быть сложновато. Документация минимальная, для тех кто не боится вникать в код примеров. Но у опытных разработчиков проблем быть не должно.
Ссылки