Microchip Graphics Suite (MGS) ePaper Driver User Guide
Introduction
Microchip Graphics Suite (MGS) Harmony provides an Electronic Paper Display (EPD) driver framework that can be used to create and configure drivers for EDP modules. Refer to this guide for information on how to generate, integrate and use an EPD display driver for supported display interfaces and controller configurations.
Display Modules
MGS Harmony provides configurable drivers for the following EPD display modules:
| Display Part Number | Resolution (WxH) | Controller | Display and Vendor Information |
|---|---|---|---|
AMP E0352A01-AF | 240x416 | UC8253 | Skot.Fraundorfer@ampdisplay.com Brian.Nordby@ampdisplay.com |
| AMP AXE37A3AFS | 240x360 | UC8253 | |
| MIKROE E-Paper Bundle 2 | 122x250 | SSD1675 | MIKROE |
You are encouraged to refer to the EPD project examples using these displays.
Display Driver Configuration
The following diagram shows a typical MPLAB® Code Configurator (MCC) project graph for an MGS Harmony EPD project. Highlighted in red are the key MCC components needed to configure an EPD-based MGS Harmony project.

The LE EPD component generates the EPD display driver based on the selected display. To generate the driver for a specific display, first select the display vendor and then select the target display module.

Display Interface Configuration
The LE EPD component depends on the LE SPI 4-line, SPI driver and SPI peripheral library component for configuring and generating the 4-wire SPI interface to the display module.
Refer to the MCC project graph of the example projects for more information on how to configure these downstream components. The configuration features and options for these components may depend on the target Microchip device.
Use Direct Memory Access (DMA)
To use DMA for SPI transfers, select the SPI Driver Instance in MCC and make sure that Use DMA for Transmit and Receive is enabled.

SPI Speed
To set the SPI transfer speed, select the LE SPI 4-line component in MCC and set the SPI speed.

Pin Configuration
Make sure that the appropriate pins are also configured for the 4-wire SPI interface. The Custom Names must also be set as shown in the following table.
| PIN | Function | Custom Name |
|---|---|---|
| Reset | GPIO OUT (High) | GFX_DISP_INTF_PIN_RESET |
| nBusy | GPIO IN (Pull-up Enabled) | GFX_DISP_INTF_PIN_nBUSY |
| Data/Command Select | GPIO OUT (Low) | GFX_DISP_INTF_PIN_RSDC |
| Chip Select | GPIO OUT (High) | GFX_DISP_INTF_PIN_CS |
| SCK | SPI Clock | |
| SDA | SPI Data Out |
ePaper Refresh Modes
ePaper displays typically support one or more refresh modes. The two most important concepts are full refresh and partial refresh.
A full refresh redraws the entire display using a complete waveform sequence. It provides the cleanest image and helps reduce ghosting, but it is slower, may cause visible flashing and uses more energy. Use a full refresh during display initialization, major screen changes, navigation to a new screen, or when ghosting cleanup is needed.
A partial refresh updates only a selected area of the display, making it faster and more power-efficient for small changes such as numeric values, status indicators, battery icons, timestamps, sensor readings, selection highlights, or notifications. However, repeated partial updates can cause ghosting, so periodic full refreshes may be required. For best results, group frequently changing elements into small, well-defined update regions.
Full-Screen Redraw
Over time, repeated partial updates may cause artifacts around the updated area. To clear these artifacts, a full-screen redraw may be required. To trigger a full-screen redraw in the library, call the leRedrawAll(); function.
Switching Refresh Modes for AMP Displays
By default, the display driver for the AMP displays uses fast refresh mode for fast display updates and low power consumption. The trade-off is that ghosting will gradually appear after several updates.
To clear up the ghosting, a slow refresh must be used for the next update. Calling the following IOCTL function will temporarily set the next update to slow refresh, which should clear up the ghosting within the update area.
DRV_EPD_IOCTL(GFX_IOCTL_EPD_FAST_REFRESH, &arg);
Slow refresh can be combined with a full-screen redraw to clear up any ghosting in the entire screen area.
gfxIOCTLArg_Value arg = {.value.v_uint = 0};
DRV_EPD_IOCTL(GFX_IOCTL_EPD_FAST_REFRESH, &arg);
// Redraw the entire screen
leRedrawAll();