minimum clock speed needed for lcd tft display factory
Since the display includes the Ilitek ILI9320 controller, then your interface requirements are much lower, as the microcontroller no longer has to interface directly with the TFT and instead only talks to the controller chip via a simple interface: either SPI, which takes six wires: RS, CS, CLK, MOSI, MISO and RESET. Or you can use an 8080-compatible parallel interface which takes 13 wires: an 8-bit data bus, and RS, CS, WR, RD and RESET. (There are options to use larger data-buses, up to 18 bits, but I don"t recommend that for a low end microcontroller.)
There are two optional interfaces in which the microcontroller generates all of the clock signals (VSYNC, HSYNC and DOTCLK); you don"t want to do that since it would require a high-end controller.
So just about any microcontroller will do, however you need to have enough flash memory to hold whatever static items you want to display; for example if you are going to be displaying text then you will need to allocate arrays to store bitmaps for whatever fonts you will use. Even a small font can take 60KB.
Low voltage differential signaling (LVDS, also known as OpenLDI) thin-film transistor (TFT) liquid crystal (LCD) displays typically have a specified resolution and minimum required clock frequency to meet desired resolution. Normally, you will find this information listed in the display data sheet and won’t need to perform any calculations.
However, if you do not yet have access to your display data sheet and only know what resolution you want your system to support, you can estimate what clock frequency you need and determine which serializer/deserializer (SerDes) is appropriate for your application.
%Blanking: The blanking period, or the percentage of time when active video is not being displayed. As shown in Figure 1, it is represented horizontally as horizontal pulse width (HPW), horizontal back porch (HBP) and horizontal front porch (HFP). It is also represented vertically as vertical pulse width (VPW), vertical back porch (VBP) and vertical front porch (VFP).
The values for these blanking parameters are listed in display data sheets. The total blanking period varies from 3% to 39%. If your system uses reduced blanking, then you can estimate %Blanking at 10%. If you are not sure what blanking period your system uses, estimate around 20% and above to be conservative.
Frame rate (or refresh rate):the frequency at which consecutive images (frames) are displayed, and is measured in hertz or frames per second (fps). 60Hz is the most common frame rate, but this value can vary from 24Hz to 70Hz.
Throughput is another metric that you can use to determine whether or not a device will support your desired display resolution. The throughput is the effective payload of video data, and is derived from the required pixel clock frequency and color depth of your system, as shown in Equation 2:
Color depth: For a first-generation SerDes like the SN65LVDS93A, color depth is typically 24-bit red-green-blue (RGB) or 18-bit RGB for single pixel in, single pixel out (SISO) applications, and 48-bit RGB or 36-bit RGB for dual pixel in, dual pixel out (DIDO) applications.
The color depth will determine how many LVDS data lanes your display requires. SerDes serialize data at a rate of 7x the pixel clock frequency on each LVDS data lane. If the color depth is 24-bit RGB, then you will need four LVDS data lanes (there are an additional four bits used for control, which brings the total bit count to 28 bits) and can use a SerDes like the SN65LVDS93A. If the color depth is 18-bit RGB, then you will need three LVDS data lanes (there are an additional 3 bits used for control, which brings the total bit count to 21 bits) and can use a SerDes like the SN74LVDS84A or the SN65LVDS93A.
If the color depth is 48-bit RGB, then you will need eight LVDS data lanes (there are an additional 8 bits used for control, which brings the total bit count to 56 bits) and will need to use a device like the DS90C387 or DS90C189-Q1, which can output as many as eight LVDS data lanes.
When calculating the throughput for DIDO applications, you need to calculate the throughput for the odd pixels and even pixels separately and then add them together. For example, for a 48-bit DIDO application, the total required throughput would be 2 x Pixel Clock x 24.
Since the color depth is 24-bit RGB, you will need four LVDS data lanes. The SN65LVDS93A is a good fit for this application, since it has a pixel clock frequency range of 10MHz to 135MHz. Additionally, the maximum throughput for each LVDS data lane on this device is 135 x 7 = 945Mbps. Because this device has four LVDS data lanes, the total maximum throughput is 945 x 4 = 3780Mbps, which is higher than the minimum required throughput.
So the minimum pixel clock frequency to support a 2048 x 1536 resolution display is 208MHz. However, since this is a 48-bit DIDO application, there are actually two clocks: the frequency is split between them. Each clock must have a frequency of at least 104MHz.
Since the color depth is 48-bit RGB, you will need eight LVDS data lanes. The DS90C387 and DS90C187 are a good fit for this application, since they have a pixel clock frequency range of 32.5MHz to 112MHz (the DS90C387) and 25MHz to 105MHz (the DS90C187) for each channel in DIDO applications. Thus, if you don’t have access to the display data sheet yet, you can still estimate the required pixel clock frequency and throughput to support your desired resolution. If the SerDes does not meet these parameters, data on the display may display incorrectly, or not display at all.
This note will discuss the considerations made when choosing a microcontroller that will work for your display. A few requirements need to be met depending on the display’s features, interface, and size. These can also be determined by the embedded IC in the display. An overview of the considerations when choosing a microcontroller can be seen below. It should be noted that these items are separated for definition but may serve the same purpose and be interconnected in the ecosystem of the controller.
Application and display specific peripheral requirements. I2C, SPI, UART, Parallel, MIPI, LVDS, HDMI etc. Determines pin connections and required architecture of the device.
Flash and RAM memory requirements. Minimum frame buffer memory is dependent on the size andresolution of the display. Location of memory (external or internal) can restrict interface speed and must becompatible with the chosen interface.
Communication speed requirements defined by the interface and intended application. Refresh rateis determined on the size of the display and location of memory. This will indicate which processors arecompatible.
A displays embedded IC can offer resources such as internal RAM, clock generators and power control.This can save resources otherwise needed to be provided externally. Check the datasheet of the display’s ICcontroller for device function specifics.
Availability of resources for programming and debugging the microcontroller. Online resources andexampleprograms to leverage from can a lot of save time. Compatibility with a familiarprogramming environment isadditionally beneficial.
The interface selection is dependent on the intended application of the display. Each display has a different interface or different choices for a connection interface. For smaller displays a 3/4-wire serial interface would be sufficient. For larger display’s with high resolution a faster interface should be chosen. A parallel RGB interface is capable of high-speed data transmission however requires many pin connections. If the intended application for the display is video a MIPI, LVDS or HDMI connection would be a good choice.
The available memory of a microcontroller often becomes a highlighted issue when determining which microcontroller to select. The microcontroller needs a minimum amount of RAM to hold the frame buffer of the display. Even small displays require more RAM than a typical microcontroller possess. To verify that your microcontroller will have enough memory, it is important to calculate the frame buffer.
The minimum RAM required for the frame buffer in this example would then be 768kB. It is important to note that external RAM can be provided for the frame buffer if the microcontroller does not provide it internally. Clocking speed should be verified if using external RAM as the microcontroller cannot access external RAM as quickly. The clock frequency constrained by external RAM sometimes does not meet the minimum requirements of some very high-speed interfaces (ex. DSI-MIPI). Additionally, the display can contain some form of RAM depending on the IC controller inside the display. This can be verified on the specification sheet of the IC.
The speed of the microcontroller is heavily dependent on the interface used in the application. The minimum and maximum of the clock frequency is specified in the datasheet of the display and in the specification sheet of the display’s controller IC. The frame rate is typically around 50-60Hz, which is the median oscillation frequency to refresh the display to maintain an image. The display will often provide an internal high frequency clock that can be initialized to certain frequencies.
It is important to verify in the controller data sheet which resources are provided by the internal IC of the display. Some key information to look for would be: Does the display have sufficient RAM or does this need to be provided? Does the display have an internal oscillator for clock generation for the interface chosen? An additional graphics controller can be used to interface the display with the microcontroller to meet these requirements. Features like these can be utilized to avoid additional cost, space, and memory of your application.
After a brief consideration of intended application and interface of the display you can get some idea of which microcontroller processor and architecture you will need. There are a few different microcontroller processors to choose from. The main choices are ARM, AVR, PIC, and 8051. The difference between them is the bit size of the processor, 8-bit, 16-bit, 32-bit or 64-bit data . The data bit width is the amount of data that can be sent at a time. This determines the speed of data transfer and thus compatible applications and interfaces.
The AVR has an 8-bit processor and is a RISC type microcontroller. This type of processor is compatible with low speed interfaces (SPI, I2C) and smaller displays. A common AVR microcontroller board is the Arduino which has the embedded 8-bit ATMEL RISC processors. These processors are widely popular which provide the benefit of numerous online resources and availability. The Arduino processors (ATmega/SAM3X) are typically available in most microcontroller programming environments. Additionally, Arduino offers 32-bit AVR development boards which function closely to the ARM processors.
The AVR microcontrollers are constrained by the low frequency, internal memory availability and power costs. AVR’s cannot use external program memory but some may allow expansion of external SRAM. These microcontrollers alone would be incompatible for high frequency applications such as video, large displays, or capacitive touch panels.
The ARM microprocessors have a RISC architecture. They offer 32-bit or 64-bit processors and are great options for high speed interfaces (Parallel, LVDS, MIPI, HDMI) and high-resolution displays. Common ARM processors can be found from STMicroelectronics and Raspberry Pi. The most common version of the ARM processors is the “Microcontroller” Arm-M group which include the Cortex-M0 and Cortex-M4 series.
The ARM processors are compatible with most displays and connection interfaces. These microcontrollers have become increasingly popular, so the cost has become comparable between the ARM and the AVR types. These processors provide the speed, but it is recommended to verify the available RAM as these boards vary widely on included features.
The PIC architecture consists of 8, 16, and 32-bit processors developed by Microchip. The PIC 32-bit series of microcontrollers have been geared toward graphical embedded applications and there are a lot of resources online for these devices. There is a huge variety of PIC controllers which make them easily available. These microcontrollers are known for being low cost and are comparable to the ARM processors. The drawback of the PIC controllers is using Microchips programming environment, but this is based on preference.
The Intel MCS-51, more commonly known as the 8051 microcontrollers have a CISC architecture and an 8-bit processor. These processors differ in architecture from the previous and are programmed using a combination of C and assembly languages. The program memory is read only and does not have an on-board ISP. A special programming device is needed to rewrite the EEPROM or flash memory. These processors are typically small, low cost and low powered. This can make them favorable for battery powered devices. These processors are commonly used to initialize TFT displays and are combined with a graphics controller to provide the required resources such as RAM and clock frequency.
Development environments and online resources become considerably valuable when creating an application for your display. A brand new or uncommon microcontroller will have very few resources for reference. Even knowledgeable engineers can find frustrations with the manufacturers programming environments. There are many microcontroller choices that will support your display with similar and overlapping features. Choosing a microcontroller with an available FAQ, application notes or is accessible on a familiar programming platform can save a lot of time.
Buyers and others who are developing systems that incorporate FocusLCDs products (collectively, “Designers”) understand and agree that Designers remain responsible for using their independent analysis, evaluation and judgment in designing their applications and that Designers have full and exclusive responsibility to assure the safety of Designers" applications and compliance of their applications (and of all FocusLCDs products used in or for Designers’ applications) with all applicable regulations, laws and other applicable requirements.
Designer agrees that prior to using or distributing any applications that include FocusLCDs products, Designer will thoroughly test such applications and the functionality of such FocusLCDs products as used in such applications.
This is a very low-power LCD clock, based on an AVR128DA48, capable of running for over three years from a CR2032 button cell, or for ever from a solar cell:
Every minute it also briefly displays the temperature, using the AVR128DA48"s on-chip temperature sensor, and the battery voltage, by using the ADC to read its own supply voltage. There"s also an I2C connection so you can add an external sensor, for example to show the humidity in addition to the other readings.
Although liquid crystal displays (LCDs) are relatively old technology, they still offer several advantages over newer types of display, including low power, low cost, and readability.
I recently bought some Densitron LCD displays on eBay for a few pounds/dollars, and I"d been wanting to try building a low-power clock around them, to see just how low I could get the power consumption. The displays are a standard type, available with compatible pinouts from several manufacturers. They are called static (as opposed to multiplexed), which means that every segment comes to a separate pin on the edge connector. This makes 28 pins for the segments plus three decimal points, a colon, and a common pin, adding up to 33 pins altogether. The displays I"ve found usually have two common pins, and also typically have other special-purpose segments, such as a minus sign, in a 40-pin package.
The displays are usually clear, but when you apply a voltage of about 3.3V between a segment and the common line the segment turns black. The displays I"m using have a reflective backing; they are also available with a translucent backing so you can add a backlight behind them.
There"s one catch; you can"t use a DC voltage to turn on the segments, because this would cause electrolysis to occur which would slowly degrade the display. The solution is to use AC by switching the polarity across the segment at a low frequency; 32Hz is usually recommended. Fortunately this is easy to do in software
Most 40-pin, 33mm row spacing displays should be compatible with this board; here are some I"ve found. These all have 4 digits and 3 decimal points on pins 5 to 27, 29 to 32, and 34 to 37, and commons on 1 and 40, plus a few extra symbols as shown:
The circuit is less complicated than it looks. Each segment simply connects to one I/O line on the processor. All the segments for one digit go to the same port, with the decimal point going to bit 7, segment A going to bit 6, through to segment G going to bit 0 (with a couple of exceptions explained below).
Because of the number of interconnections I didn"t fancy prototyping this project by hand, but went straight to designing a PCB in Eagle, and I sent it to PCBWay for manufacture. I tried to make the PCB as general purpose as possible. It caters for any of the displays in the above table; to select which of the extra symbols you want to display you need to fit an 0Ω resistor to the board to act as a link.
The ATmega4809 and its lower-memory siblings, down to the ATmega809, are pin compatible with the DA and DB chips in the same packages, and so could also be used on this board; the only restriction is that the pins I"ve used for I2C, PF2 and PF3, only support slave I2C on the ATmega4809.
Alternatively, if you want to power the clock from a 3V solar cell there are holes to allow you to fit a supercapacitor in place of the coin cell; I used a PowerStor 0.47F 5V one
The PCB also includes a 4-pin JST PH socket, providing an I2C interface compatible with Adafruit"s STEMMA system or the Grove system. You can use this to connect a sensor to the board, for example to show the humidity as well as the time and temperature, or you could use it to make the board an I2C slave so it can be used as an I2C display for other projects.
The I2C interface is connected to PF2 (SDA1) and PF3 (SCL1). This I2C interface isn"t suported by DxCore, but I plan to give some sample code for connecting an I2C sensor in a future article.
There"s no multiplexing, so to display a segment pattern we just need to write the appropriate value from the segment array, Char[0] to Char[11], to the port corresponding to the digit. Ports D, C, and A provide eight I/O lines each, so these map in a logical way to the seven segments and decimal point in digits 0 to 2. There"s a slight complexity with digit 3 because Port B only has six I/O lines available, so the segment corresponding to bit 6 is provided by PF5. The colon or other symbol is controlled by PF4.
The clock uses the Real-Time Clock (RTC) peripheral controlled by a 32.768kHz crystal to keep accurate time. The code to set up the RTC is almost identical to my earlier projects Mega Tiny Time Watch [Updated] and Big Time. It is configured as a Periodic Interrupt Timer (PIT), generating a regular interrupt. In this project I"ve used a divisor of 512, which divides down the 32.768kHz crystal to give 64 interrupts a second.
The interrupt service routine first toggles all the I/O lines connected to the LCD segments, and the common connections. Every 32 calls, or every half second, it calculates the current time, and checks whether the buttons are pressed. If the MINS or HRS buttons are pressed it advances the time by a minute or an hour respectively. It then calls the routine DisplayTime() to update the time, or at the end of each minute it calls DisplayVoltage() to display the battery voltage for three seconds, followed by DisplayTemp() to display the temperature for three seconds:
DisplayTime() copies the digits representing the current time to the corresponding output ports, specified by Digit[0] to Digit[3]. It also flashes the colon:
Unlike earlier AVR microcontrollers, where you had to calibrate the temperature sensor, the AVR DA and DB series have been calibrated during manufacture and contain calibration parameters in ROM. The temperature display is therefore pretty accurate without any additional calibration.
The processor spends most of its time in power-down sleep mode, to save power, and is woken up by the 64Hz interrupt from the Real-Time Clock peripheral. I measured the average power consumption at 3.3V for four different clock frequencies:
Usually you"d expect the power consumption to increase with processor clock frequency, so at first sight these figures are puzzling. The explanation is that at higher clock frequencies the time taken to execute the interrupt service routine is shorter, allowing the processor to spend a higher proportion of the time asleep.
The 32.768kHz external crystal oscillator has a low-power mode, and selecting this reduced the average power consumption with a 24MHz clock from 9.5µA to 7.3µA. The AVR128DA48 datasheet doesn"t seem to mention any downside to choosing the low-power mode, so I used this setting.
A CR2032 coin cell has a typical capacity of 225 mAh, so with a consumption of 7.3µA the expected battery life of the clock is 225/0.0073/24/365 or about 3.5 years.
With a 0.47F supercapacitor you can expect a current of 0.47A for 1 second. This gives an expected life of 0.47/7.3x10‑6/60/60 or about 18 hours, which I confirmed by testing it. This should be sufficient to keep the clock running overnight with a suitable solar cell providing power during daylight.
Pressing the MINS button resets the seconds to zero; this is designed so you can set the clock to the precise second, such as from a radio timecode. To do this, set the minutes to the current minute, and at the timecode at the end of the minute step the minutes on by one.
The HRS button doesn"t affect the seconds and minutes timing; this is designed to allow you to switch between Standard Time and Daylight Saving Time without affecting the clock setting.
Let us start with the basics first; refresh the knowledge about TN and LCD displays in general, later we will talk about TFTs (Thin Film Transistors), how they differ from regular monochrome LCD displays. Then we will go on to the ghosting effect, so we will not only discuss the technology behind the construction of the TFT, but also some phenomena, like the ghosting effect, or grayscale inversion, that are important to understand when using an LCD TFT display.
Next, we will look at different technologies of the TFT LCD displays like TN, IPS, VA, and of course about transmissive and transflective LCD displays, because TFT displays also can be transmissive and transflective. In the last part we will talk about backlight.
Let us start with a short review of the most basic liquid crystal cell, which is the TN (twisted nematic) display. On the picture above, we can see that the light can be transmit through the cell or blocked by the liquid crystal cell using voltage. If you want to learn more about monochrome LCD displays and the basics of LCD displays, follow this link.
What is a TFT LCD display and how it is different from a monochrome LCD display? TFT is called an active display. Active, means we have one or more transistors in every cell, in every pixel and in every subpixel. TFT stands for Thin Film Transistor, transistors that are very small and very thin and are built into the pixel, so they are not somewhere outside in a controller, but they are in the pixel itself. For example, in a 55-inch TV set, the TFT display contains millions of transistors in the pixels. We do not see them, because they are very small and hidden, if we zoom in, however, we can see them in every corner of each pixel, like on the picture below.
On the picture above we can see subpixels, that are basic RGB (Red, Green, Blue) colors and a black part, with the transistors and electronic circuits. We just need to know that we have pixels, and subpixels, and each subpixel has transistors. This makes the display active, and thus is called the TFT display. TFT displays are usually color displays, but there are also monochrome TFT displays, that are active, and have transistors, but have no colors. The colors in the TFT LCD display are typically added by color filters on each subpixel. Usually the filters are RGB, but we also have RGBW (Red, Green, Blue, White) LCD displays with added subpixels without the filter (White) to make the display brighter.
Going a little bit deeper, into the TFT cell, there is a part inside well known to us from the monochrome LCD display Riverdi University lecture. We have a cell, liquid crystal, polarizers, an ITO (Indium Tin Oxide) layer for the electrodes, and additionally an electronic circuit. Usually, the electronic circuit consists of one transistor and some capacitors to sustain the pixel state when we switch the pixel OFF and ON. In a TFT LCD display the pixels are much more complicated because apart from building the liquid crystal part, we also need to build an electronic part.
That is why TFT LCD display technologies are very expensive to manufacture. If you are familiar with electronics, you know that the transistor is a kind of switch, and it allows us to switch the pixel ON and OFF. Because it is built into the pixel itself, it can be done very quickly and be very well controlled. We can control the exact state of every pixel not only the ON and OFF states, but also all the states in between. We can switch the light of the cells ON and OFF in several steps. Usually for TFT LCD displays it will be 8-bit steps per color, so we have 256 steps of brightness for every color, and every subpixel. Because we have three subpixels, we have a 24-bit color range, that means over 16 million combinations, we can, at least theoretically, show on our TFT LCD display over 16 million distinct colors using RGB pixels.
Now that we know how the TFT LCD display works, we can now learn some practical things one of which is LCD TFT ghosting. We know how the image is created, but what happens when we have the image on the screen for a prolonged time, and how to prevent it. In LCD displays we have something called LCD ghosting. We do not see it very often, but in some displays this phenomenon still exists.
If some elements of the picture i.e., your company logo is in the same place of the screen for a long period of time, for couple of weeks, months or a year, the crystals will memorize the state and later, when we change the image, we may see some ghosting of those elements. It really depends on many conditions like temperature and even the screen image that we display on the screen for longer periods of time. When you build your application, you can use some techniques to avoid it, like very rapid contrast change and of course to avoid the positioning the same image in the same position for a longer time.
You may have seen this phenomenon already as it is common in every display technology, and even companies like Apple put information on their websites, that users may encounter this phenomenon and how to fix it. It is called image ghosting or image persistence, and even Retina displays are not free of it.
Another issue present in TFT displays, especially TN LCD displays, is grayscale inversion. This is a phenomenon that changes the colors of the screen according to the viewing angle, and it is only one-sided. When buying a TFT LCD display, first we need to check what kind of technology it is. If it is an IPS display, like the Riverdi IPS display line, then we do not need to worry about the grayscale inversion because all the viewing angles will be the same and all of them will be very high, like 80, 85, or 89 degrees. But if you buy a more common or older display technology type, like the TN (twisted nematic) display, you need to think where it will be used, because one viewing angle will be out. It may be sometimes confusing, and you need to be careful as most factories define viewing direction of the screen and mistake this with the greyscale inversion side.
On the picture above, you can see further explanation of the grayscale inversion from Wikipedia. It says that some early panels and also nowadays TN displays, have grayscale inversion not necessary up-down, but it can be any angle, you need to check in the datasheet. The reason technologies like IPS (In-Plane Switching), used in the latest Riverdi displays, or VA, were developed, was to avoid this phenomenon. Also, we do not want to brag, but the Wikipedia definition references our website.
We know already that TN (twisted nematic) displays, suffer from grayscale inversion, which means the display has one viewing side, where the image color suddenly changes. It is tricky, and you need to be careful. On the picture above there is a part of the LCD TFT specification of a TN (twisted nematic) display, that has grayscale inversion, and if we go to this table, we can see the viewing angles. They are defined at 70, 70, 60 and 70 degrees, that is the maximum viewing angle, at which the user can see the image. Normally we may think that 70 degrees is better, so we will choose left and right side to be 70 degrees, and then up and down, and if we do not know the grayscale inversion phenomena, we may put our user on the bottom side which is also 70 degrees. The viewing direction will be then like a 6 o’clock direction, so we call it a 6 o’clock display. But you need to be careful! Looking at the specification, we can see that this display was defined as a 12 o’clock display, so it is best for it to be seen from a 12 o’clock direction. But we can find that the 12 o’clock has a lower viewing angle – 60 degrees. What does it mean? It means that on this side there will be no grayscale inversion. If we go to 40, 50, 60 degrees and even a little bit more, probably we will still see the image properly. Maybe with lower contrast, but the colors will not change. If we go from the bottom, from a 6 o’clock direction where we have the grayscale inversion, after 70 degrees or lower we will see a sudden color change, and of course this is something we want to avoid.
To summarize, when you buy older technology like TN and displays, which are still very popular, and Riverdi is selling them as well, you need to be careful where you put your display. If it is a handheld device, you will see the display from the bottom, but if you put it on a wall, you will see the display from the top, so you need to define it during the design phase, because later it is usually impossible or expensive to change the direction.
We will talk now about the other TFT technologies, that allow us to have wider viewing angles and more vivid colors. The most basic technology for monochrome and TFT LCD displays is twisted nematic (TN). As we already know, this kind of displays have a problem with grayscale inversion. On one side we have a higher retardation and will not get a clear image. That is why we have other technologies like VA (Vertical Alignment), where the liquid crystal is differently organized, and another variation of the TFT technology – IPS which is In-Plane Switching. The VA and IPS LCD displays do not have a problem with the viewing angles, you can see a clear image from all sides.
Nowadays all TV sets, tablets and of course mobile phones are IPS or VA. You can turn them around and see the image clear from all sides. But, for monitor applications the TN technology is still widely used, because the monitor usually is in front of you and most of the time you look directly at it, from top, left or right side, but very rarely from the bottom, so the grayscale inversion viewing angle can be placed there. This technology still is very practical because it is affordable and has some advantages for gamers because it is very fast.
Apart from the different organization of the liquid crystals, we also organize subpixels a little bit differently in a VA and IPS LCD displays. When we look closer at the TN display, we will just see the subpixels with color filters. If we look at the VA or IPS display they will have subpixels of subpixels. The subpixels are divided into smaller parts. In this way we can achieve even wider viewing angles and better colors for the user, but of course, it is more complicated and more expensive to do.
The picture above presents the TN display and grayscale inversion. For IPS or VA technology there is no such effect. The picture will be the same from all the sides we look so these technologies are popular where we need wide viewing angles, and TN is popular where we don’t need that, like in monitors. Other advantages of IPS LCD displays are they give accurate colors, and wide viewing angles. What is also important in practice, in our projects, is that the IPS LCD displays are less susceptible to mechanical force. When we apply mechanical force to the screen, and have an optically bonded touch screen, we push the display as well as squeeze the cells. When we have a TN display, every push on the cell changes the image suddenly, with the IPS LCD displays with in-plane switching, different liquid crystals organization, this effect is lesser. It is not completely removed but it is much less distinct. That is another reason IPS displays are very popular for smartphones, tablets, when we have the touchscreens usually optically bonded.
If we wanted to talk about disadvantages, there is a question mark over it, as some of them may be true, some of them do not rely on real cases, what kind of display, what kind of technology is it. Sometimes the IPS displays can have higher power consumption than others, in many cases however, not. They can be more expensive, but not necessarily. The new IPS panels can cost like TN panels, but IPS panels definitely have a longer response time. Again, it is not a rule, you can make IPS panels that are very fast, faster than TN panels, but if you want the fastest possible display, probably the TN panel will be the fastest. That is why the TN technology is still popular on the gaming market. Of course, you can find a lot of discussions on the internet, which technology is better, but it really depends on what you want to achieve.
Now, let us look at the backlight types. As we see here, on the picture above, we have four distinct types of backlight possible. The most common, 95 or 99 per cent of the TFT LCD displays on the market are the transmissive LCD display type, where we need the backlight from the back. If you remember from our Monochrome LCD Displays lecture, for transmissive LCD displays you need the backlight to be always on. If you switch the backlight off, you will not see anything. The same as for monochrome LCD displays, but less popular for TFT displays, we have the transflective LCD display type. They are not popular because usually for transflective TFT displays, the colors lack in brightness, and the displays are not very practical to use. You can see the screen, but the application is limited. Some transflective LCD displays are used by military, in applications where power consumption is paramount; where you can switch the backlight off and you agree to have lower image quality but still see the image. Power consumption and saving energy is most important in some kind of applications and you can use transflective LCD displays there. The reflective type of LCD displays are almost never used in TFT. There is one technology called Low Power Reflective Displays (LPRD) that is used in TFT but it is not popular. Lastly, we have a variation of reflective displays with frontlight, where we add frontlight to the reflective display and have the image even without external light.
Just a few words about Low Power Reflective Displays (LPRD). This kind of display uses environmental light, ambient light to reflect, and produce some colors. The colors are not perfect, not perfectly clear, but this technology is becoming increasingly popular because it allows to have color displays in battery powered applications. For example, a smartwatch would be a case for that technology, or an electrical bike or scooter, where we can not only have a standard monochrome LCD display but also a TFT LCD color display without the backlight; we can see the image even in
You have app. 15% of the article left. That content is exclusive for our Riverdi University members only. Please fill out the Riverdi University Membership form below and join our community!
strong sunlight and not need backlight at all. So, this kind of TFL LCD display technology is getting more and more popular when we have outdoor LCD displays and need a low power consumption.
On the picture above, we have some examples of how transmissive and reflective LCD displays work in the sunlight. If we have a simple image, like a black and white pattern, then on a transmissive LCD display, even with 1000 candela brightness, the image probably will be lower quality than for a reflective LCD display; if we have sunlight, we have very strong light reflections on the surface of the screen. We have talked about contrast in more detail in the lecture Sunlight Readable Displays. So, reflective LCD displays are a better solution for outdoor applications than transmissive LCD displays, where you need a really strong backlight, 1000 candela or more, to be really seen outdoors.
To show you how the backlight of LCD displays is built, we took the picture above. You can see the edge backlight there, where we have LEDs here on the small PCB on the edge, and we have a diffuser that distributes the light to the whole surface of LCD screen.
In addition to the backlight, we have something that is called a frontlight. It is similar to backlight, it also uses the LEDs to put the light into it, but the frontlight needs to be transparent as we have the display behind. On the example on the picture above we can see an e-paper display. The e-paper display is also a TFT display variation, but it is not LCD (liquid crystal), it is a different technology, but the back of the display is the same and it is reflective. The example you see is the Kindle 4 eBook reader. It uses an e-paper display and a frontlight as well, so you can read eBooks even during the night.
Please remember to SUBSCRIBE to our YouTube channel and fill out the MEMBERSHIP FORM, to be informed about our Riverdi University materials and live events!
TFT (Thin Film Transistor) LCD (Liquid Crystal Display) dominates the world flat panel display market now. Thanks for its low cost, sharp colors, acceptable view angles, low power consumption, manufacturing friendly design, slim physical structure etc., it has driven CRT(Cathode-Ray Tube) VFD ( Vacuum Fluorescent Display) out of market, squeezed LED (Light Emitting Diode) displays only to large size display area. TFT LCD displays find wide applications in TV, computer monitors, medical, appliance, automotive, kiosk, POS terminals, low end mobile phones, marine, aerospace, industrial meters, smart homes, handheld devices, video game systems, projectors, consumer electronic products, advertisement etc. For more information about TFT displays, please visit our knowledge base.
There a lot of considerations for how to choose a most suitable TFT LCD display module for your application. Please find the check list below to see if you can find a right fit.
It is the start point for every project. There aretwo dimensions to consider: outside dimension (width, height, thickness) and AA (active area or pixel area). Orient Display’s standard product line ranges from 1.0” to 32”. Our OLED size can go down to 0.66” which fit for wearable devices.
Resolution will decide the clearance. Nobody likes to see a display showing pixel clearly. That is the reason for better resolution, going from QVGA, VGA to HD, FHD, 4K, 8K. But higher resolution means higher cost, power consumption, memory size, data transfer speed etc. Orient Display offers low resolution of 128×128 to HD, FHD, we are working on providing 4K for our customers. For full list of resolution available, please see Introduction: LCD Resolution
TFT screen brightness selection is very important. You don’t want to be frustrated by LCD image washout under bright light or you drain the battery too fast by selecting a super brightness LCD but will be used indoor only. There are general guidance listed in the table below.
Orient Display offers standard brightness, medium brightness , high brightness, and high end sunlight readable IPS TFT LCD display products for our customers to choose from.
If the budget is tight, TN type TFT LCD can be chosen but there is viewing angle selection of either 6 o’clock or 12 o’clock. Gray scale inversion needs to be taken of carefully. If a high-end product is designed, you can pay premium to select IPS TFT LCD which doesn’t have the viewing angle issue.
It is similar to viewing angle selection, TN type TFT LCD has lower contrast but lower cost, while IPS TFT LCD has much high contrast but normally with higher cost. Orient Display provides both selections.
Normal TFT LCD displays provide wide enoughtemperature range for most of the applications. -20 to 70oC. But there are some (always) outdoor applications like -30 to 80oC or even wider, special liquid crystal fluid has to be used. Heater is needed for operating temperature requirement of -40oC. Normally, storage temperature is not an issue, many of Orient Display standard TFT display can handle -40 to 85oC, if you have any questions, feel free to contact our engineers for details.
Power consideration can be critical in some hand-held devices. For a TFT LCD display module, backlight normally consumes more power than other part of the display. Dimming or totally shutdown backlight technology has to be used when not in use. For some extreme power sensitive application, sleep mode or even using memory on controller consideration has to be in design. Feel free to contact our engineers for details.
Genetic Interfaces: Those are the interfaces which display or touch controller manufacturers provide, including parallel, MCU, SPI(,Serial Peripheral Interface), I2C, RGB (Red Green Blue), MIPI (Mobile Industry Processor Interface), LVDS (Low-Voltage Differential Signaling), eDP ( Embedded DisplayPort) etc. Orient Display has technologies to make the above interface exchangeable.
High Level Interfaces: Orient Display has technologies to make more advanced interfaces which are more convenient to non-display engineers, such as RS232, RS485, USB, VGA, HDMI etc. more information can be found in our serious products. TFT modules, Arduino TFT display, Raspberry Pi TFT display, Control Board.
Touch panels have been a much better human machine interface which become widely popular. Orient Display has been investing heavy for capacitive touch screen sensor manufacturing capacity. Now, Orient Display factory is No.1 in the world for automotive capacitive touch screen which took around 18% market share in the world automotive market.
Based on the above three types of touch panel technology, Orient Display can also add different kinds of features like different material glove touch, water environment touch, salt water environment touch, hover touch, 3D (force) touch, haptic touch etc. Orient Display can also provide from very low cost fixed area button touch, single (one) finger touch, double finger (one finger+ one gesture) touch, 5 finger touch, 10 points touch or even 16 points touch
Considering the different shapes of the touch surface requirements, Orient Display can produce different shapes of 2D touch panel (rectangle, round, octagon etc.), or 2.5D touch screen (round edge and flat surface) or 3D (totally curved surface) touch panel.
Considering different strength requirements, Orient Display can provide low cost chemical tampered soda-lime glass, Asahi (AGC) Dragontrail glass and Corning high end Gorilla glass. With different thickness requirement, Orient Display can provide the thinnest 0.5mm OGS touch panel, to thickness more than 10mm tempered glass to prevent vandalizing, or different kinds of plastic touch panel to provide glass piece free (fear) or flexible substrates need.
Of course, Orient Display can also offer traditional RTP (Resistive Touch Panel) of 4-wire, 5-wire, 8-wire through our partners, which Orient Display can do integration to resistive touch screen displays.
If you can’t find a very suitable TFT LCD Display in our product line, don’t be discouraged. The products listed on our website is only small part of standard products. We have thousands of standard products in our database, feel free to contact our engineers for details.
If you like to have a special display, Orient Display is always flexible to do partial custom solution. For example, to modify the FPC to different length or shape, or use as fewer pinouts as possible, or design an ultra-bright LCD display, or a cover lens with your company logo on it, or design an extreme low power or low cost TFT display etc. our engineers will help you to achieve the goals. The NER cost can start from hundreds of dollars to Thousands. In rare case, it can be tens of thousands of dollars.
A fully custom TFT LCD panel can have very high NRE cost. Depending on the size of the display, quantity and which generation production line to be used. The tooling cost can start from $100,000 to over $1M.
In the past decade, LCD monitors have replaced CRT screens for all but the most specialist applications. Although liquid crystal displays boast perfect
In these videos, the SPI (GPIO) bus is referred to being the bottleneck. SPI based displays update over a serial data bus, transmitting one bit per clock cycle on the bus. A 320x240x16bpp display hence requires a SPI bus clock rate of 73.728MHz to achieve a full 60fps refresh frequency. Not many SPI LCD controllers can communicate this fast in practice, but are constrained to e.g. a 16-50MHz SPI bus clock speed, capping the maximum update rate significantly. Can we do anything about this?
The fbcp-ili9341 project started out as a display driver for the Adafruit 2.8" 320x240 TFT w/ Touch screen for Raspberry Pi display that utilizes the ILI9341 controller. On that display, fbcp-ili9341 can achieve a 60fps update rate, depending on the content that is being displayed. Check out these videos for examples of the driver in action:
Given that the SPI bus can be so constrained on bandwidth, how come fbcp-ili9341 seems to be able to update at up to 60fps? The way this is achieved is by what could be called adaptive display stream updates. Instead of uploading each pixel at each display refresh cycle, only the actually changed pixels on screen are submitted to the display. This is doable because the ILI9341 controller, as many other popular controllers, have communication interface functions that allow specifying partial screen updates, down to subrectangles or even individual pixel levels. This allows beating the bandwidth limit: for example in Quake, even though it is a fast pacing game, on average only about 46% of all pixels on screen change each rendered frame. Some parts, such as the UI stay practically constant across multiple frames.
A hybrid of both Polled Mode SPI and DMA based transfers are utilized. Long sequential transfer bursts are performed using DMA, and when DMA would have too much latency, Polled Mode SPI is applied instead.
Undocumented BCM2835 features are used to squeeze out maximum bandwidth: SPI CDIV is driven at even numbers (and not just powers of two), and the SPI DLEN register is forced in non-DMA mode to avoid an idle 9th clock cycle for each transferred byte.
Good old interlacing is added into the mix: if the amount of pixels that needs updating is detected to be too much that the SPI bus cannot handle it, the driver adaptively resorts to doing an interlaced update, uploading even and odd scanlines at subsequent frames. Once the number of pending pixels to write returns to manageable amounts, progressive updating is resumed. This effectively doubles the maximum display update rate. (If you do not like the visual appearance that interlacing causes, it is easy to disable this by uncommenting the line #define NO_INTERLACING in file config.h)
A number of other micro-optimization techniques are used, such as batch updating rectangular spans of pixels, merging disjoint-but-close spans of pixels on the same scanline, and latching Column and Page End Addresses to bottom-right corner of the display to be able to cut CASET and PASET messages in mid-communication.
The result is that the SPI bus can be kept close to 100% saturation, ~94-97% usual, to maximize the utilization rate of the bus, while only transmitting practically the minimum number of bytes needed to describe each new frame.
This driver does not utilize the notro/fbtft framebuffer driver, so that needs to be disabled if active. That is, if your /boot/config.txt file has lines that look something like dtoverlay=pitft28r, ..., dtoverlay=waveshare32b, ... or dtoverlay=flexfb, ..., those should be removed.
If you have been running existing fbcp driver, make sure to remove that e.g. via a sudo pkill fbcp first (while running in SSH prompt or connected to a HDMI display), these two cannot run at the same time. If /etc/rc.local or /etc/init.d contains an entry to start up fbcp at boot, that directive should be deleted.
When using one of the displays that stack on top of the Pi that are already recognized by fbcp-ili9341, you don"t need to specify the GPIO pin assignments, but fbcp-ili9341 code already has those. Pass one of the following CMake directives for the hats:
-DPIRATE_AUDIO_ST7789_HAT=ON: If specified, targets a Pirate Audio 240x240, 1.3inch IPS LCD display HAT for Raspberry Pi with ST7789 display controller
-DKEDEI_V63_MPI3501=ON: If specified, targets a KeDei 3.5 inch SPI TFTLCD 480*320 16bit/18bit version 6.3 2018/4/9 display with MPI3501 display controller.
If you connected wires directly on the Pi instead of using a Hat from the above list, you will need to use the configuration directives below. In addition to specifying the display, you will also need to tell fbcp-ili9341 which GPIO pins you wired the connections to. To configure the display controller, pass one of:
-DILI9341=ON: If you are running on any other generic ILI9341 display, or on Waveshare32b display that is standalone and not on the FreeplayTech CM3/Zero device, pass this flag.
-DILI9340=ON: If you have a ILI9340 display, pass this directive. ILI9340 and ILI9341 chipsets are very similar, but ILI9340 doesn"t support all of the features on ILI9341 and they will be disabled or downgraded.
-DILI9486L=ON: If you have a ILI9486L display, pass this directive. Note that ILI9486 and ILI9486L are quite different, mutually incompatible controller chips, so be careful here identifying which one you have. (or just try both, should not break if you misidentified)
-DGPIO_TFT_DATA_CONTROL=number: Specifies/overrides which GPIO pin to use for the Data/Control (DC) line on the 4-wire SPI communication. This pin number is specified in BCM pin numbers. If you have a 3-wire SPI display that does not have a Data/Control line, set this value to -1, i.e. -DGPIO_TFT_DATA_CONTROL=-1 to tell fbcp-ili9341 to target 3-wire ("9-bit") SPI communication.
-DGPIO_TFT_RESET_PIN=number: Specifies/overrides which GPIO pin to use for the display Reset line. This pin number is specified in BCM pin numbers. If omitted, it is assumed that the display does not have a Reset pin, and is always on.
-DGPIO_TFT_BACKLIGHT=number: Specifies/overrides which GPIO pin to use for the display backlight line. This pin number is specified in BCM pin numbers. If omitted, it is assumed that the display does not have a GPIO-controlled backlight pin, and is always on. If setting this, also see the #define BACKLIGHT_CONTROL option in config.h.
fbcp-ili9341 always uses the hardware SPI0 port, so the MISO, MOSI, CLK and CE0 pins are always the same and cannot be changed. The MISO pin is actually not used (at the moment at least), so you can just skip connecting that one. If your display is a rogue one that ignores the chip enable line, you can omit connecting that as well, or might also be able to get away by connecting that to ground if you are hard pressed to simplify wiring (depending on the display).
To get good performance out of the displays, you will drive the displays far out above the rated speed specs (the rated specs yield about ~10fps depending on display). Due to this, you will need to explicitly configure the target speed you want to drive the display at, because due to manufacturing variances each display copy reaches a different maximum speed. There is no "default speed" that fbcp-ili9341 would use. Setting the speed is done via the option
-DSPI_BUS_CLOCK_DIVISOR=even_number: Sets the clock divisor number which along with the Pi core_freq= option in /boot/config.txt specifies the overall speed that the display SPI communication bus is driven at. SPI_frequency = core_freq/divisor. SPI_BUS_CLOCK_DIVISOR must be an even number. Default Pi 3B and Zero W core_freq is 400MHz, and generally a value -DSPI_BUS_CLOCK_DIVISOR=6 seems to be the best that a ILI9341 display can do. Try a larger value if the display shows corrupt output, or a smaller value to get higher bandwidth. See ili9341.h and waveshare35b.h for data points on tuning the maximum SPI performance. Safe initial value could be something like -DSPI_BUS_CLOCK_DIVISOR=30.
There are a couple of options to explicitly say which Pi board you want to target. These should be autodetected for you and generally are not needed, but e.g. if you are cross compiling for another Pi board from another system, or want to be explicit, you can try:
-DARMV8A=ON: Pass this option to specifically optimize for ARMv8-A instruction set (Pi 2B >= rev. 1.2, 3B, 3B+, CM3, CM3 lite, 4B, CM4, Pi400). If not present, autodetected.
-DBACKLIGHT_CONTROL=ON: If set, enables fbcp-ili9341 to control the display backlight in the given backlight pin. The display will go to sleep after a period of inactivity on the screen. If not, backlight is not touched.
-DDISPLAY_CROPPED_INSTEAD_OF_SCALING=ON: If set, and source video frame is larger than the SPI display video resolution, the source video is presented on the SPI display by cropping out parts of it in all directions, instead of scaling to fit.
-DDISPLAY_BREAK_ASPECT_RATIO_WHEN_SCALING=ON: When scaling source video to SPI display, scaling is performed by default following aspect ratio, adding letterboxes/pillarboxes as needed. If this is set, the stretching is performed breaking aspect ratio.
-DDISPLAY_SWAP_BGR=ON: If this option is passed, red and blue color channels are reversed (RGB<->BGR) swap. Some displays have an opposite color panel subpixel layout that the display controller does not automatically account for, so define this if blue and red are mixed up.
-DDISPLAY_INVERT_COLORS=ON: If this option is passed, pixel color value interpretation is reversed (white=0, black=31/63). Default: black=0, white=31/63. Pass this option if the display image looks like a color negative of the actual colors.
-DLOW_BATTERY_PIN=
Here is a full example of what to type to build and run, if you have the Adafruit 2.8" 320x240 TFT w/ Touch screen for Raspberry Pi with ILI9341 controller:
If the above does not work, try specifying -DSPI_BUS_CLOCK_DIVISOR=8 or =10 to make the display run a little slower, or try with -DUSE_DMA_TRANSFERS=OFF to troubleshoot if DMA might be the issue. If you are using another display controller than ILI9341, using a much higher value, like 30 or 40 may be needed. When changing CMake options, you can reissue the CMake directive line without having to reclone or recreate the build directory. However you may need to manually delete file CMakeCache.txt between changing options to avoid CMake remembering old settings.
If you want to do a full rebuild from scratch, you can rm -rf build to delete the build directory and recreate it for a clean rebuild from scratch. There is nothing special about the name or location of this directory, it is just my usual convention. You can also do the build in some other directory relative to the fbcp-ili9341 directory if you please.
If the size of the default HDMI output /dev/fb0 framebuffer differs from the resolution of the display, the source video size will by default be rescaled to fit to the size of the SPI display. fbcp-ili9341 will manage setting up this rescaling if needed, and it will be done by the GPU, so performance should not be impacted too much. However if the resolutions do not match, small text will probably appear illegible. The resizing will be done in aspect ratio preserving manner, so if the aspect ratios do not match, either horizontal or vertical black borders will appear on the display. If you do not use the HDMI output at all, it is probably best to configure the HDMI output to match the SPI display size so that rescaling will not be needed. This can be done by setting the following lines in /boot/config.txt:
These lines hint native applications about the default display mode, and let them render to the native resolution of the TFT display. This can however prevent the use of the HDMI connector, if the HDMI connected display does not support such a small resolution. As a compromise, if both HDMI and SPI displays want to be used at the same time, some other compatible resolution such as 640x480 can be used. See Raspberry Pi HDMI documentation for the available options to do this.
The refresh speed of the display is dictated by the clock speed of the SPI bus that the display is connected to. Due to the way the BCM2835 chip on Raspberry Pi works, there does not exist a simple speed=xxx Mhz option that could be set to define the bus speed. Instead, the SPI bus speed is derived from two separate parameters: the core frequency of the BCM2835 SoC in general (core_freq in /boot/config.txt), and the SPI peripheral CDIV (Clock DIVider) setting. Together, the resulting SPI bus speed is then calculated with the formula SPI_speed=core_freq/CDIV.
Adjust the CDIV value by passing the directive -DSPI_BUS_CLOCK_DIVISOR=number in CMake command line. Possible values are even numbers 2, 4, 6, 8, .... Note that since CDIV appears in the denominator in the formula for SPI_speed, smaller values result in higher bus speeds, whereas higher values make the display go slower. Initially when you don"t know how fast your display can run, try starting with a safe high setting, such as -DSPI_BUS_CLOCK_DIVISOR=30, and work your way to smaller numbers to find the maximum speed the display can cope with. See the table at the end of the README for specific observed maximum bus speeds for different displays.
Ensure turbo speed. This is critical for good frame rates. On the Raspberry Pi 3 Model B, the BCM2835 core runs by default at 400MHz (resulting in 400/CDIV MHz SPI speed) if there is enough power provided to the Pi, and if the CPU temperature does not exceed thermal limits. If the CPU is idle, or voltage is low, the BCM2835 core will instead revert to non-turbo 250MHz state, resulting in 250/CDIV MHz SPI speed. This effect of turbo speed on performance is significant, since 400MHz vs non-turbo 250MHz comes out to +60% of more bandwidth. Getting 60fps in Quake, Sonic or Tyrian often requires this turbo frequency, but e.g. NES and C64 emulated games can often reach 60fps even with the stock 250MHz. If for some reason under-voltage protection is kicking in even when enough power should be fed, you can force-enable turbo when low voltage is present by setting the value avoid_warnings=2 in the file /boot/config.txt.
Perhaps a bit counterintuitively, underclock the core. Setting a smaller core frequency than the default turbo 400MHz can enable using a smaller clock divider to get a higher resulting SPI bus speed. For example, if with default core_freq=400 SPI CDIV=8 works (resulting in SPI bus speed 400MHz/8=50MHz), but CDIV=6 does not (400MHz/6=66.67MHz was too much), you can try lowering core_freq=360 and set CDIV=6 to get an effective SPI bus speed of 360MHz/6=60MHz, a middle ground between the two that might perhaps work. Balancing core_freq= and CDIV options allows one to find the maximum SPI bus speed up to the last few kHz that the display controller can tolerate. One can also try the opposite direction and overclock, but that does then of course have all the issues that come along when overclocking. Underclocking does have the drawback that it makes the Pi run slower overall, so this is certainly a tradeoff.
On the other hand, it is desirable to control how much CPU time fbcp-ili9341 is allowed to use. The default build settings are tuned to maximize the display refresh rate at the expense of power consumption on Pi 3B. On Pi Zero, the opposite is done, i.e. by default the driver optimizes for battery saving instead of maximal display update speed. The following options can be controlled to balance between these two:
The main option to control CPU usage vs performance aspect is the option #define ALL_TASKS_SHOULD_DMA in config.h. Enabling this option will greatly reduce CPU usage. If this option is disabled, SPI bus utilization is maximized but CPU usage can be up to 80%-120%. When this option is enabled, CPU usage is generally up to around 15%-30%. Maximal CPU usage occurs when watching a video, or playing a fast moving game. If nothing is changing on the screen, CPU consumption of the driver should go down very close to 0-5%. By default #define ALL_TASKS_SHOULD_DMA is enabled for Pi Zero, but disabled for Pi 3B.
The CMake option -DUSE_DMA_TRANSFERS=ON should always be enabled for good low CPU usage. If DMA transfers are disabled, the driver will run in Polled SPI mode, which generally utilizes a full dedicated single core of CPU time. If DMA transfers are causing issues, try adjusting the DMA send and receive channels to use for SPI communication with -DDMA_TX_CHANNEL=
The statistics overlay prints out quite detailed information about execution state. Disabling the overlay with -DSTATISTICS=0 option to CMake improves performance and reduces CPU usage. If you want to keep printing statistics, you can try increasing the interval with the #define STATISTICS_REFRESH_INTERVAL
There are a number of #define SAVE_BATTERY_BY_x options in config.h, which all default to be