emWin display drivers

A display driver supports a particular family of display controllers and all displays which are connected to one or more of these controllers. The drivers can be configured by modifying their configuration files whereas the driver itself does not need to be modified. The configuration files contain all required information for the driver including how the hardware is accessed and how the controller(s) are connected to the display.

Run-time configurable drivers

Display driver Supported controllers Supported bits/pixel
GUIDRV_BitPlains emWin display driver supporting solutions without display controller. It manages separate ’bitplains’ for each color bit. Initially it has been developed to support a solution for an R32C/111 which drives a TFT display without display controller. It can be used for each solution which requires the color bits in separate plains. 1 - 8
GUIDRV_Dist emWin display driver supporting displays with multiple controllers. Depends on the actual display drivers.
GUIDRV_FlexColor Epson S1D19122
FocalTech FT1509
Himax HX8347, HX8352, HX8353, HX8325A
Ilitek ILI9320, ILI9325, ILI9328, ILI9340, ILI9342, ILI9481
LG Electronics LGDP4531, LGDP4551
Novatek NT39122
OriseTech SPFD5408, SPFD54124C, SPFD5414D
Renesas R61505, R61516, R61526, R61580
Sitronix ST7628, ST7637, ST7735
Solomon SSD1355, SSD1961, SSD1963, SSD2119
Syncoam SEPS525
16, 18
GUIDRV_IST3088 Integrated Solutions Technology IST3088, IST3257 4
GUIDRV_Lin emWin display driver supporting each display controller with linear addressable video memory with a direct interface. This means that the video RAM is directly addressable by the address lines of the CPU. The driver contains no controller specific code. So it can also be used for solutions without display controller which require a driver which only manages the video RAM. This driver supports nearly all built-in display controllers. 1, 2, 4, 8, 16, 24, 32
GUIDRV_S1D13748 Epson S1D13748 16
GUIDRV_S1D15G00 Epson S1D15G00 12
GUIDRV_SLin Epson S1D13700 (indirect interface only!)
Solomon SSD1848
Toshiba T6963
UltraChip UC1617
1, 2
GUIDRV_SPage Epson S1D15E05, S1D15E06, S1D15605, S1D15606, S1D15607, S1D15608, S1D15705,
   S1D15710, S1D15714, S1D15719, S1D15721
Integrated Solutions Technology IST3020
New Japan Radio Company NJU6676
Novatek NT7502, NT7534, NT7538, NT75451
Samsung S6B0719, S6B0713, S6B0724, S6B1713
Sino Wealth SH1101A
Sitronix ST7522, ST7565, ST7567, ST7591
Solomon SSD1805, SSD1303, SSD1815
Sunplus SPLC501C
UltraChip UC1601, UC1606, UC1608, UC1611, UC1701
1, 2, 4
GUIDRV_SSD1926 Solomon SSD1926 8

Compile-time configurable drivers

Display driver Supported controllers Supported bits/pixel
GUIDRV_CompactColor_16 Ampire FSA506
Epson S1D13742, S1D13743, S1D19122
FocalTech 1509
Himax HX8301, HX8312A, HX8325A, HX8340, HX8347, HX8352, HX8352B, HX8353
Hitachi HD66766, HD66772, HD66789
Ilitek ILI9161, ILI9220, ILI9221, ILI9320, ILI9325, ILI9326, ILI9328, ILI9342
LG Electronics LGDP4531, LGDP4551
MagnaChip D54E4PA7551
Novatek NT39122, NT7573
OriseTech SPFD5408, SPFD54124C, SPFD5414D, SPFD5420A
Renesas R61505, R61509, R61516, R61526, R61580, R63401
Samsung S6D0110A, S6D0117, S6D0129, S6D04H0
Sharp LCY-A06003, LR38825
Sitronix ST7628, ST7637, ST7687, ST7712, ST7735, ST7787
Solomon SSD1284, SSD1289, SSD1298, SSD1355, SSD1961, SSD1963, SSD2119
Toshiba JBT6K71
16
GUIDRV_Fujitsu_16 Fujitsu Jasmine (MB8J2020),
Lavender (MB8J2120)
1, 2, 4, 8, 16
GUIDRV_Page1bpp Epson S1D10605, S1D15605, S1D15705, S1D15710, S1D15714, S1D15721, S1D15E05,
   S1D15E06, SED1520, SED1560, SED1565, SED1566, SED1567, SED1568, SED1569, SED1575
