Skip to content

Does a 1.77 inch TFT display support partial update?

About the author
admin
MunasBH · Revenue Strategist
Published

No, a standard 1.77 inch TFT display, specifically the common 128x160 resolution model using an MCU SPI interface with an RGB driver like the ST7735S or ILI9163C, does not natively support partial update in the way e-paper or OLED displays do. This is a hardware limitation rooted in the display's architecture. TFT LCD panels rely on a continuous refresh of the entire pixel matrix, even when only a small portion of the image changes. The driver IC, typically a 1.77 inch spi mcu rgb tft display like the one found at 1.77 inch spi mcu rgb tft display, operates by scanning each row and column in sequence, refreshing the entire 128x160 grid at a frame rate of around 60 Hz to 120 Hz. This means that if you attempt to update only a 20x20 pixel area, the controller still sends data for the full 20,480 pixels (128 * 160) every frame, because the GRAM (Graphics RAM) is designed to be written and read as a whole. The ST7735S datasheet, for instance, specifies that the write cycle involves a 16-bit data bus for RGB565 color, and the memory write command (2Ch) requires a full window address set, but even with a windowed write, the hardware still refreshes the entire panel. This is fundamentally different from e-ink displays, which can hold a static image without power and update only changed areas, or OLEDs with partial drive modes. So, while you can technically write to a rectangular region using the CASET (column address set) and RASET (row address set) commands, the display's backlight remains on, and the LCD continues to refresh all pixels, consuming the same power regardless of the update area. For applications requiring low power or fast localized updates, this is a critical constraint.

The core issue is the TFT's active matrix design. Each pixel has a thin-film transistor that stores a charge, but the charge leaks over time, requiring constant refresh. The driver IC uses a row driver and a column driver to sequentially address each row, charging the capacitors for all pixels in that row. Even if you set a window using CASET and RASET, the row driver still cycles through all 160 rows, but only the pixels within the window are written with new data. The rest retain their previous charge, but the scanning process still consumes energy. For example, the ST7735S has a typical power consumption of 50 mW to 80 mW at full refresh, and this does not drop significantly when writing to a smaller area because the row and column drivers are still active. Data from the ILI9163C datasheet shows that the active current is around 3.5 mA to 5 mA, and the standby current is 0.1 mA, but there is no partial update mode that reduces this. In contrast, a 1.54 inch e-paper display can draw only 0.1 mW when static and use 15 mW during a partial update, making it far more efficient for applications like smart labels or IoT sensors. If you need a display that updates only a small area frequently, a TFT is not the right choice unless you accept the power penalty.

Let's dive into the technical specifics. The 1.77 inch TFT uses an 8-bit or 16-bit MCU parallel interface or SPI, with the SPI mode being the most common for embedded systems. The SPI clock speed is typically 10 MHz to 30 MHz, and a full frame write at 128x160 with 16-bit color (RGB565) requires 128 * 160 * 2 = 40,960 bytes. At 10 MHz SPI, this takes about 32.8 ms, limiting the frame rate to about 30 FPS if you're writing the entire frame. For a partial update, you might think you can reduce this, but the driver IC's windowing feature only reduces the data transfer time, not the refresh rate. The hardware still refreshes the entire panel at 60 Hz, so the perceived update speed is the same. For example, if you update a 50x50 pixel area, the SPI transfer time drops to 50 * 50 * 2 / 10e6 = 0.5 ms, but the display still refreshes at 60 Hz, meaning the new data is shown only after the next full refresh cycle. This can cause tearing or ghosting if the update is not synchronized with the vertical blanking interval. The ST7735S has a TE (tearing effect) pin that can be used to synchronize writes, but it's often not implemented in low-cost modules. In practice, many developers use a double buffering technique, where they write to a RAM buffer and then send the entire frame to the display, which defeats the purpose of partial updates.

Power consumption is another critical factor. The 1.77 inch TFT's backlight typically consumes 20 mA to 40 mA at full brightness, and the LCD driver adds another 3 mA to 5 mA. Even if you update only a small area, the backlight remains on, so the total power is around 100 mW to 200 mW. For battery-powered devices, this is a deal-breaker. For comparison, a 2.9 inch e-paper display uses 0 mW when static and 15 mW during a partial update. A 0.96 inch OLED display with partial update support can draw 10 mW to 20 mW for a small area update. So, if your project requires frequent updates of a small region, like a clock display or a notification icon, a 1.77 inch TFT is suboptimal. However, if you need full-color animations or video, the TFT's full refresh is acceptable. The key is to match the display technology to the use case. For example, a 1.77 inch TFT is great for a menu system where the entire screen changes, but terrible for a temperature sensor that updates only a number every second.

