Skip to content
From the Counter

What is an SPI ePaper display and how does it work for embedded projects?

By admin From Carroll Gardens Classic Diner

An SPI ePaper display is a low-power, bistable screen that uses the Serial Peripheral Interface (SPI) protocol to communicate with microcontrollers, and it works by electrically manipulating charged pigment particles suspended in microcapsules to form text or images without requiring continuous power to maintain the image. In embedded projects, this means you can show static content—like a sensor reading, a QR code, or a menu—for weeks or months on a single coin cell battery, because the display only draws current during the update phase. The SPI bus typically uses four wires: MOSI (Master Out Slave In), MISO (Master In Slave Out), SCK (Serial Clock), and a Chip Select (CS) line, plus an extra Data/Command (DC) pin and a Reset pin on most ePaper modules. Common driver chips like the Solomon Systech SSD1675 or Ultrachip UC8151 handle the timing and voltage sequencing needed to shift the particles. For example, a 2.9-inch 296x128 pixel SPI ePaper display from Waveshare or Good Display uses a 3.3V logic level and draws about 2-3 mA during a full update, which takes 2-3 seconds, then drops to near-zero microamps in deep sleep. This is a stark contrast to LCDs or OLEDs, which need constant backlighting or pixel refresh. The SPI interface is chosen because it is fast enough to push frame data at 2-4 MHz clock speeds, reliable with simple wiring, and widely supported by Arduino, ESP32, STM32, and Raspberry Pi Pico libraries. The display works by applying a sequence of positive and negative voltages across the electrophoretic film—typically around 15V to 20V DC generated by an onboard boost converter—to move black and white particles. Each pixel is a microcapsule containing positively charged white particles and negatively charged black particles suspended in a clear fluid. When you apply a positive voltage, white particles move to the top, making the pixel appear white; a negative voltage pulls black particles up, making it black. Partial updates are possible but tricky, because the particles can accumulate ghosting after many cycles, so most libraries force a full refresh every 10-15 partial updates to maintain contrast. The controller chip stores the frame buffer in its own SRAM, typically 1-2 KB, so the MCU sends the entire image data over SPI, then the chip handles the high-voltage drive sequence independently. This offloads the MCU from real-time timing constraints, which is a big deal for battery-powered sensors that wake up, log data, update the display, and go back to sleep. For example, an ESP32-S3 running at 80 MHz can send a 296x128 black-and-white frame (about 4,736 bytes) in under 50 ms over SPI at 4 MHz, then the display driver takes 2-3 seconds to physically shift the particles. The total energy for one update is around 6-9 mJ, which means a 2000 mAh Li-ion battery could theoretically handle over 800,000 full updates, though real-world lifetime is lower due to leakage and quiescent current. The bistable nature means the image stays visible for years with zero power, which is why ePaper is used in e-readers, retail shelf labels, bus stop signs, and industrial dashboards. But there are trade-offs: the update speed is slow (2-5 seconds for full refresh), the refresh is often accompanied by a flashing effect as the particles are reset, and the display is not suitable for video or animations. Temperature also affects performance—below 0°C, the particles become sluggish, and updates can take 10-15 seconds or fail entirely. Most ePaper modules have a specified operating range of 0°C to 50°C, but some industrial variants like the Pervasive Displays E2214CS0G1 can handle -20°C to 60°C with a different driver. The SPI interface itself is robust: you can daisy-chain multiple displays by sharing the MOSI, MISO, and SCK lines, but each needs its own CS and DC pins. For a 7-color ePaper (like the ACeP 7.3-inch display), the SPI clock speed is usually limited to 2 MHz because the data lines are longer and the driver chip is more complex. The color variants use four or more particle types (black, white, red, yellow, blue, green, orange) and require multiple voltage phases, making the update time 15-30 seconds. The data density for a 7-color 600x448 pixel image is around 1.2 MB uncompressed, so you need an MCU with enough RAM or a flash chip to store the frame buffer. The SPI protocol for ePaper typically uses 8-bit data packets, where the first byte sent after the DC pin is set low is a command, and subsequent bytes with DC high are data. Common commands include 0x01 (Driver Output Control), 0x04 (Power On), 0x10 (Data Entry Mode), and 0x12 (Display Refresh). The driver chip also has a built-in temperature sensor, which you can read over SPI to adjust the voltage timing for consistent contrast. For example, the SSD1675 has a register at address 0x44 that returns the temperature in degrees Celsius. If you ignore this, the display may look washed out in cold weather. The connection between the MCU and the display is usually a 8-pin header: BUSY, RST, DC, CS, CLK, DIN, GND, and VCC (3.3V). The BUSY pin is critical—it goes high during the update and low when the display is ready for the next command. Polling or interrupting on this pin prevents you from sending data while the internal state machine is busy. Some libraries, like the GxEPD2 library for Arduino, handle all this automatically, but you still need to wire the pins correctly. The SPI bus on the MCU must be configured for Mode 0 (CPOL=0, CPHA=0) or Mode 3 (CPOL=1, CPHA=1), depending on the chip. Most ePaper drivers use Mode 0, where the clock idles low and data is sampled on the rising edge. If you mismatch the mode, the display will not respond. The SPI speed is usually set between 1 MHz and 4 MHz. Faster speeds can cause data corruption if the wires are long or the breadboard is noisy, so keep the connections short and use a ground plane if possible. For embedded projects, the choice of display size and resolution depends on the application. A 1.54-inch 200x200 display is good for a smart badge or a temperature tag, while a 4.2-inch 400x300 display works for a weather station or a digital to-do list. The larger displays require more current during update—up to 25 mA for a 7.5-inch panel—so you need a power supply that can deliver that peak without dropping below 3.0V. Many ePaper modules include a built-in LDO regulator, but some, like the Waveshare 2.13-inch, run directly from 3.3V. The boost converter inside the driver chip generates the high voltage from the 3.3V input, and its efficiency is around 80-85%. The total charge transferred per update is roughly proportional to the number of pixels and the number of voltage phases. For a black-and-white display, each pixel is driven with a positive or negative pulse of about 300 ms, so a 200x200 display (40,000 pixels) takes about 12 seconds of total drive time, but the driver chip sequences the rows and columns, so the actual update time is 2-3 seconds. The data sheet for the UC8151 specifies that the typical update time for a 200x200 display is 1.5 seconds at 25°C. The SPI interface also allows for partial refresh, where you only update a rectangular region of the screen. This is useful for e-ink notepads that need to update a single line of text. The partial refresh uses a different waveform table stored in the driver’s OTP (one-time programmable) memory. The waveform is a sequence of voltage levels and timings that minimizes ghosting. For example, the waveform for a full refresh might have 5 phases, each lasting 100 ms, while a partial refresh might use 3 phases with shorter timings. The waveform is specific to the display panel, and you can usually find it in the manufacturer’s application notes. Some advanced ePaper modules, like the Pervasive Displays Aurora MB, support a “fast update” mode that reduces the refresh time to 200 ms but with lower contrast. This is a trade-off you can make for user interfaces that need responsiveness. The SPI bus is also used to read the display’s ID register, which tells you the panel type, resolution, and supported features. For example, the ID register of the SSD1675 returns 0x12 for a 2.9-inch panel. You can use this in your firmware to auto-detect the display and load the correct waveform. The SPI ePaper display is not a plug-and-play peripheral like a character LCD. You need to initialize the driver chip with a sequence of commands, send the image data, and then trigger the refresh. The initialization sequence typically includes turning on the power, setting the gate and source voltages, loading the waveform, and configuring the update mode. The exact sequence is in the datasheet, but most libraries abstract it away. For example, the Adafruit_EPD library handles the SSD1680, SSD1675, and UC8151 chips. The library uses the SPI bus through the Adafruit_SPIDevice class, which handles the CS and DC pins. The memory footprint for the library is about 8-10 KB of flash and 2 KB of RAM, which fits on an Arduino Uno. For a more complex project like a smart home dashboard, you might use an ESP32 with a 7.5-inch ePaper. The ESP32 has two SPI buses, so you can connect the ePaper to VSPI (pins 18, 19, 23, 5) and keep HSPI for other sensors. The data for a 7.5-inch 800x480 pixel image is 48,000 bytes in 1-bit black-and-white, or 384,000 bytes in 4-bit grayscale. The ESP32 has 520 KB of SRAM, so you can store the frame buffer in memory if you use partial updates. For full updates, you can store the image in PSRAM or flash and send it over SPI in chunks. The SPI speed for such a large display is usually limited to 2 MHz to avoid signal integrity issues. The physical layer of the SPI bus uses 3.3V logic levels, but some MCUs like the Raspberry Pi Pico have 5V-tolerant pins. You should not connect 5V directly to the ePaper’s logic pins, as it can damage the driver chip. Use a level shifter if your MCU runs at 5V. The SPI bus is also susceptible to noise from motors or relays, so if your project includes a pump or a solenoid, keep the SPI wires away from high-current traces. The ePaper display itself is immune to electromagnetic interference because the particles are not affected by magnetic fields, but the driver chip can glitch if the power supply is noisy. Use a 10 µF capacitor between VCC and GND near the display connector to filter out transients. The SPI ePaper display is a mature technology with a well-defined ecosystem. The manufacturer Good Display (GD) produces a range of panels from 1.02-inch to 12.48-inch, and their SPI interface is consistent across the lineup. The GDGEP series, for example, uses the same 8-pin header and the same command set. This means you can swap a 2.9-inch display for a 4.2-inch display in your circuit without changing the wiring, as long as you update the firmware for the new resolution. The waveform data is stored in the driver chip’s OTP, but some displays require you to load the waveform from the MCU. The GDGEP series has a built-in waveform that works for most conditions, but for extreme temperatures, you might need to load a custom waveform. The SPI interface is also used to read the display’s temperature and adjust the waveform automatically. The ePaper display’s lifetime is rated for about 1 million updates for black-and-white panels and 100,000 updates for color panels. After that, the contrast degrades, and the particles may stick. The SPI bus itself does not wear out, but the connector can fail after repeated insertion. Use a locking header or solder the wires directly for a permanent installation. The SPI ePaper display is a good choice for embedded projects that need low power, high readability, and no flicker. The data density is high for a 2-inch display—you can fit 20 lines of 30 characters each in a 200x200 pixel area using a 6x8 font. The SPI protocol is simple enough to implement in bare-metal C or MicroPython, and the libraries are mature. The main drawback is the update speed, but for many applications, that is acceptable. The SPI ePaper display is not a replacement for an LCD, but it is a specialized tool for specific use cases. The key is to understand the trade-offs and design your project around them.

Walk-Ins Welcome

Hungry? The counter's got a stool for you.

Reserve a booth for brunch, grab takeout, or just swing by — we've been pouring coffee on Court Street since 1998.