Skip to content
Vol. XIII · Columbus, OH

What is the refresh rate of a 2.4 inch 240x320 TFT display?

Published

The refresh rate of a typical 2.4 inch 240x320 TFT display isn't a single fixed number—it varies based on the interface type, controller chip, and how you drive it. For most common SPI-based modules, the maximum achievable refresh rate falls between 30 Hz and 60 Hz under realistic conditions, though some configurations can push beyond 60 Hz with optimized code and hardware. Let's break down the actual numbers, the factors that limit performance, and what you can expect in real-world use.

First, understand that the 2.4 inch 240x320 TFT display is a small LCD panel with a resolution of 240 pixels wide by 320 pixels tall. The refresh rate, measured in Hertz (Hz), indicates how many times per second the display updates the entire image. For a display this size, the refresh rate is heavily influenced by the pixel clock speed and the communication protocol. Most of these modules use a controller like the ILI9341, ST7789, or HX8347, which support SPI (Serial Peripheral Interface) or parallel interfaces. The SPI interface, common in Arduino and Raspberry Pi projects, typically runs at clock speeds of 8 MHz to 40 MHz, but the actual data throughput is lower due to overhead.

Let's calculate the theoretical maximum for an SPI-driven display. With a 240x320 resolution, you have 76,800 pixels per frame. If each pixel requires 16 bits (2 bytes) for RGB565 color, that's 153,600 bytes per frame. At a 20 MHz SPI clock, the raw data rate is about 20 million bits per second, or 2.5 MB/s. Dividing 2.5 MB/s by 153,600 bytes per frame gives roughly 16.3 frames per second. But this ignores command overhead, timing delays, and the fact that the display controller needs time to process data. In practice, a well-optimized SPI driver on a microcontroller like an STM32 or ESP32 can achieve 30 to 40 Hz with a 20 MHz clock. If you push the SPI clock to 40 MHz, you might hit 50 to 60 Hz, but this depends on the controller's maximum supported frequency—many ILI9341 modules cap at 40 MHz SPI.

However, the 2.4 inch 240x320 TFT display often comes with an optional parallel interface (like 8-bit or 16-bit 8080-style), which drastically improves refresh rates. With a 16-bit parallel interface, you can transfer 16 bits per clock cycle, so a 10 MHz parallel clock yields a raw data rate of 160 Mbps, or 20 MB/s. This translates to a theoretical 130 frames per second for 240x320 resolution. In real-world tests, parallel interfaces on these displays achieve 60 to 80 Hz easily, and with careful timing, you can exceed 100 Hz. But most hobbyist projects use SPI due to fewer pins, accepting the lower refresh rate.

Another critical factor is the display's internal frame buffer and update method. The controller chip has a fixed scanning rate for its internal LCD driver. For example, the ILI9341's typical frame rate is set by its register configuration, often defaulting to 60 Hz for the internal row driver. But this is the rate at which the controller refreshes the LCD pixels from its internal RAM, not the rate at which you can send new data. If you send data slower than 60 Hz, the display will show the same frame until updated. If you send data faster, the controller may not keep up, causing tearing or incomplete frames. So the practical refresh rate is the bottleneck between your data transfer speed and the controller's internal timing.

Let's look at specific controller chips used in these modules. The ILI9341 supports a maximum pixel clock of 10 MHz for the parallel interface and up to 40 MHz for SPI. The ST7789 is similar, with a 40 MHz SPI clock limit. The HX8347 is older and often slower, with SPI caps around 20 MHz. Here's a table summarizing typical refresh rates based on interface and clock speed:

Interface Clock Speed (MHz) Theoretical Max FPS Realistic FPS (with overhead)
SPI (4-wire) 8 6.5 4-5
SPI (4-wire) 20 16.3 10-15
SPI (4-wire) 40 32.6 20-30
8-bit Parallel 10 65.1 40-50
16-bit Parallel 10 130.2 60-80
16-bit Parallel (optimized) 20 260.4 100-120

Note that these numbers assume you're sending full frames each time. If you only update portions of the screen (partial updates), you can achieve higher effective refresh rates for small areas. For example, updating a 100x100 pixel region at 40 MHz SPI yields about 250 Hz for that region, but the rest of the display remains static. This is useful for games or animations where only a small sprite moves.

Another factor is the microcontroller's processing power. An Arduino Uno with a 16 MHz ATmega328P struggles to generate SPI data fast enough—it typically achieves 10-15 Hz for full frames on a 2.4 inch 240x320 TFT display. An ESP32 at 240 MHz can push SPI at 40 MHz and achieve 30-40 Hz with efficient code. A Raspberry Pi Pico (RP2040) with PIO can hit 50-60 Hz on SPI. For parallel interfaces, you need a microcontroller with enough GPIO pins and fast memory access, like an STM32F4 or Teensy 4.0, which can achieve 60-100 Hz.

