Минимальное USB-устройство подключается всего за пару резисторов
Если вы похожи на большинство из нас, ваш основной подход к созданию чего-либо сводится к следующему: «Какую минимальную сумму мне нужно сделать, чтобы это заработало?» В целом это неплохая стратегия, но минимальной сборки редко бывает достаточно, чтобы удовлетворить все требования, как показывает это крайне минимальное, но функциональное USB-устройство.
Функционально, да, но, как объясняет [TM], только если вы определяете функциональность как распознаваемую вашей операционной системой. Спецификация для этой работы оказалась очень маленькой — стабилизатор на 3,3 В, его конденсатор и пара резисторов, подключенных к DIP-переключателю. Резисторы по 1,5 кОм каждый подключаются к линиям D+ и D- разъема USB и повышают напряжение на соответствующих линиях до 3 В 3, когда их переключатель замкнут. Если переключатель D- активирован, это указывает на то, что запрошено низкоскоростное соединение, а D+ запрашивает более быстрое соединение. В любом случае этого достаточно, чтобы услышать знакомый звук «USB-подключение» в Windows и увидеть его в диспетчере устройств или dmesg в Linux.
Конечно, без микроконтроллера, возвращающего дескриптор устройства, больше ничего не происходит, но все же интересно, что так мало нужно, чтобы хотя бы заставить хост-машину узнать, что что-то было подключено. И это само по себе имеет некоторую диагностическую ценность; как указывает [TM], вы можете использовать эту схему, чтобы проверить, что физический порт на хосте хотя бы минимально работает.
Он рассматривает еще несколько потенциально полезных сценариев, но на самом деле лучшее применение чего-то вроде этого — это обучение самым низким уровням согласования USB-соединения. Если вы хотите углубиться конкретно в USB-C, мы предлагаем вам просмотреть серию статей [Арьи Вороновой] «Все о USB-C».