EA LPC4088 Display Module
The mbed-enabled LPC4088 Display Module from Embedded Artists lets you get up-and-running immediately with your graphical user interface application. It is ready for integration!
Overview¶
The heart of the design is NXP's Cortex-M4F based LPC4088 microcontroller running at 120 MHz. The LPC4088 Display Module is packed with features and is suitable for a wide range of applications that requires advanced communication and high quality graphic displays.
The module is perfect for prototyping and proof-of-concept projects as well as for integration into products. A comprehensive and professional software platform has been created for the LPC4088 Display Module; Save time, cost and reduce risk!
For more information, see Embedded Artists' Display Modules page. There are different display options for the module.
Features¶
- NXP's Cortex-M4F LPC4088 microcontroller, running at up to 120 MHz
- Multiple display options
- 5 inch TFT with 800x480 pixels resolution and resistive touch panel
- 4.3 inch TFT with 480x272 pixels resolution and resistive touch panel
- 4.3 inch TFT with 480x272 pixels resolution and projected capacitive touch panel (5-point multitouch)
- Program + Data Flash
- 512 KB on-chip + 16 MB QSPI (perfect for storing pictures and graphical elements)
- Data Memory
- 32 MB SDRAM (x32 bit databus for high bandwidth access) + 96 KB on-chip SRAM + 4032 B on-chip E2PROM
- Dimensions: 122 x 99 mm
- Power: External 5V DC supply, or via micro-B USB HDK connector
- Connectors / Interfaces
- 100/10Mbps Ethernet, RJ45 connector and unique MAC address
- USB Host/Device interface connector (USB A/USB mini-B)
- mbed HDK debug interface connector (USB micro-B)
- uSD/transflash memory card interface connector
- XBeeTM compatible connector for RF module add-on (20 pos connector)
- Very simple expansion for custom specific I/O via 46 pos, 100 mil pitch pin header (second USB interface, UART, I2C, SPI, ADC, DAC, CAN, GPIO, timers, etc.)
- Debug
- mbed-enabled via on-board HDK (CMSIS-DAP interface, USB drag-n-drop, Virtual COM port)
- 10 position SWD/JTAG connector (ARM standard debug connector)
- 6 position SWD Tag-Connect™ connector
- Other
- Proper ESD protection on communication interfaces
- CE certified (EMC, EMI, ESD)
- Wide temperature range (-20 to +70 degrees Celsius, limited by LCD)
- ISO 9001:2008 / ISO 14001:2004 produced
- Compensated for carbon dioxide emission during production and shipping
- Ready for integration!
Pinning¶
Getting Started¶
For a detailed getting started tour, please see the documentation for the LPC4088 QuickStart Board documentation. All relevant steps are the same. LPC4088 QuickStart Board Getting Started Tour
Other guides:
Create your own menu | (wiki) |
Working with emWin | (wiki) |
Working with TouchGFX | Coming soon |
Software¶
The software bundle that is provided to give you a flying start is based on the MBED framework. As the MBED framework is constantly evolving it happens that it from time to time is broken. To work around this and to make it easier for you, the user, we have selected a number of components and tested them so that they work well together.
Why use a Software Bundle?¶
- It will give a Flying start
- Selected libraries have been tested to work together
- Modified standard libraries to enable features otherwise not exposed (or to fix bugs)
- Hide some hardware APIs behind a BIOS
How do I use the Software Bundle?¶
The easiest way to use any of the components is to open the online compiler and click on the New Program button. Select the LPC4088 Display Module as target and then select one of the available templates to get started.
If you prefer to setup everything yourself instead of using the templates then:
- Import the library into your project by clicking the Import button above
- Copy the dm_board_config.h.txt file into the root of your project and rename it to dm_board_config.h
- Modify the dm_board_config.h to match your requirements
- Create a main.cpp file like this:
main.cpp
#include "mbed.h" #include "DMBoard.h" void main() { DMBoard::BoardError err; DMBoard* board = &DMBoard::instance(); RtosLog* log = board->logger(); Display* disp = board->display(); do { err = board->init(); if (err != DMBoard::Ok) { log->printf("Failed to initialize the board, got error %d\r\n", err); break; } // Everything initialized ok, add your code here } while(false); if (err != DMBoard::Ok) { log->printf("\nTERMINATING\n"); mbed_die(); } }
What is in the Software Bundle?¶
The software is divided into a couple of libraries:
DMSupport | This is the main library |
DMBasicGUI | Addon containing: NXP SWIM GUI library Basic app framework Basic SlideShow framework |
DMemWin | Addon containing the porting layer for the emWin Graphical Library from Segger |
Scripts | Python scripts to help with some tasks |
DMSupport¶
This is the core of the software bundle as it holds the mbed code itself as well as the code to initialize and use all periperherals.
Import libraryDMSupport
A board support package for the LPC4088 Display Module.
The library contains the following libraries:
HttpServer | A library providing a basic webserver | (wiki) |
USBHost | A library with the USB host stack | (wiki) |
mbed-os | The offical mbed os 5 library | (Mbed OS 5) |
In addition to the libraries above DMSupport also includes:
BIOS | Hardware independent initialization of display and touch controller | (wiki) |
Display | Interface to the display | (wiki) |
Touch | Interface to the touch controller | (wiki) |
FileSystems | File systems for USBDevice, RAM, uSD cards and QSPI flash | (wiki) |
Memory | Drivers for internal and external EEPROMs, SDRAM and QSPI flash | (wiki) |
CRC | Access to the onchip checksum calculator | (wiki) |
Logging | RTOS compatible printf | (wiki) |
Registry | Persistant handling of key-value pairs | (wiki) |
DMBoard | Handles initialization of everything | (wiki) |
dm_board_config.h | Configuration of features | (wiki) |
Meas | Macros to control GPIO pins for time sensitive measurements | (wiki) |
DMBasicGUI¶
This is a basic graphical library to help you get something on the display. It includes the following features:
The Simple Window Interface Manager (SWIM) developed by NXP | (wiki) |
A app framework with buttons and a simple menu system | (wiki) |
Image decoding | (wiki) |
A slideshow engine | (wiki) |
DMemWin - emWin Graphical Library¶
This is one of the GUI libraries to help you create a better user interface on the display by giving you access to high level widgets rather than drawing each pixel yourself.
LPCWare describes emWin like this:
The high performance emWin embedded graphics library developed by SEGGER Microcontroller is now offered by NXP Semiconductors in library form for free commercial use with NXP microcontrollers.
Follow the link above to read more about what is available in the emWin library supplied by NXP.
To read more about emWin as well as see lots of examples on the Segger site.
Import libraryDMemWin
Support for the emWin GUI library from Segger.
Note
There are limitations on how the emWin library is allowed to be distributed or republished so it is not included in the DMemWin library. Import the DMemWin library into you project by clicking on the Import button above, and then read the readme.h file in the library for further instructions on how to download and install the emWin files.
Note
The emWin library comes with a GUI Builder to help you to create your user interface. To get the tool you have to install one of the Board Support Packages found here.
Performance¶
The performance of the MCI, USB Host MassStorage and QSPI file systems has been measured as well as the performance of decoding images stored on each of them. The result is available on the Performance wiki page.
Scripts¶
Here we present some python scripts to help with common tasks. All scripts are written and tested in 2.7.6 but should work in 2.x versions higher as well. The scripts are probably incompatible with 3.x and above.
Installing python is out-of-scope, but instructions can be found here.
Script | Prerequisites | Description |
---|---|---|
uv4reorganizer.py | N/A | When exporting from the online compiler to Keil uVision 4, the resulting project file adds all source files directly under the src node in the project tree view. This makes it very difficult to find your own files. Usage: python uv4Reorganizer.py yourproject.uvproj The result is a yourproject.uvproj.pyout file. Rename the generated file to yourproject.uvproj to replace the original project file before starting uVision for the first time. The new project will have a better grouping of files in the project tree view. |
img2c.py | N/A | This script scans the current folder for all *.png, *.bmp and *.raw files and creates c-style arrays for each file. Usage: python img2c.py The result is image_data.h and image_data.c ready to be included in your project. For examples of the output see basic_image_data.h and basic_image_data.c. |
Example Programs¶
Import programlpc4088_displaymodule_hello_world
Template for creating new programs for the LPC4088 Display Module
Import programlpc4088_displaymodule_empty_launcher
Example using the application launcher.
Import programlpc4088_displaymodule_everything
Example using the support package for LPC4088 DisplayModule
Import programlpc4088_displaymodule_benchmark
Program to benchmark the speed of the different file system options versus placing data directly into arrays.
Import programlpc4088_displaymodule_ew2015
Demo for Embedded World 2015.
Import programlpc4088_displaymodule_shipped_demo
The out-of-the-box demo application flashed on all display modules before they are shipped.
Import programlpc4088_displaymodule_fs_aid
The purpose of this application is to allow easy manipulation of the QSPI file system from a PC (**NOTE**: Application doesn't work with update to mbed OS 5 since USB Device support is currently not available for LPC4088)
Firmware¶
If you are experiencing problems, perhaps there is an update for the DAPLink firmware that may help. Visit LPC4088DM Updating Firmware to read about available updates and how to apply it.
Things to Note¶
These are the things to take note of regarding the display modules:
- When updating to mbed OS 5 some functionality is no longer fully working.
- USB is not officially supported for the LPC4088 in mbed OS 5. The USBHost library is still included in DMSupport, but should only be used for simple testing of USB host functionality. One thing to note is that USB Host and Ethernet/Network cannot be used simultaneously.
- USB Device is not supported at all.
- The HttpServer library is still included, but all functionality is no longer available.
- The current implementation of the USB Host stack is rather slow. It reaches about 82Kb/s read speeds and 65Kb/s write speeds. The uSD card is about 15 to 20 times faster. Read more about it on the Performance page.
- The MCIFileSystem used to read/write uSD cards has a limitation when writing to files. Read about it on the Using Filesystems wiki page which also shows a simple workaround.