USB-C дизайн

Хотелось бы получить ответ о реализации устройства USB Type C. Сравнивая с USB 2.0, где нужен подтягивающий резистор на D+ для выбора скорости связи, я не нашел спецификацию для Type C. Мой вопрос: нужен ли подтягивающий резистор на D+ (DP1 и DP2) , или его можно установить как изображение ниже?введите описание изображения здесь

Здесь, в этом Замечании по применению ST для USB-оборудования ( https://www.st.com/resource/en/application_note/dm00296349-usb-hardware-and-pcb-guidelines-using-stm32-mcus-stmicroelectronics.pdf ), это можно прочитать, что VBUS ОБЯЗАТЕЛЕН для устройств с автономным питанием на контакте PA9 (это мой случай):

введите описание изображения здесь

В дополнение к этому в том же документе говорится, что в микросхеме уже есть подтягивающие резисторы:

введите описание изображения здесь

На изображении ниже показано, что требуется ссылка VBUS на STM32F405, чтобы отметить, когда USB-кабель подключен.

введите описание изображения здесь

Наконец, в таблице данных ( https://www.st.com/resource/en/reference_manual/dm00031020-stm32f405-415-stm32f407-417-stm32f427-437-and-stm32f429-439-advanced-arm-based-32- bit-mcus-stmicroelectronics.pdf ), я обнаружил, что действительно необходимо подключить VBUS к чипу, чтобы пометить кабельное соединение:

введите описание изображения здесь введите описание изображения здесь

Таким образом, для STM32F405 НЕ нужен подтягивающий резистор на D +, и, кроме того, необходим резистивный делитель VBUS, чтобы уведомить микросхему STM32 о подключении USB-кабеля к хосту. Поправьте меня, если я ошибаюсь!


[РЕДАКТИРОВАТЬ: ОКОНЧАТЕЛЬНАЯ ВЕРСИЯ БЕЗ USB-КОНТРОЛЛЕРА] Некоторые моменты, спасибо тем, кто пытался помочь:

  1. Целью этого проекта является обмен данными через USB-C в качестве периферийного устройства только для устройства, а также использование VBUS хоста для питания всей системы с различными напряжениями VBUS, поэтому учтите, что VBUS может работать от 0 В до 20 В, что будет реализовано позже с помощью микросхема контроллера USB. У системы есть собственный источник питания, который на моей схеме называется VM, поэтому VBUS может питать систему или нет, в зависимости от желания пользователей.
  2. Добавлен стабилитрон Z1 (плюс R48 и R49), чтобы напряжение VBUS не превышало 3,3 В, предполагая, что VBUS может варьироваться от 4 В до 20 В (я планирую внедрить контроллер USB-C, чтобы он отлично работал для возможных вариантов). напряжения VBUS).
  3. T1 представляет собой TVS-диод на 20 В, чтобы избежать переходных процессов. То же самое для T2 и T3, оба диода TVS 3.6v Vrwm.
  4. Z2 и Z3 — это просто стабилитроны, чтобы избежать проблем с нелегальными usb-кабелями, которые имеют неправильные значения Rp. Предполагая, что линия CC может достигать 10,4 В в худшем случае, но она имеет максимальное ограничение 6 В, Z2 и Z3 защищают линию CC.
  5. Метка VBUS подключается к выводу PA9 микросхемы STM32F405, чтобы определить наличие напряжения VBUS (на этом выводе будет реализовано напряжение от 0 до 3,3, даже если напряжение VBUS изменяется с 0 до 20 В).

введите описание изображения здесь


[РЕДАКТИРОВАТЬ: ОКОНЧАТЕЛЬНАЯ ВЕРСИЯ С USB-КОНТРОЛЛЕРОМ]

Здесь я публикую полную версию для работы в качестве системы с автономным питанием только для устройства, где виртуальная машина — это мощность системы, которая может обеспечиваться либо VBUS, либо ее батареей. Техническое описание FUSB302B показывает типичную схему приложения, а AN6102 показывает ее дополнение, где стабилитрон 5v1 добавлен для ограничения линейного напряжения CC, чтобы избежать повышения напряжения выше 6v - при использовании нелегальных кабелей.

введите описание изображения здесь

Хост должен видеть соответствующий подтягивающий резистор, но он, как правило, обеспечивается внутренней микросхемой USB в устройстве.
На самом деле на моей схеме это разъем, а не USB-чип, если вы видели эту ссылку. В этом случае схема уже нормально работает?
Да, я знаю. Но, по-видимому, USB+/USB- в конечном итоге подключаются к микросхеме, не так ли? Это та микросхема, которая может обеспечивать или не обеспечивать внутреннее подтягивание. Если вы не уверены, лучше всего поставить резистор на схему - вы всегда можете его не заполнять.
@ td127, я обновил пост, теперь в нем есть полное описание того, что я искал. Имеет ли смысл для вас результат?
Хорошая работа! Хотя USB-C способен генерировать VBUS более 5 В, он не будет этого делать без согласованного контракта на поставку питания. При пассивном соединении, подобном вашему, вы увидите максимум 5 В на линиях VBUS и CC. Защита от электростатического разряда разумна, но стабилитроны на 5 В не нужны. Хост предоставит до 1,5 А или 3 А для VBUS, если он увидит эти 5,1 КБ на CC1 / CC2. В противном случае он может вернуться к низким уровням тока USB2. В идеале 5.1K отключаются от цепи, когда ваше собственное питание отключено, иначе хост обнаружит устройство, но не сможет с ним связаться — это нарушение соответствия USB-IF. Удачи!
@ td127, стабилитрон 5v1 обеспечивает защиту от использования нелегального кабеля, как показано в AN6102 . Вы совершенно правы, для простого разъема USB-C он не нужен, хотя достаточно резисторов 5k1 на контактах CC. Я только что залил версию с чипом контроллера usb, чтобы можно было менять напряжение VBUS. В этом случае, как показано в примечаниях к применению, необходимы стабилитроны 5v1. (На самом деле мне нужно как минимум 6 В на плате, которое поступает через VBUS, что может обеспечить до 20 В!)
@td127, если можно, прошу поискать ошибки в финальной версии. Спасибо за внимание, и огромное спасибо за то, что делитесь знаниями!!
Что ж, теперь вы добавили контроллер подачи энергии, так что вы превзошли мой опыт. Но я думаю, что это означает, что VBUS может стать намного выше, и в этом случае вы можете захотеть сделать R49 больше, потому что он увидит через него VBUS-3.3.
@ td127, вы правы, это была ошибка! Я изменил это для N-MOSFET для управления выводом VBUS_SENSE, который потребляет около 0,20 мкА (аналоговый вывод для определения при подключении VBUS). Помните, что напряжение VBUS изменяется от 5 В до 20 В максимум, а VBUS_SENSE может изменяться от 2,31 В до 4,0 В. Это прямо сейчас? Вы предлагаете лучший smd n-mosfet?
Я был в порядке с стабилитроном, просто сделав R49 более похожим на 3,3K (и я не думаю, что вам вообще нужен R48). Но главный вопрос заключается в том, что если это автономное питание, зачем вам заключать контракт на электроэнергию с хостом? То, что вы описываете, представляет собой систему с двойным питанием, которая может быть автономной или питаться от шины, что еще более сложно. Это ваше намерение?
1. В этой конфигурации стабилитрона резистор не может иметь такое значение, оно должно быть низким, чтобы он работал с напряжением 5 В VBUS. 2. Без R48 в новом дизайне всегда будет 0 В на VBUS_SENSE. 3.Да, это я и имел в виду. Мне нужно заключить контракт на электропитание с хостом, чтобы получить более высокое напряжение, чем 6 В. У меня есть еще один встроенный чип, который не будет работать ниже 6 В, поэтому он необходим, чтобы заставить его работать только с использованием USB-кабеля, то есть без кабеля питания, кроме USB-C. –
Я имел в виду, что R48 можно заменить на короткий. Стабилитрон гарантирует безопасное напряжение, поэтому R48 не дает вам никакой дополнительной выгоды. В любом случае, удачи вам в этом — это важное дело!
Собственно, вы могли бы увидеть последнюю фотографию? Я думаю, вы, вероятно, не заметили, что я загрузил схему с N-MOSFET. Спасибо!
Вроде работать будет, хоть и не с большим запасом. VBUS_SENSE в конечном итоге составит 2,5 В, что немного выше минимального требования 3,3 В * 0,7 = 2,3 В. Но вы не можете сделать его намного выше 2,5 В, потому что тогда Vgs становится меньше 2,5 В, что приближается к серой области для порога полевого транзистора. Итак, я думаю, что вы выбрали оптимальные значения для этого подхода.
Это отличный анализ, так я думал во время проекта. Я рассмотрел эти значения, и да, это небольшой запас!
Если VBUS_SENSE просто идет на входной контакт процессора, вы можете просто сделать его активным низким сигналом (низкий = VBUS обнаружен). Таким образом, простой NPN (база 10 кОм к VBUS, эмиттер заземлен, коллектор к VBUS_SENSE с подтяжкой) легко будет колебаться от 0 до 3,3 В при любом напряжении VBUS. Но МОП-транзистор тоже классный.
Это хороший подход, но я не уверен, что система может обрабатывать обратный метод для обнаружения при подключении VBUS. Если да, то это действительно лучшее решение.
@ td127, я планирую разработать это на 4-слойной плате. Первый слой: USB и другие радиочастотные сигналы; Второй слой: плоскость GND; Третий слой: сигналы Vcc (плоскости Vbat, 5V и 3v3); Четвертый слой: низкочастотные сигналы и размещение оставшихся компонентов SMD (компоненты PTH не используются с обеих сторон). 1. Если есть лучшее решение, буду рад! 2. Рекомендуется иметь плоскость GND под сигналами USB и RF. Вы предлагаете мне разбить их на плоскости, чтобы каждый обратный путь не мешал один другому?
Ваш стек хорош. Вы не используете сигналы Superspeed, поэтому маршрутизация USB не особенно критична. Я бы не стал разделять наземные плоскости - это часто создает больше проблем, чем решает.
Учитывая твердую плоскость GND, как вы сказали, и наличие 2 слоев, предназначенных для маршрутизации сигналов - верхний слой для сигналов RF и USB и нижний слой для оставшихся низкочастотных сигналов: есть ли проблема с маршрутизацией низкочастотных сигналов и разъемов прямо под антеннами? и радиочастотные дорожки на нижнем слое, учитывая плоскости GND и VCC между верхним и нижним слоями?
Нет, ты должен быть в порядке.
Есть ли проблема с размещением переходных отверстий для прокладки дорожек USB?
Нет, иногда это неизбежно из-за разъема и распиновки микросхемы. Только не переусердствуйте. Не следует размещать более 2 переходных отверстий на трассу.

Ответы (1)

Подтягивание, определяющее скорость USB2, является функцией самого устройства (которое должно быть справа на вашей схеме). Type-C сам по себе не заботится о связи через USB, это независимая спецификация разъема. Два раскрывающихся списка 5.1k на ваших схемах определяют функцию устройства, этого достаточно.

Я запутался, значит, для связи с хостом моя схема подходит? По этой схеме хост способен определить максимальную скорость связи?
@EmanuelM, для какой функции «схематика подходит»? Вероятно, вам нужно определить больше того, что вы делаете. Пока ваша схема выглядит как разъем Type-C для USB-устройства. Если вы подключите что-либо к разъему Type-C, сторона хоста (если это хост) идентифицирует соединение как «к устройству» и включит VBUS. После этого конец устройства должен сигнализировать о любой тяге, а хост определит скорость соединения.
Это разъем типа c для устройства, а не хоста. Хост будет подключен к этому разъему для связи с чипом stm32f405. Я вчера прочитал, что у этого чипа есть внутренние подтяжки. Теперь возникает сомнение: нужно ли мне подключать vbus к PA9, чтобы чип понял, что хост-устройство подключено?
@EmanuelM, да, я подозревал, что это устройство. Я не хочу знать, что такое PA9, но да, как только контакты CC обеспечат правильное обнаружение соединения, vbus будет установлен. Затем ваше (не показано справа) устройство включится, если оно питается от шины, и установит DP как событие подключения USB. Если он имеет собственное питание, то VBUS должен служить логическим входом, который будет контролировать утверждение DP.
Да, в этом есть смысл. Проблема состоит в том, чтобы узнать, действительно ли необходимо это соединение (VBUS к выводу микроконтроллера PA9). И да, это автономная система. Я добавил пост, чтобы показать, что в документе ST (производителя uC) говорится, что это соединение необходимо, но в руководстве STM32F405 об этом не упоминается. Что ты посоветуешь?
Але..ченски, прежде всего большое спасибо за помощь! И, после этих 2-х страниц комментариев и других предложений от людей здесь, в дополнение к моим исследованиям, я добрался до «окончательной» версии (надеюсь!) для этого дизайна, я прошу вас проанализировать, потому что у вас есть гораздо больше опыта с этими знаниями. (Я отредактировал сообщение и поставил «окончательную» версию в конце)