BELK-AN-005: Interfacing BoraEVB to thin film electroluminescent display

From DAVE Developer's Wiki
Jump to: navigation, search
Info Box
Bora5-small.jpg Applies to Bora
Warning-icon.png This application note was validated against specific versions of the kit only. It may not work with other versions. Supported versions are listed in the History section. Warning-icon.png

History[edit | edit source]

Version Date BELK version Notes
1.0.0 08:40, 9 September 2015 (CEST) 2.2.0 (*) First release

(*) Please note that, even if BELK 2.2.0 is based on Vivado 2014.4, the design released along with this Application Note has been implemented with Vivado 2013.4.

Introduction[edit | edit source]

This application note shows how to interface BoraEVB to 5.7" thin film electroluminescent display Lumineq EL 320.240.36-HB. As staded on Lumineq web site, "Lumineq TFEL non-transparent displays are used in mining, marine, military, medical and many more demanding environments. TFEL displays are robust and reliable, and usually used in extreme environments, where traditional displays cannot cope with the conditions." These characteristics make these displays an ideal solution when is used is such environments.

This project is based on BELK 2.2.0. Reading of AN-BELK-004 is recommended since many concepts are shared by these two application notes.

For more information about Lumineq part, please refer to this link.

Physical interfacing[edit | edit source]

To interface the display a small adapter board is needed. On BoraEVB side it is connected to JP17 and JP23 headers. On display side it connects to LCD panel through a flat cable that is plugged onto JP3 header. At this link schematics are available for download.

Also the following changes need to be made on BoraEVB in order to provide LCD required power supplies (12V and 5V):

  • remove D12, D13, RP62, RP64
  • wire D1.1 to JP23.2
  • wire D1.1 to JP23.4
  • wire C164.1 to JP23.1
  • wire C164.1 to JP23.3


The following table shows the signals used to drive the display:

LCD Signal BORA SOM Signal
DISPLAY_DATA[0] IO_25_34
DISPLAY_DATA[1] IO_L18N_T2_34
DISPLAY_DATA[2] IO_L22N_T3_34
DISPLAY_DATA[3] IO_L22P_T3_34
PIX_CLK IO_L21N_T3_DQS_34
D_en IO_L12P_T1_MRCC_34
H_SYNC IO_L18P_T2_34
V_SYNC IO_L19N_T3_VREF_34

Block diagram and Vivado design[edit | edit source]

The following picture shows simplified block diagram of the design. In principle the structure of the design is the same of the one described in AN-BELK-004.

An-belk-005-01.jpg

The TFEL display is driven by a controller implemented in PL that fetches pixel data from frame buffer and periodically refreshes physical screen. The LCD controller system is composed of an AXI VDMA IP and a custom version of the LCD controller (derived from AN-BELK-004 LCD controller) itself. AXI VDMA and the LCD controller provides configuration registers that are mapped in the following address range:

  • AXI VDMA: 0x43000000 - 0x4300FFFF
  • Custom LCD Controller: 0x43C00000 - 0x43C0FFFF

The following picture shows the block diagram of the Vivado project:

An-belk-005-02.png

To implement frame buffer, a portion of main SDRAM is used. This area is allocated at runtime by linux frame buffer driver.

Every pixel on the display has 2 possible states, ON (light pixel) or OFF (dark pixel). In the frame buffer, each pixel is represented by 8 bits. A byte of value 0xFF represents an ON pixel, and all the other values (0xFE down to 0x00) represent an OFF pixel.

At this link the Vivado design is available for download. Please note that, even if this application note is based on BELK 2.2.0, this design has been implemented with Vivado 2013.4.

Two PL IOs, controlled by the linux driver, manage the power supplies of the display (5V and 12V from BoraEVB to Lumineq Display).

Enabling frame buffer driver in linux kernel[edit | edit source]

To enable frame buffer driver user need to:

  • get the pre-built binaries from this link.

Kernel and device tree can also be built with the following procedure:

  • update Bora kernel repository (as described here)
  • checkout bora-feat-lcd-support branch (using git checkout bora-feat-lcd-support command)
  • build the updated kernel source as usual

Put the binaries on the first (FAT32) partition of your BELK 2.2.0 SD card, overwriting the original one if needed. Please note that you need the following files:

  • boot.bin
  • bora.dtb
  • uImage
  • fpga.bin
  • uEnv.txt

Insert the SD card into BoraEVB and turn on the board.

During kernel bootstrap, the following messages are printed out on console, indicating framebuffer driver has been loaded succesfully:

[    0.600553] borafb_lum borafb_lum.0: fb0: Virtual frame buffer device, using 16384K of video memory @ phys 2d900000

You will also see two Tuxes on the top left corner of the LCD, indicating that this Linux system has two cores:

An-belk-005-03.jpg

Once the kernel has completed boot, frame buffer can be accessed from user space applications via /dev/fb0 device file (for more details please refer to https://www.kernel.org/doc/Documentation/fb/framebuffer.txt).

The following image shows a slideshow generated with feh image viewer on top of X Window System:

An-belk-005-04.jpg