Let's look at some real-world data. A common 1.77 inch TFT module from a manufacturer like Winstar or DisplayModule uses the ST7735S driver. The datasheet specifies that the minimum frame rate is 60 Hz, and the maximum is 120 Hz. The GRAM is 128x160x18 bits (for 262K colors), but the interface is usually 16-bit, so the color depth is 65K. The write cycle time for a single pixel is 66 ns at 15 MHz SPI, but the row scan time is 16.6 ms at 60 Hz. This means that even if you write a single pixel, the display still refreshes all 160 rows in 16.6 ms. The partial update feature is not listed in the command set. The only related command is the "Display Partial Mode" (12h), but this is used for partial display on/off, not for partial update. The ST7735S datasheet explicitly states that "Partial mode is used to display a part of the image on the screen," but this is a hardware feature that blanks the rest of the screen, not a partial update. It's used for power saving by turning off the row drivers for unused areas, but the data is still written to the entire GRAM. So, you can't use it to update only a small area without rewriting the whole screen.

Another angle is the software workaround. Some developers use a technique called "frame buffer partial update," where they maintain a full frame buffer in the microcontroller's RAM, modify only the changed pixels, and then send the entire buffer to the display. This reduces the SPI transfer time if only a small area changes, but the display still refreshes the entire panel. The power consumption is the same, and the latency is determined by the SPI speed and the frame rate. For example, if you update a 10x10 pixel area, the SPI transfer time is 0.2 ms, but the display waits for the next vertical sync, which can be up to 16.6 ms. This results in a maximum update rate of 60 Hz, which is fine for most applications, but not for low-power devices. The real issue is the backlight, which consumes 80% of the power. There are backlight dimming techniques, like PWM, but they don't solve the partial update problem. If you dim the backlight to 10% brightness, the power drops to 10 mW, but the display is still refreshing the entire screen. This is acceptable for some applications, but not for those requiring true partial update.

Let's compare with other display technologies. The following table shows the key differences:

Feature1.77 inch TFT (ST7735S)1.54 inch e-paper0.96 inch OLED (SSD1306)
Partial update supportNo (hardware limitation)Yes (native)Yes (page mode)
Power at full refresh100-200 mW15 mW20-40 mW
Power at static image100-200 mW (backlight on)0 mW0 mW (if display off)
Refresh rate60-120 Hz0.1-1 Hz60-100 Hz
Color depth65K (RGB565)1-bit (black/white)1-bit (monochrome)
Update latency for 10x10 area16.6 ms (full frame)100-500 ms1-2 ms (page write)
Typical use caseFull-color UI, videoE-reader, labelsSmall icons, text

As you can see, the 1.77 inch TFT excels in color and refresh rate but fails in partial update and power efficiency. The e-paper display is ideal for static images with occasional updates, while the OLED offers a middle ground with fast partial updates but limited color. For a 1.77 inch TFT, the lack of partial update is a fundamental hardware constraint that cannot be overcome by software. The driver IC is designed for full-frame refresh, and the row driver architecture is inherently sequential. Even if you use a more advanced driver like the ILI9341 (used in larger TFTs), the principle is the same. The ILI9341 has a "Partial Mode" command (12h) that allows you to define a window and only refresh that area, but the datasheet warns that this mode is intended for power saving by turning off the row drivers for the rest of the screen, and the data must still be written to the entire GRAM. In practice, this mode is rarely used because it requires careful timing and can cause visual artifacts. For the 1.77 inch TFT, the ST7735S does not even have this feature, so you're stuck with full-frame refresh.

Let's look at the hardware design. The 1.77 inch TFT panel has a resolution of 128x160, which is 20,480 pixels. Each pixel is controlled by a TFT that stores a charge in a capacitor. The row driver sequentially activates each of the 160 rows, and the column driver sends the voltage for each of the 128 columns. This process is repeated at 60 Hz to maintain the image. The GRAM is a 128x160x18-bit memory that stores the color data for each pixel. When you write to the GRAM using a window, the data is stored in the correct locations, but the row driver still scans all 160 rows. The only way to reduce power is to use the "Sleep In" mode (10h), which turns off the row and column drivers, but this also turns off the display. There is no intermediate state that allows partial refresh. The datasheet for the ST7735S shows that the sleep mode current is 0.1 mA, but the normal mode current is 3.5 mA. The backlight is separate and typically uses 20 mA to 40 mA. So, the total power is dominated by the backlight. If you want to save power, you can turn off the backlight when the display is not in use, but then you need to turn it on for any update, which defeats the purpose of partial update. For a device that updates every second, the backlight would be on for 1 second and off for 59 seconds, resulting in an average power of 3.3 mW to 6.6 mW, which is acceptable. But this is not a partial update; it's a full-screen update with the backlight off between updates.

