Remarks

Il0373
Status Status badge: working
Source code GitHub
Datasheet(s) GitHub
NuGet package NuGet Gallery for Meadow.Foundation.Displays.ePaper

The IL0373 is a tri-color display controller for ePaper displays. Data is sent to the controller via SPI and supports partial screen updates.

The IL0373 is commonly paired with 1.54", 2.13" or 2.9" dual or tri-color ePaper displays of various resolutions.

Code Example

MicroGraphics graphics;

public override Task Initialize()
{
    Resolver.Log.Info("Initialize ...");

    var display = new Il0373(
        spiBus: Device.CreateSpiBus(),
        chipSelectPin: Device.Pins.D03,
        dcPin: Device.Pins.D02,
        resetPin: Device.Pins.D01,
        busyPin: Device.Pins.D00,
        width: 400,
        height: 300);

    graphics = new MicroGraphics(display);

    return Task.CompletedTask;
}

public override Task Run()
{
    //any color but black will show the ePaper alternate color 
    graphics.DrawRectangle(1, 1, 126, 32, Meadow.Foundation.Color.Black, false);

    graphics.CurrentFont = new Font12x16();
    graphics.DrawText(2, 2, "IL0373", Meadow.Foundation.Color.Black);
    graphics.DrawText(2, 30, "Meadow F7", Meadow.Foundation.Color.Black);

    graphics.Show();

    return Task.CompletedTask;
}

Sample project(s) available on GitHub

Wiring Example

To control a ILI0373 from Meadow, connect the following:

IL0373 Meadow Pin
BUSY D15
RST D14
DC D13
CS D12
CLK SCK
DIN MOSI
GND GND
VCC 3V3

If your display does not include any of the above pins, they can be omitted. Pass NULL into the constructor for the missing pin(s).

Characteristic Locus
Inheritance System.Object EPaperBase EPaperTriColorBase > Il0373 > Epd2in13b > Epd2in13b_V4 > Epd2in9b
Implements IGraphicsDisplay
Inherited Members EPaperTriColorBase.EnabledColor EPaperTriColorBase.DisabledColor EPaperTriColorBase.ColorMode EPaperTriColorBase.SupportedColorModes EPaperTriColorBase.imageBuffer EPaperTriColorBase.Width EPaperTriColorBase.Height EPaperTriColorBase.PixelBuffer EPaperTriColorBase.CreateBuffer(Int32, Int32) EPaperTriColorBase.Clear(Boolean) EPaperTriColorBase.Fill(Color, Boolean) EPaperTriColorBase.Fill(Int32, Int32, Int32, Int32, Color) EPaperTriColorBase.Clear(Boolean, Boolean) EPaperTriColorBase.DrawPixel(Int32, Int32, Boolean) EPaperTriColorBase.DrawBlackPixel(Int32, Int32, Boolean) EPaperTriColorBase.InvertPixel(Int32, Int32) EPaperTriColorBase.DrawColoredPixel(Int32, Int32, Boolean) EPaperTriColorBase.DrawPixel(Int32, Int32, Color) EPaperTriColorBase.WriteBuffer(Int32, Int32, IPixelBuffer) EPaperTriColorBase.SendCommand(EPaperTriColorBase.Command) EPaperBase.commandBuffer EPaperBase.dataCommandPort EPaperBase.resetPort EPaperBase.chipSelectPort EPaperBase.busyPort EPaperBase.spiPeripheral EPaperBase.DataState EPaperBase.CommandState EPaperBase.Write(Byte) EPaperBase.Reset() EPaperBase.DelayMs(Int32) EPaperBase.SendCommand(Byte) EPaperBase.SendData(Int32) EPaperBase.SendData(Byte) EPaperBase.SendData(Byte[]) EPaperBase.WaitUntilIdle()
Namespace Meadow.Foundation.Displays
Assembly EPaper.dll

Syntax

public class Il0373 : EPaperTriColorBase, IGraphicsDisplay

Constructors

Il0373(ISpiBus, IDigitalOutputPort, IDigitalOutputPort, IDigitalOutputPort, IDigitalInputPort, Int32, Int32)

