emWin driver
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 wheras 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.
| Driver | Supported controllers | Supported bits/pixel |
|---|---|---|
| GUIDRV_Lin | emWin 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 contoller which requide 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_SLin | emWin driver supporting Epson S1D13700 (indirect interface only!) Solomon SSD1848 UltraChip UC1617 | 1, 2 |
| GUIDRV_SSD1926 | emWin driver supporting Solomon SSD1926 | 8 |
| GUIDRV_BitPlains | emWin 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 require the color bits in separate plains. | 1 - 8 |
| GUIDRV_Page1bpp | emWin driver supporting Epson SED1520, SED1560, SED1565, SED1566, SED1567, SED1568, SED1569, SED1575, S1D15710, S1D10605, S1D15705, S1D15721, S1D15E06 Hitachi HD61202 New Japan Radio Company NJU6679 Novatec NT7502 Philips PCF8810, PCF8811, PCF8535, PCD8544 Samsung KS0713, KS0724, KS0108B, S6B1713, S6B0724, S6B0108B, S6B1713 Sitronix ST7565 Solomon SSD1815 Sunplus SPLC501C UltraChip UC1601, UC1606 | 1 |
| GUIDRV_1611 | emWin driver supporting Epson S1D15E05, S1D15E06, S1D15719 UltraChip UC1611 UltraChip UC1610 | 2 4 2 |
| GUIDRV_6331 | emWin driver supporting Samsung S6B33B0X, S6B33B1X, S6B33B2X | 16 |
| GUIDRV_CompactColor_16 | emWin driver supporting Epson S1D13743, S1D19122 Himax HX8301, HX8312A, HX8347, HX8340 Hitachi HD66766, HD66772, HD66789 Ilitek ILI9161, ILI9220, ILI9320, ILI9325 LG Electronics LGDP4531 MagnaChip D54E4PA7551 Novatek NT39122, NT7573 OriseTech SPFD5408, SPFD5420A, SPFD5414D Renesas R63401, R61509, R61516, R61505, R61580 Samsung S6D0110A, S6D0117, S6D0129 Sharp LR38825, LCY-A06003 Sitronix ST7712, ST7628, ST7637 Solomon SSD1289, SSD1298, SSD1355, SSD1963, SSD2119 Toshiba JBT6K71 | 16 |
| GUIDRV_7529 | emWin driver supporting Sitronix ST7529 | 1, 4, 5 |
| GUIDRV_Fujitsu_16 | emWin driver supporting Fujitsu Jasmine (MB8J2020), Lavender (MB8J2120) | 16 |
| GUIDRV_S1D15G00 | emWin driver supporting Epson S1D15G00 | 12 |
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.
Driver
Head office Germany
US office 
