Skip to main content

AN-004: MIPI DSI Display + Backlight Bring-up

Scope

Bring up an external MIPI DSI display from the SoM and drive its backlight via the on-module driver. Applies to AEN (2-lane DSI, FHD) and V2N / V2N-M1 (2 × 4-lane DSI, up to 1920 × 1200 @ 60 fps per port).

Table: Scope summary

ItemDetail
AudienceFirmware engineers integrating an LCD / OLED display into the SoM design.
PrerequisitesQS- guide completed; MIPI DSI display panel with a 40-pin FFC or similar; panel-specific init sequence.
OutcomeLVGL widgets demo running on the panel with the on-module backlight driver lit.
Time30 minutes (panel-specific init lookup is the long pole).
Sourceexamples/display/lvgl-widgets-demo/, examples/display/lvgl-music-player/ in alp-sdk.

Hardware Setup

Table: DSI support per family

SoM familyDSI interfaces + backlight
E1M-AEN1 × 2-lane DSI (DSI0), up to FHD. On-module backlight driver supporting up to 10 LEDs in series or 2P6S. BL_LED_A (A31) anode, BL_LED_K (B31) cathode, BL_PWM shared.
E1M-X V2N / V2N-M12 × 4-lane DSI (DSI0, DSI1), up to 1920 × 1200 @ 60 fps. Same backlight driver block, same control pins.

The backlight LED current is set by a feedback resistor R_FB:

ILED = 95 mV / RFB

For a 20 mA LED chain: R_FB = 95 mV / 20 mA = 4.75 Ω.

Software Walkthrough

west build -b <BOARD> examples/display/lvgl-widgets-demo
west flash

The example brings DSI0 up at the panel-native resolution, draws an LVGL widget grid, and ramps the backlight from 0 — 100 % via BL_PWM.

For a custom panel, supply the panel's init sequence to the SDK's <alp/display.h> API (vendor-provided DCS write list). The LVGL/GUI binding is in <alp/gui.h>; 2D-GPU-accelerated blits use <alp/gpu2d.h>.

Expected Output

[disp] DSI0 init: 4 lanes @ TBD Mbps
[disp] panel init: <panel name> -> OK
[disp] backlight: ramp 0 -> 100% in 1 s
[lvgl] frame 0
[lvgl] frame 60 (1 s elapsed, 60 fps)

Troubleshooting

  • Blank screen, backlight on: DSI init sequence mismatch. Print the panel's expected DCS command list and step through the SDK's send log.
  • Screen tearing: TE (tearing-effect) line not connected or driver running without sync.
  • Backlight not lighting: feedback resistor open / shorted; the on-module driver enters fault state. Check R_FB value and routing.
  • Image too dim: BL_PWM duty too low; the SDK defaults to 50 % at boot.

References

  • Examples: examples/display/lvgl-widgets-demo/, examples/display/lvgl-music-player/, examples/display/lvgl-benchmark/ in alp-sdk.
  • SDK API: <alp/display.h> (panel / DSI), <alp/gui.h> (LVGL binding), <alp/gpu2d.h> (2D GPU).
  • Silicon bring-up reg-checks: examples/aen/aen-dsi-regcheck/, examples/aen/aen-gpu2d-bench/ in alp-sdk.
  • Hardware Design Guides: HG-AEN-001 §5.4, HG-V2N-001 §6.5 (MIPI DSI + backlight design rules).
  • Datasheet DSI pin tables: §2.3 in each datasheet.

Revision History

Table: Revision History

RevisionChangesDate
0.1Initial draft.May 2026
0.2Updated SDK references to current layout: example paths moved to examples/display/ (lvgl-widgets-demo, lvgl-music-player, lvgl-benchmark); added <alp/display.h> / <alp/gui.h> / <alp/gpu2d.h> APIs and the aen-dsi-regcheck / aen-gpu2d-bench silicon reg-checks.June 2026
Questions about this page? Discuss in Community Forum