Pdsink - библиотека USB PD 3.2 для embedded
Наверное многие уже использовали 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 к ардуине и повертеть напряжениями - может быть сложновато. Документация минимальная, для тех кто не боится вникать в код примеров. Но у опытных разработчиков проблем быть не должно.

Лига Радиолюбителей
1.4K пост9.9K подписчика
Правила сообщества
Соблюдайте правила Пикабу. Посты выкладывать лишь касаемо нашей тематики. Приветствуется грамотное изложение. Старайтесь не использовать мат.
Постарайтесь не быть снобами в отношении новичков. Все мы когда-то ничего не знали и ничего не умели.
За попытку приплести политику или религию - предупреждение. 2 предупреждения - бан.