Подтянуть резисторы на UART

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

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

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

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

Ответы (2)

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

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

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

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

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

Подтягивания имеют смысл только в том случае, если микро находится в режиме загрузки. В этом случае микроцикл на разных портах (uart, usb I2C, can) в зависимости от типа микро.

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