Create a new Il0373 ePaper display object

Declaration
public Il0373(ISpiBus spiBus, IDigitalOutputPort chipSelectPort, IDigitalOutputPort dataCommandPort, IDigitalOutputPort resetPort, IDigitalInputPort busyPort, int width, int height)

Parameters

Type Name Description
ISpiBus spiBus

SPI bus connected to display

IDigitalOutputPort chipSelectPort

Chip select output port

IDigitalOutputPort dataCommandPort

Data command output port

IDigitalOutputPort resetPort

Reset output port

IDigitalInputPort busyPort

Busy input port

System.Int32 width

Width of display in pixels

System.Int32 height

Height of display in pixels

Il0373(ISpiBus, IPin, IPin, IPin, IPin, Int32, Int32)

Create a new IL0373 object

Declaration
public Il0373(ISpiBus spiBus, IPin chipSelectPin, IPin dcPin, IPin resetPin, IPin busyPin, int width, int height)

Parameters

Type Name Description
ISpiBus spiBus

SPI bus connected to display

IPin chipSelectPin

Chip select pin

IPin dcPin

Data command pin

IPin resetPin

Reset pin

IPin busyPin

Busy pin

System.Int32 width

Width of display in pixels

System.Int32 height

Height of display in pixels

Properties

IsBlackInverted

Is black inverted on this display

Declaration
protected override bool IsBlackInverted { get; }

Property Value

Type Description
System.Boolean

Overrides

IsColorInverted

Is color inverted on this display

Declaration
protected override bool IsColorInverted { get; }

Property Value

Type Description
System.Boolean

Overrides

Methods

ClearFrame()

Clears the SRAM on the display controller Doesn't update the display

Declaration
protected void ClearFrame()

DisplayFrame()

Display data from the display controller SRAM

Declaration
public void DisplayFrame()

Initialize()

Initialize the display

Declaration
protected override void Initialize()

Overrides

SetPartialWindow(Byte[], Byte[], Int32, Int32, Int32, Int32)

Set partial window for display updates

Declaration
protected void SetPartialWindow(byte[] bufferBlack, byte[] bufferColor, int x, int y, int width, int height)

Parameters

Type Name Description
System.Byte[] bufferBlack

The buffer with black pixel data

System.Byte[] bufferColor

The buffer with color pixel data

System.Int32 x

The x start position in pixels

System.Int32 y

The y stary position in pixels

System.Int32 width

The width to update in pixels

System.Int32 height

The height to update in pixels

SetPartialWindowBlack(Byte[], Int32, Int32, Int32, Int32)

Set partial window for display updates

Declaration
protected void SetPartialWindowBlack(byte[] bufferBlack, int x, int y, int width, int height)

Parameters

Type Name Description
System.Byte[] bufferBlack

The buffer with black pixel data

System.Int32 x

The x start position in pixels

System.Int32 y

The y stary position in pixels

System.Int32 width

The width to update in pixels

System.Int32 height

The height to update in pixels

SetPartialWindowColor(Byte[], Int32, Int32, Int32, Int32)

Set partial window for display updates

Declaration
protected void SetPartialWindowColor(byte[] bufferColor, int x, int y, int width, int height)

Parameters

Type Name Description
System.Byte[] bufferColor

The buffer with color pixel data

System.Int32 x

The x start position in pixels

System.Int32 y

The y stary position in pixels

System.Int32 width

The width to update in pixels

System.Int32 height

The height to update in pixels

Show()

Update the display from the offscreen buffer

Declaration
public override void Show()

Overrides

Show(Int32, Int32, Int32, Int32)

Update a region of the display from the offscreen buffer

Declaration
public override void Show(int left, int top, int right, int bottom)

Parameters

Type Name Description
System.Int32 left

Left bounds in pixels

System.Int32 top

Top bounds in pixels

System.Int32 right

Right bounds in pixels

System.Int32 bottom

Bottom bounds in pixels

Overrides

Sleep()

Set the display to sleep state

Declaration
protected virtual void Sleep()