Hitachi HD61202
IST IST3020
New Japan Radio Company NJU6676, NJU6679
Novatek NT7502, NT7534, NT7538, NT75451
Philips PCF8810, PCF8811, PCF8535, PCD8544
Samsung KS0108B, KS0713, KS0724, S6B0108B, S6B0713, S6B0719, S6B0724, S6B1713
Sino Wealth SH1101A
Sitronix ST7522, ST7565, ST7567
Solomon SSD1303, SSD1805, SSD1815, SSD1821
ST Microelectronics ST7548, STE2001, STE2002
Sunplus SPLC501C
UltraChip UC1601, UC1606, UC1608, UC1701
1
GUIDRV_07X1 Novatek NT7506, NT7508
Samsung KS0711, KS0741, S6B0711, S6B0741
Sitronix ST7541, ST7571
Solomon SSD1854
STMicroelectronics STE2010
Tomato TL0350A
2
GUIDRV_1611 Epson S1D15E05, S1D15E06, S1D15719
UltraChip UC1610
UltraChip UC1611
2
2
4
GUIDRV_6331 Samsung S6B33B0X, S6B33B1X, S6B33B2X 16
GUIDRV_7529 Sitronix ST7529 1, 4, 5


Note:
If you are looking for a display driver, which is not listed in the table above, please contact info@segger.com. Most display drivers for standard target hardware will usually be developed and sold without additional charge.
 

CPU / Display controller interface

Different display controllers can have different CPU interfaces. Basically there are 2
different interfaces:

  • Direct interface
  • Indirect interface

Wheras the direct interface accesses the video memory directly by the address bus of
the CPU, the indirect interface requires a more complex communication with the display
controller to get access to the video memory. This can be done by different kinds
of connections:

  • Parallel access
  • 4 pin SPI interface
  • 3 pin SPI interface
  • I2C bus interface

The following explains these interfaces and how to configure them. Note that not all
configuration macros are always required. For details about which macros are
required, refer to the specific display driver pages.

Direct interface

Some display controllers (especially those for displays with higher resolution) require
a direct address bus, which means they are connected to at least 14 address bits. In a
direct interface configuration, video memory is directly accessible by the CPU; the
address bus is connected to the display controller.
The only knowledge required when configuring a direct interface is information about
the address range (which will generate a CHIP-SELECT signal for the LCD controller)
and whether 8-, 16- or 32-bit accesses should be used (bus-width to the display controller).
In other words, you need to know the following:

  • Base address for video memory access
  • Base address for register access
  • Distance between adjacent video memory locations (usually 1/2/4-byte)
  • Distance between adjacent register locations (usually 1/2/4-byte)
  • Type of access (8/16/32-bit) for video memory
  • Type of access (8/16/32-bit) for registers

Typical block diagram


Indirect interface - Parallel bus

Most controllers for smaller displays use an indirect interface to connect to the CPU.
With an indirect interface, only one address bit (usually A0) is connected to the LCD
controller. Some of these controllers are very slow, so that the hardware designer
may decide to connect it to input/output (I/O) pins instead of the address bus.

Typical block diagram

8 (16) data bits, one address bit and 2 or 3 control lines are used to connect the CPU
and one LCD controller. Four macros inform the LCD driver how to access each controller
used. If the LCD controller(s) is connected directly to the address bus of the
CPU, configuration is simple and usually consists of no more than one line per macro.
If the LCD controller(s) is connected to I/O pins, the bus interface must be simulated,
which takes about 5-10 lines of program per macro (or a function call to a routine
which simulates the bus interface). The signal A0 is also called C/D (Command/
Data), D/I (Data/Instruction) or RS (Register select), depending on the display controller.

Example routines for connection to I/O pins

Examples can be found in the folder SampleLCD_X:

  • LCD_X_6800.c, port routines for the 6800 parallel interface.
  • LCD_X_8080.c, port routines for the 8080 parallel interface.

Indirect interface - 4 pin SPI

Using a 4 pin SPI interface is very similar to a parallel interface. To connect a LCD
display using 4 pin SPI interface the lines A0, CLK, DATA, and CS must be connected
to the CPU.

Typical block diagram

Example routines for connection to I/O pins

An example can be found in the folder SampleLCD_X:

  • LCD_X_SERIAL.c, port routines for a serial interface

Please note that this sample uses port pins for the communication. This works very
slow but on each CPU. This should be optimized by the customer by using the hardware
support of the CPU for this kind of communication.

Indirect interface - 3 pin SPI

To connect a LCD display using 4 pin SPI interface the lines CLK, DATA, and CS must
be connected to the CPU.

Typical block diagram 

Example routines for connection to I/O pins

This interface do not have a separate line for distinguish between data and commands
to be transmitted to the display controller. There is no standardized method to
manage this. Some controllers use an additional bit for distinguish between data and
command, other controllers work different.
Examples can be found in the folder SampleLCD_X:

  • LCD_X_Serial_3Pin.c, port routines for a 3 pin serial interface
  • LCD_X_Serial_3Wire.c, port routines for a 3 pin serial interface

Indirect interface - I2C bus

This kind of interface use only 2 lines and a standarized protocoll for the communication
with the display controller.

Typical block diagram

 

Example routines for connection to I/O pins

An example can be found in the folder SampleLCD_X:

  • LCD_X_I2CBUS.c, port routines for a I2C bus interface

Similar to the serial communication examples this example uses port lines for the
communication which works not very fast. If the CPU support this kind of communication
these routines should be optimized by using the hardware functions.