Поднимите резисторы на UART

16

Я просматривал примечание к приложению AN2606, где наткнулся на эту схему подключения:

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

Насколько я знаю, UART является двухтактным, а Tx обеспечивает требуемое подтягивание, и, следовательно, нам не нужно использовать какие-либо внешние подтягивания. Я что-то здесь упускаю?

Whiskeyjack
источник
1
Когда UART простаивает, обе линии высокие. Стартовый бит в UART - это первый переход с высокого уровня на низкий на линии. Следовательно, они подтянуты.
Суонанд
@swanand - Это то, что я даже думал. Мне интересно, почему эта заметка приложения будет рекомендовать подтягивания.
Вискиджек
1
Вероятно, для того, чтобы гарантировать определенные требования, например, что он высок до того, как микро завершит свой цикл питания или время нарастания будет достаточно быстрым ...
zakkos
1
Я использовал UART несколько раз на STM32, и у меня не было каких-либо подтягиваний, хотя восхищался, что это было не для загрузчика, поэтому @zakkos может быть правильным. Также обратите внимание на примечание ниже схемы - это необходимо, только если hostst не имеет своего собственного подтягивания, поэтому кажется еще более вероятным, что он существует для того, чтобы выполнить некоторые требования к состоянию линии.
Ян Дорняк
2
@swanand - то, что я имел в виду, - контакты UART подняты сами по себе. Нам не нужны внешние подтягивания, как показано на рисунке. Штыри Tx отвечают за высоковольтную линию без необходимости использования внешних резисторов. Ответ Тони объясняет требование этих резисторов. :)
Вискиджек

Ответы:

17

Когда микроконтроллер находится в режиме сброса, его контакты ввода / вывода будут настроены как входы с высоким импедансом. Таким образом, вывод, используемый для последовательной передачи данных UART (TXD), будет в это время плавающим. Это может привести к шуму, вызывающему передачу мусора драйвером линии RS232.

Некоторые ИС линейного драйвера имеют внутренние подтягивающие резисторы на своих входных выводах на стороне TTL / LVTTL, чтобы предотвратить это и создать состояние простоя RS232. В противном случае можно добавить подтягивающий резистор.

Повышающий резистор на входном выводе последовательного приема данных (RXD) UART не требуется, поскольку линейный приемник RS232 всегда управляет этим выводом.

Обратите внимание, что период сброса, как правило, относительно длительный, и что любые выводы ввода / вывода, используемые в качестве выходных выводов, подвержены этой проблеме и должны учитываться для нагрузочного или понижающего резистора.

TonyM
источник
1
Что касается RXD, если на стороне хоста нет подтягивания на своем выводе «TXD», для вывода «RXD» на ведомой стороне (стороне STM32) также может потребоваться подтягивание.
Дивергер