NXP LPCXpresso54628 (OM13098UL) - board certification review
The board is comprised of target LPC54628 device with an onboard, CMSIS-DAP / SEGGER® J-Link compatible debug probe. MCUXpresso configuration tools and extensive SDK drivers/examples are available for the board at mcuxpresso.nxp.com. The LPCXpresso54628 board is an Arm® Mbed™-Enabled platform for developing the Internet of Things with a free, open-source embedded operating system. In addition to standard LPCXpresso V3 features, this board includes a complete set of peripheral interfaces to enable developers to fully explore the capabilities of LPC546xx devices.
LPCXpresso54628 earned Standard LVGL board certification, which means the users can be sure that this board can be easily used with LVGL and they can expect decent performance and quality.
The LPCXpresso54628 board can be purchased directly from NXP or it’s distributors. See here.
- MCU LPC54628 ARM-Coretx-M4, 220 MHz
- RAM 200 kB internal, 16 MB SDRAM
- Flash 512 kB internal, 16 MB Quad-SPI flash
- GPU None
- Resolution 480x272
- Display size 4.3”
- Color depth 16 bit, RGB565
- Technology TN
- DPI 128 px/inch
- Touch pad Capacitive
- Brightness 350 cd/m2
- Interface RGB
- Full-size SD/MMC card slot
- High-speed USB
- Link2 debug probe with CMSIS-DAP and SEGGER J-Link protocol options
- UART and SPI port bridging from LPC546xx target to USB via the onboard debug probe
- Support for external debug probe
- High and full speed USB ports with micro A/B connector for host or device functionality
- 10/100Mbps Ethernet (RJ45 connector)
- Multiple Expansion options, including Arduino® UNO and PMod
- NXP MMA8652FCR1 accelerometer
- Knowles SPH0641LM4H digital microphone
- Stereo audio codec with line in/out
- Power supply USB micro (5V)
Frame rate (FPS)
The MCU’s 220 MHz clock speed and it’s ARM Cortex-M4 architecture are enough for a 480x272 display to create moderate UIs with animations, opacity, and some images. LPC54628 doesn’t have a GPU but it’s not a big issue for the attached mid-sized display.
The MCU is equipped with an LCD controller to drive display directly. The frame buffers can be located in the board’s external RAM from where the MCU automatically sends the current frame buffer to the display.
The LCD controller supports maximum 1024x768 resolution. To maintain high FPS on such a large resolution a GPU would be required, however simple graphics with only small animations should work well.
The board reached 19 FPS on the LVGL’s certification benchmark. In the video you can see that transformation of small images and scrolling the whole screen was quite smooth. However, the most performance-hungry part of the benchmark - the bars animated to the rhythm of the music - caused some drop in FPS.
The LPC54628 chip has plenty of internal RAM (220 kB) and external SDRAM (16 MB), but a smaller internal flash. The 512 kB internal flash can be a little bit tight for applications, 3rd party libraries (e.g. LVGL, lwip, FATFS etc), images and font assets.
Let’s see how these internal and external memories can be used in graphics applications.
As the display is driven directly by the MCU’s LCD controller (and there is no extra display controller in between) one or two frame buffers are needed to be located in the MCU’s RAM.
Only internal RAM
A 480x272x16 bit display needs 255 kB RAM. Unfortunately, it can’t be fit into the 220 kB internal RAM so the external RAM is needed to be utilized.
Frame buffer in external RAM
The large external RAM makes it possible to store 2 frame buffers and handle VSYNC (swap the frame buffers at the moment when the display is not being refreshed, no tearing will be visible). The draw buffers of LVGL still should be stored in internal RAM because:
- they are small and can be fit easily into internal RAM
- they are read/written many times per pixel so it’s important to keep memory access fast
Images and fonts can be stored in 5 different kind of memories:
- Internal flash: fast, non volatile but small. At least the fonts and the most frequently used images should be kept in the internal flash for performance reasons.
- External flash: slower, non volatile and middle sized. Suitable for larger images.
- SD card: the slowest but can have a huge size and assets can be easily changed by replacing the SD card
- External RAM: fast, volatile and middle sized. If there are performance issues due to the memory bandwidth it’s possible to load the assets from the SD card or external flash to this memory during initialization.
- Internal RAM: fastest, volatile, small. The most performance-critical assets (e.g. the images that are transformed) can be loaded here during initialization.
The display is built with TN technology, so viewing angles and color correctness are only average.
The DPI is 128 px/inch, which is quite good. The individual pixels are not visible from an average viewing distance.
LPCXpresso54628 is built with a capacitive touchpad, therefore it provides a smartphone-like experience, however, it doesn’t recognize pressure from pen or in when pressed with gloves.
LPCXpresso54628 is a development board for evaluation and is not designed to be added into an end-product. Although there are holes to mount the board and the display is attached in a stable way to the board.
For real life applications a secondary board might be required for sensors or other peripheries.
The schematic of the board is publicly available and it can be a good starting point for developing your custom board based on LPCXpresso54628.
You can start working with LPCXpresso54628 in many IDEs including MCUXpresso, Keil or IAR.
MBedOS also supports this board but at the time of writing support for some peripheries (LCD, USB ports, Quad-SPI flash, SD Card) are still under development.
The SDK of LPCXpresso54628 in MCUXpresso comes with plenty of ready to use examples and applications (including UI application with LVGL).
The board is equipped with programmer/debugger so all you need to do is connect the USB cable and hit the Run or Debug buttons. We have tested the board with MCUXpresso and the debug experiment was very smooth. The usual debug features of Eclipse were also working well.
GUI Guider - a free UI Editor from NXP based on LVGL - also support the LPCXpresso54628 board. You only need to download and install GUI Guider, select the LPCXpresso54628 board, create your UI and flush it to the board with a few clicks.
In summary, we can say that the LPCXpresso54628 has great support with many examples and decent performance. It’s easy to get started with development and make some experience. As all the design materials of this board is publicly available, designing a custom board with LPC54628, a display and external memory is easy.