The display's response time also matters. The LCD panel itself has a typical response time of 10-20 ms (gray-to-gray), which corresponds to a maximum perceivable refresh rate of about 50-100 Hz. Beyond that, the pixels can't switch fast enough, causing motion blur. So even if you drive the display at 120 Hz, the visual improvement over 60 Hz might be minimal due to the LCD's slow response. This is a hardware limitation of the twisted nematic (TN) or IPS panels used in these small displays.

Power consumption is another constraint. Higher refresh rates increase power draw. At 60 Hz with SPI, a typical 2.4 inch TFT draws about 50-100 mA at 3.3V. At 120 Hz, this can double. For battery-powered projects, you might limit refresh to 30 Hz to save power. The backlight also consumes 20-40 mA independently, depending on brightness.

For specific products, the 2.4 inch 240x320 TFT display from DisplayModule (model DM-TFT24-311) uses an ILI9341 controller and supports both SPI and 16-bit parallel interfaces. According to its datasheet, the SPI maximum clock is 40 MHz, and the parallel interface can run at 10 MHz. In their reference designs, they achieve 30 Hz on SPI and 60 Hz on parallel with standard microcontrollers. You can find more details on the 2.4 inch 240x320 tft display product page.

Software optimization plays a huge role. Using DMA (Direct Memory Access) for SPI transfers can double throughput. For example, on an ESP32, using SPI with DMA at 40 MHz gives about 35-40 Hz vs. 20-25 Hz without DMA. Frame buffering also helps—if you double-buffer in the microcontroller's RAM, you can send data continuously without waiting for the display to finish. But the 2.4 inch 240x320 TFT display has its own internal RAM (usually 172,800 bytes for 240x320x18-bit), so you don't need external frame buffer for static images. For animations, you still need to push data fast.

Temperature and voltage affect refresh rate too. The controller's internal oscillator can drift with temperature, causing the frame rate to vary by ±5% over 0-70°C. At lower voltages (e.g., 2.8V instead of 3.3V), the maximum SPI clock may drop, reducing refresh rate. Most modules are rated for 3.3V operation, but some can work at 5V with level shifters, which might increase clock speed slightly.

Let's compare with other display sizes. A 1.8 inch 128x160 TFT (ST7735) can achieve 60 Hz easily on SPI due to lower resolution (20,480 pixels vs. 76,800). A 3.5 inch 320x480 TFT (ILI9488) has 153,600 pixels, so at 40 MHz SPI, you get only 16 Hz. So the 2.4 inch 240x320 is a sweet spot—moderate resolution that balances detail and speed.

In industrial applications, these displays are often used for static data readouts (temperature, pressure) where 10-20 Hz is sufficient. For video playback, you need at least 24 Hz for smooth motion, which is achievable with parallel interface. For gaming, 30-60 Hz is typical. The 2.4 inch 240x320 TFT display is also common in oscilloscopes and waveform generators where partial updates allow high effective refresh rates for the trace.

One more nuance: the refresh rate you set in software might not match the actual hardware refresh. The ILI9341 has a register (0x36) to set the frame rate, but it's often left at default. You can read the current frame rate by measuring the TE (tearing effect) pin output, which toggles at the display's internal refresh rate. Many modules don't expose this pin, so you can't sync your updates. This leads to tearing if you write data while the display is refreshing. To avoid tearing, you can use double-buffering or wait for the vertical blanking interval, but this requires hardware support.

For the 2.4 inch 240x320 TFT display with an ILI9341, the default internal frame rate is 60 Hz (set by the register 0x36 with a value of 0x00). But if you change the register to 0x01, it drops to 50 Hz, or 0x02 for 40 Hz. This is useful for reducing power or matching a specific video source. However, the internal frame rate doesn't affect how fast you can send data—it only affects the display's own scanning. If you send data at 30 Hz, the display will show each frame for 2 internal refreshes, which is fine.

In summary, the refresh rate of a 2.4 inch 240x320 TFT display is not a single number but a range from 4 Hz (slow SPI, low clock) to 120 Hz (optimized parallel, high clock). For most users, expect 10-30 Hz on SPI and 40-80 Hz on parallel. The specific controller, interface, clock speed, microcontroller, and software optimization all matter. Always check the datasheet for your exact module, as some use slower controllers. For example, the ST7789 can hit 60 Hz on SPI with a 40 MHz clock, while the ILI9341 might be limited to 40 Hz due to internal timing. The 2.4 inch 240x320 TFT display is a versatile component, but don't expect 60 Hz out of the box with a simple Arduino sketch—you need to optimize both hardware and code.

Put this analysis on your district.

347 legislators already have. A 30-minute diagnostic with a Coalition principal is where it starts.

Book My Coalition Diagnostic