Skip to main content

Meadow.Foundation.Displays.St7789

St7789
StatusStatus badge: working
Source codeGitHub
Datasheet(s)GitHub
NuGet packageNuGet Gallery for Meadow.Foundation.Displays.TftSpi

The ST7789 is a display controller used to drive color displays over SPI using 12, 16 or 18 bbp. These displays require a backlight. These are typically paired with high pixel density displays, the most common being a 1.5" 240x240 display.

ST7789 displays typically use SPI mode 3, but you may find variants that require different modes.

The Meadow.Foundation ST7789 driver currently only supports 16bpp RGB565.

Purchasing

You can get ST7789 displays from the following suppliers:

Code Example

MicroGraphics graphics;
St7789 display;

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

var spiBus = Device.CreateSpiBus();

display = new St7789(
spiBus: spiBus,
chipSelectPin: Device.Pins.A03,
dcPin: Device.Pins.A04,
resetPin: Device.Pins.A05,
width: 240, height: 240, colorMode: ColorMode.Format16bppRgb565);

display.Clear(Color.AliceBlue);
display.Show();

graphics = new MicroGraphics(display)
{
Rotation = RotationType._90Degrees,
IgnoreOutOfBoundsPixels = true
};

return base.Initialize();
}

public override Task Run()
{
graphics.Clear(true);

graphics.DrawRectangle(120, 0, 120, 220, Color.White, true);
graphics.DrawRectangle(0, 0, 120, 20, Color.Red, true);
graphics.DrawRectangle(0, 20, 120, 20, Color.Purple, true);
graphics.DrawRectangle(0, 40, 120, 20, Color.Blue, true);
graphics.DrawRectangle(0, 60, 120, 20, Color.Green, true);
graphics.DrawRectangle(0, 80, 120, 20, Color.Yellow, true);
graphics.DrawRectangle(0, 100, 120, 20, Color.Orange, true);

graphics.Show();

DisplayTest();

return base.Run();
}

Sample project(s) available on GitHub

Wiring Example

To wire a ST7789 to your Meadow board, connect the following:

ST7789Meadow Pin
GNDGND
VCC3V3
SCLSCK
SDAMOSI
RESETD00
DCD01

It should look like the following diagram:

Wiring a ST7789 to a Meadow F7

Class St7789

Represents a St7789 TFT color display

Assembly: TftSpi.dll
View Source
Declaration
public class St7789 : TftSpiBase, IPixelDisplay, IDisplay, ISpiPeripheral, IDisposable, IRotatableDisplay

Inheritance: System.Object -> Meadow.Foundation.Displays.TftSpiBase

Implements:
Meadow.Peripherals.Displays.IPixelDisplay, Meadow.Peripherals.Displays.IDisplay, Meadow.Hardware.ISpiPeripheral, System.IDisposable, Meadow.Peripherals.Displays.IRotatableDisplay

Properties

DefaultColorMode

The default display color mode

View Source
Declaration
public override ColorMode DefaultColorMode { get; }

SupportedColorModes

The color modes supported by the display

View Source
Declaration
public override ColorMode SupportedColorModes { get; }

DefaultSpiBusSpeed

SPI bus speed

View Source
Declaration
public override Frequency DefaultSpiBusSpeed { get; }

DefaultSpiBusMode

The SPI bus mode for the device

View Source
Declaration
public override SpiClockConfiguration.Mode DefaultSpiBusMode { get; }

Methods

Initialize()

Initialize the display

View Source
Declaration
protected override void Initialize()

SetAddressWindow(int, int, int, int)

Set address window for display updates

View Source
Declaration
protected override void SetAddressWindow(int x0, int y0, int x1, int y1)
Parameters
TypeNameDescription
System.Int32x0X start in pixels
System.Int32y0Y start in pixels
System.Int32x1X end in pixels
System.Int32y1Y end in pixels

SetRotation(RotationType)

Set the display rotation

View Source
Declaration
public void SetRotation(RotationType rotation)
Parameters
TypeNameDescription
Meadow.Peripherals.Displays.RotationTyperotationThe rotation value

Implements

  • Meadow.Peripherals.Displays.IPixelDisplay
  • Meadow.Peripherals.Displays.IDisplay
  • Meadow.Hardware.ISpiPeripheral
  • System.IDisposable
  • Meadow.Peripherals.Displays.IRotatableDisplay