Communication Protocols - Phase 2
Phase 2 02 Pull-Up and Pull-Down Resistors

Pull-Up and Pull-Down Resistors

Digital inputs should always have a defined logic level. If an input is left unconnected, it enters a floating state, where its voltage becomes unpredictable. To prevent this, digital systems use pull-up and pull-down resistors to establish a known default logic level.

Why Floating Inputs Are a Problem

A floating input is not connected to either HIGH or LOW. Because digital input pins have very high input impedance, they can easily pick up stray electrical charge and electromagnetic interference (EMI) from the surrounding environment.

As a result, the input may randomly switch between logic states, producing unreliable readings and unpredictable system behavior.

Fig 1 - Floating Input Susceptibility to Noise
MCU GPIO Input Pin Floating Input (High Impedance) Ambient EMI / Noise Unstable Logic State (Unpredictable Reads)
An unconnected GPIO input may pick up ambient electrical noise and electromagnetic interference (EMI), resulting in unpredictable logic readings.

What is a Pull-Up Resistor?

A pull-up resistor connects a signal line to VCC through a resistor, establishing a default HIGH state when no other device is actively driving the line.

Behavior

  • Switch Open: Input reads HIGH (logic 1)
  • Switch Closed: Input is connected to GND and reads LOW (logic 0)

A pull-up resistor provides a weak connection to VCC, allowing another device or switch to safely override the signal when required.

Pull-Up Circuit Concept

In a typical pull-up configuration:

  • The input line is connected to VCC through a resistor.
  • A switch connects the line directly to GND.

When the switch is open, the resistor keeps the input at HIGH. When the switch closes, the line is pulled LOW. The resistor limits current flow and prevents a direct short circuit between VCC and GND.

Fig 2 - Pull-Up Resistor Establishing a Default HIGH State
VCC (+3.3V) R_pull (10k) GPIO Input GND (0V) Switch Open (Idle State) GPIO Reads HIGH (1)
When the switch is open, the pull-up resistor biases the GPIO input to VCC, producing a stable logic HIGH.

What is a Pull-Down Resistor?

A pull-down resistor connects a signal line to GND through a resistor, establishing a default LOW state when the signal is otherwise undriven.

Behavior

  • Switch Open: Input reads LOW (logic 0)
  • Switch Closed: Input is connected to VCC and reads HIGH (logic 1)

A pull-down resistor provides a weak connection to ground while allowing an external source to drive the line HIGH.

Pull-Down Circuit Concept

In a typical pull-down configuration:

  • The input line is connected to GND through a resistor.
  • A switch connects the line directly to VCC.

When the switch is open, the resistor keeps the input at LOW. When the switch closes, the line is pulled HIGH.

Fig 3 - Pull-Down Resistor Establishing a Default LOW State
VCC (+3.3V) GPIO Input R_pull (10k) GND (0V) Switch Open (Idle State) GPIO Reads LOW (0)
When the switch is open, the pull-down resistor biases the GPIO input to GND, producing a stable logic LOW.

Why Use a Resistor?

A resistor serves two important purposes:

  1. It establishes a known default logic state.
  2. It limits current flow when the signal is actively driven to the opposite state.

Without the resistor, closing the switch could create a direct path between VCC and GND, resulting in excessive current flow and potential hardware damage.

Weak Pulling and Biasing

Pull-up and pull-down resistors are intentionally large in value, commonly around 10 kΩ. They provide a weak bias, meaning they set the default logic level but can easily be overridden by an active driver.

This allows external circuitry to change the signal state while maintaining a predictable default level when the line is idle.

Where Pull Resistors Are Used

Pull resistors are commonly found in:

  • Push buttons and switches
  • GPIO input pins
  • I²C communication buses
  • Reset signals
  • Boot-configuration pins

Most modern microcontrollers also include configurable internal pull-up and pull-down resistors, eliminating the need for external components in many applications.

Pull-Up vs Pull-Down

Feature Pull-Up Pull-Down
Default State HIGH (1) LOW (0)
Connected To VCC GND
Active State LOW HIGH
Common Uses I²C, Reset Lines, Active-Low Inputs Active-High Inputs, Configuration Pins

Quick Summary

  • Floating inputs can produce unpredictable logic readings.
  • Pull-up resistors provide a default HIGH state.
  • Pull-down resistors provide a default LOW state.
  • Pull resistors establish a known logic level while limiting current flow.
  • Pull resistors provide a weak bias that can be overridden by active drivers.
  • I²C communication relies on pull-up resistors to achieve a HIGH state.
  • Most microcontrollers include configurable internal pull resistors.