Использование подтягивающего и понижающего резисторов на входных или выходных выводах MCU


18

Требуются ли подтягивающие / понижающие резисторы (внутренние или внешние) только для выводов MCU INPUT? Напротив, вывод MCU, сконфигурированный как OUTPUT, «знает, на каком уровне он находится», потому что он управляет - «плавающий» вывод MCU OUTPUT, привязанный к некоторому входу другой цепи, не имеет смысла, потому что состояние вывода MCU может быть только высокий или низкий ... я имею это право? Теперь, при загрузке или сбое MCU, может быть выгодно привязать подтягивание / опускание к этой строке «Выход MCU на вход IC», чтобы гарантировать, что вход для некоторой IC никогда не будет плавающим.

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

Ответы:


21

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

Но большинство выводов mcu являются GPIO, и иногда при запуске определяются как входы, а не выходы. Как вы сказали, иногда вы не хотите, чтобы вход микросхемы плавал при запуске, особенно как вывод сброса, который вы обычно управляете с GPIO вашего микроконтроллера.

Это когда вы используете Weak Pull-up или Pull-down на линии. Поскольку они слабые, и вы выбираете состояние по умолчанию, они не создают помех вашей схеме (если вход всегда должен быть низким, а затем повышенным, вы выбираете слабое понижение и наоборот), но они потребляют немного тока. Вот почему вы выбираете резистор слабый (чем выше значение, тем слабее) достаточно для работы.

Другая обычная настройка выхода, в которой используются подтягивания (или опускания, реже), - это соединения Open Drain или Open Collector . Они только снижают соединение или освобождают линию, оставляя ее плавающей. Подтягивания используются, чтобы привести линию в состояние высокой логики.


Вы упоминаете соединения Open Drain и Open Collector, они не относятся к микроконтроллерам, не так ли? Просто Мосфец используется для установки логического уровня? Я хотел уточнить, может ли микроконтроллер управлять линией с высоким сопротивлением понижающего напряжения.
genericpurpleturtle

9

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

Еще одна причина для использования подтягивания на выходе: если несколько выходов от нескольких MPU соединены друг с другом, вы действительно не хотите, чтобы один управлял VCC, а другой управлял 0V на одном и том же проводе! Таким образом, вы либо подаете 0 В на выход, либо выключаете выход (возможно, настроив его как вход). Когда все выходы отключены, провод подтягивается к «1» (Vcc). Это называется «проводным И» сигналом. (Вы можете сделать то же самое вождение '1' или выключить, с выпадающим R, тогда это называется проводным ИЛИ).

Этот шаблон имеет несколько применений, в том числе позволяет любому одному MPU сигнализировать об ошибке или включать светодиод или разрешать им всем по очереди отправлять друг другу сообщения по одному проводу.


4

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

Это сделано для смягчения сбоя микропрограммы / микроконтроллера, но будет работать только для защиты от состояния Hi-импеданса (в основном, контакт настроен как вход случайно).

Большинство MCU знакомы с выводами ввода-вывода по умолчанию для входного состояния с высоким импедансом при загрузке (но не гарантирую, и у меня нет опыта где-либо вблизи всех семейств MCU), что означает, что может пройти некоторое время, прежде чем код инициализирует вывод состояние выполнено.

Иногда это не имеет значения, а иногда это имеет значение.


Спасибо за ответ, который дополняет и другие ответы! К сведению, в серии PIC24F по умолчанию для выводов GPIO установлен высокий импеданс (вход) после сброса (таблица выводов ввода / вывода).
The_Ders

3

Ответ в том, что это зависит от семейства микроконтроллеров и от поведения по умолчанию при Power On Reset. Если микроконтроллер может быть сконфигурирован только для «выхода» или «входа» на выводе, это обычно означает, что он использует драйвер Totem-Pole для вывода - то есть, по сути, это выходной сигнал строба CMOS, и в этом случае выход всегда направляется к рельсу, поэтому нет никаких оснований для пассивного воздействия на него. Единственный случай, когда имеет смысл использовать подтягивания / опускания на выходе, это когда он сконфигурирован как топология Open Collector / Open Drain. Гораздо чаще встречаются внутренние опции подтягивания / опускания, которые применимы только тогда, когда вывод настроен как вход. Если вы можете гарантировать, что в вашей системе ввод всегда чем-то обусловлен, это потребляет немного энергии.


Отличное объяснение на аппаратном уровне. Спасибо!
The_Ders

2

Вы можете иметь вывод, который иногда является выходом , например, для выполнения I2C.


Я буду помнить об этом при работе с I2C в будущем. Я считаю, что с серией PIC24F модуль I2C предполагает полный контроль над выводами, а линии требуют внешних подтягиваний. Теперь я знаю, почему это так - модуль I2C по существу конфигурирует вывод данных как выход с открытым стоком / коллектором (требуется подтягивающий резистор) или вход с высоким импедансом, в зависимости от того, какие данные выводятся / вводятся с / на Модуль I2C ... у меня есть это право? Я не очень знаком с I2C.
The_Ders

Это точно верно.
pjc50

I2C является одним из примеров шаблона И-проводной. Открытый коллектор облегчает работу с помощью булавки GPIO.
Брайан Драммонд
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.