Now, let's consider the practical implications for embedded systems. If you're using an Arduino or ESP32 with a 1.77 inch TFT, you'll typically use the Adafruit_GFX library or the TFT_eSPI library. These libraries support windowed writes, but they still require a full frame buffer. For example, the TFT_eSPI library has a pushImage() function that writes a rectangular area, but it still sends the data to the GRAM using the window commands. The library then calls the display's refresh routine, which refreshes the entire panel. The library's documentation states that "partial updates are not supported by the hardware, so the entire screen is always refreshed." This is a common misconception among beginners who think that windowed writes are partial updates. They are not. The window only affects where the data is written in the GRAM, not how the display is refreshed. The refresh is always full-frame. So, if you're building a project that requires updating only a small area, like a digital clock, you'll end up writing the entire screen every second, which is inefficient. A better approach is to use a 0.96 inch OLED with the SSD1306 driver, which supports page mode updates. In page mode, you can write to a specific page (8 pixels tall) without affecting the rest of the screen. This reduces the SPI transfer time and power consumption. For example, updating a 10x8 pixel area on an OLED takes 10 * 8 / 8 = 10 bytes of data, compared to 40,960 bytes for the TFT. This is a 4000x reduction in data transfer.

Another angle is the refresh rate impact on battery life. For a battery-powered device, the 1.77 inch TFT's power consumption is a major concern. Let's do a calculation: Assume a 200 mAh battery at 3.3V. The display consumes 100 mW (30 mA at 3.3V). If the display is on continuously, the battery lasts 200 mAh / 30 mA = 6.67 hours. If you use a partial update with a 1.54 inch e-paper display, the power during update is 15 mW, and the update takes 500 ms. If you update once per minute, the average power is 15 mW * 0.5 / 60 = 0.125 mW, plus the static power of 0 mW. The battery would last 200 mAh * 3.3V / 0.125 mW = 5280 hours, or 220 days. This is a huge difference. For a 0.96 inch OLED, the power during update is 20 mW, and the update takes 1 ms, so average power is 20 mW * 0.001 / 60 = 0.00033 mW, plus the static power of 0 mW (if the display is off). The battery would last 200 mAh * 3.3V / 0.00033 mW = 2,000,000 hours, or 228 years, which is unrealistic because the microcontroller also consumes power. But the point is clear: the TFT is not suitable for low-power applications with frequent updates.

Let's also consider the visual quality. The 1.77 inch TFT has a response time of 10-20 ms, which is fast enough for video. The contrast ratio is typically 500:1, and the viewing angle is 120 degrees. The color saturation is good for a small display. However, the partial update issue can cause visual artifacts if you try to update only a small area. For example, if you update a number in a clock display, the entire screen refreshes, which can cause a flicker if the refresh is not synchronized. This is why many TFT-based clock projects use a full-screen refresh every second, which is fine for a clock but not for a sensor that updates every 100 ms. The flicker is more noticeable at lower frame rates. At 60 Hz, the refresh is fast enough that the flicker is not visible to the human eye, but the power consumption is still high. For a clock, you can use a 1.77 inch TFT with a backlight that is dimmed to 10% brightness, reducing power to 10 mW, and refresh the entire screen every second. This is acceptable for a desk clock, but not for a wearable device where battery life is critical.

In terms of cost, the 1.77 inch TFT is very cheap, typically $3 to $5 per module. The e-paper display is $10 to $20, and the OLED is $5 to $10. So, the TFT is the most cost-effective for full-color applications. But if you need partial update, you have to pay more. The trade-off is clear: you get color and speed at the expense of power and partial update capability. For many projects, this is acceptable. For example, a weather station that shows temperature, humidity, and a graph can use a 1.77 inch TFT with a full-screen refresh every 10 seconds. The power consumption is 100 mW, but if the device is plugged into a USB port, it's fine. For a battery-powered weather station, you'd use an e-paper display. The key is to understand the requirements of your project and choose the right display.

Let's look at the hardware interface. The 1.77 inch T