st7789

package
v0.15.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 13, 2021 License: BSD-3-Clause Imports: 6 Imported by: 0

Documentation

Overview

Package st7789 implements a driver for the ST7789 TFT displays, it comes in various screen sizes.

Datasheets: https://cdn-shop.adafruit.com/product-files/3787/3787_tft_QT154H2201__________20190228182902.pdf

http://www.newhavendisplay.com/appnotes/datasheets/LCDs/ST7789V.pdf

Index

Constants

View Source
const (
	NOP        = 0x00
	SWRESET    = 0x01
	RDDID      = 0x04
	RDDST      = 0x09
	SLPIN      = 0x10
	SLPOUT     = 0x11
	PTLON      = 0x12
	NORON      = 0x13
	INVOFF     = 0x20
	INVON      = 0x21
	DISPOFF    = 0x28
	DISPON     = 0x29
	CASET      = 0x2A
	RASET      = 0x2B
	RAMWR      = 0x2C
	RAMRD      = 0x2E
	PTLAR      = 0x30
	COLMOD     = 0x3A
	MADCTL     = 0x36
	MADCTL_MY  = 0x80
	MADCTL_MX  = 0x40
	MADCTL_MV  = 0x20
	MADCTL_ML  = 0x10
	MADCTL_RGB = 0x00
	MADCTL_BGR = 0x08
	MADCTL_MH  = 0x04
	RDID1      = 0xDA
	RDID2      = 0xDB
	RDID3      = 0xDC
	RDID4      = 0xDD
	FRMCTR1    = 0xB1
	RGBCTRL    = 0xB1
	FRMCTR2    = 0xB2
	PORCTRL    = 0xB2
	FRMCTR3    = 0xB3
	INVCTR     = 0xB4
	DISSET5    = 0xB6
	PWCTR1     = 0xC0
	PWCTR2     = 0xC1
	PWCTR3     = 0xC2
	PWCTR4     = 0xC3
	PWCTR5     = 0xC4
	VMCTR1     = 0xC5
	FRCTRL2    = 0xC6
	PWCTR6     = 0xFC
	GMCTRP1    = 0xE0
	GMCTRN1    = 0xE1
	GSCAN      = 0x45
	VSCRDEF    = 0x33
	VSCRSADD   = 0x37

	NO_ROTATION  Rotation = 0
	ROTATION_90  Rotation = 1 // 90 degrees clock-wise rotation
	ROTATION_180 Rotation = 2
	ROTATION_270 Rotation = 3

	// Allowable frame rate codes for FRCTRL2 (Identifier is in Hz)
	FRAMERATE_111 FrameRate = 0x01
	FRAMERATE_105 FrameRate = 0x02
	FRAMERATE_99  FrameRate = 0x03
	FRAMERATE_94  FrameRate = 0x04
	FRAMERATE_90  FrameRate = 0x05
	FRAMERATE_86  FrameRate = 0x06
	FRAMERATE_82  FrameRate = 0x07
	FRAMERATE_78  FrameRate = 0x08
	FRAMERATE_75  FrameRate = 0x09
	FRAMERATE_72  FrameRate = 0x0A
	FRAMERATE_69  FrameRate = 0x0B
	FRAMERATE_67  FrameRate = 0x0C
	FRAMERATE_64  FrameRate = 0x0D
	FRAMERATE_62  FrameRate = 0x0E
	FRAMERATE_60  FrameRate = 0x0F // 60 is default
	FRAMERATE_58  FrameRate = 0x10
	FRAMERATE_57  FrameRate = 0x11
	FRAMERATE_55  FrameRate = 0x12
	FRAMERATE_53  FrameRate = 0x13
	FRAMERATE_52  FrameRate = 0x14
	FRAMERATE_50  FrameRate = 0x15
	FRAMERATE_49  FrameRate = 0x16
	FRAMERATE_48  FrameRate = 0x17
	FRAMERATE_46  FrameRate = 0x18
	FRAMERATE_45  FrameRate = 0x19
	FRAMERATE_44  FrameRate = 0x1A
	FRAMERATE_43  FrameRate = 0x1B
	FRAMERATE_42  FrameRate = 0x1C
	FRAMERATE_41  FrameRate = 0x1D
	FRAMERATE_40  FrameRate = 0x1E
	FRAMERATE_39  FrameRate = 0x1F

	MAX_VSYNC_SCANLINES = 254
)

Registers

Variables

This section is empty.

Functions

func RGBATo565

func RGBATo565(c color.RGBA) uint16

RGBATo565 converts a color.RGBA to uint16 used in the display

Types

type Config

type Config struct {
	Width        int16
	Height       int16
	Rotation     Rotation
	RowOffset    int16
	ColumnOffset int16
	FrameRate    FrameRate
	VSyncLines   int16
}

Config is the configuration for the display

type Device

type Device struct {
	// contains filtered or unexported fields
}

Device wraps an SPI connection.

func New

func New(bus drivers.SPI, resetPin, dcPin, csPin, blPin machine.Pin) Device

New creates a new ST7789 connection. The SPI wire must already be configured.

func (*Device) Command

func (d *Device) Command(command uint8)

Command sends a command to the display.

func (*Device) Configure

func (d *Device) Configure(cfg Config)

Configure initializes the display with default configuration

func (*Device) Data

func (d *Device) Data(data uint8)

Data sends data to the display.

func (*Device) Display

func (d *Device) Display() error

Display does nothing, there's no buffer as it might be too big for some boards

func (*Device) DrawFastHLine

func (d *Device) DrawFastHLine(x0, x1, y int16, c color.RGBA)

DrawFastHLine draws a horizontal line faster than using SetPixel

func (*Device) DrawFastVLine

func (d *Device) DrawFastVLine(x, y0, y1 int16, c color.RGBA)

DrawFastVLine draws a vertical line faster than using SetPixel

func (*Device) EnableBacklight

func (d *Device) EnableBacklight(enable bool)

EnableBacklight enables or disables the backlight

func (*Device) FillRectangle

func (d *Device) FillRectangle(x, y, width, height int16, c color.RGBA) error

FillRectangle fills a rectangle at a given coordinates with a color

func (*Device) FillRectangleWithBuffer

func (d *Device) FillRectangleWithBuffer(x, y, width, height int16, buffer []color.RGBA) error

FillRectangleWithBuffer fills buffer with a rectangle at a given coordinates.

func (*Device) FillScreen

func (d *Device) FillScreen(c color.RGBA)

FillScreen fills the screen with a given color

func (*Device) GetHighestScanLine added in v0.14.1

func (d *Device) GetHighestScanLine() uint16

GetHighestScanLine calculates the last scanline id in the frame before VSYNC pause

func (*Device) GetLowestScanLine added in v0.14.1

func (d *Device) GetLowestScanLine() uint16

GetLowestScanLine calculate the first scanline id to appear after VSYNC pause

func (*Device) GetScanLine added in v0.14.1

func (d *Device) GetScanLine() uint16

GetScanLine reads the current scanline value from the display

func (*Device) InvertColors

func (d *Device) InvertColors(invert bool)

InvertColors inverts the colors of the screen

func (*Device) IsBGR

func (d *Device) IsBGR(bgr bool)

IsBGR changes the color mode (RGB/BGR)

func (*Device) Rx added in v0.14.1

func (d *Device) Rx(command uint8, data []byte)

Rx reads data from the display

func (*Device) SetPixel

func (d *Device) SetPixel(x int16, y int16, c color.RGBA)

SetPixel sets a pixel in the screen

func (*Device) SetRotation

func (d *Device) SetRotation(rotation Rotation)

SetRotation changes the rotation of the device (clock-wise)

func (*Device) SetScroll added in v0.15.2

func (d *Device) SetScroll(line int16)

SetScroll sets the vertical scroll address of the display.

func (*Device) SetScrollArea added in v0.15.2

func (d *Device) SetScrollArea(topFixedArea, bottomFixedArea int16)

SetScrollArea sets an area to scroll with fixed top and bottom parts of the display.

func (*Device) Size

func (d *Device) Size() (w, h int16)

Size returns the current size of the display.

func (*Device) StopScroll added in v0.15.2

func (d *Device) StopScroll()

StopScroll returns the display to its normal state.

func (*Device) Sync added in v0.14.1

func (d *Device) Sync()

Sync waits for the display to hit the next VSYNC pause

func (*Device) SyncToScanLine added in v0.14.1

func (d *Device) SyncToScanLine(scanline uint16)

SyncToScanLine waits for the display to hit a specific scanline

A scanline value of 0 will forward to the beginning of the next VSYNC, even if the display is currently in a VSYNC pause.

Syncline values appear to increment once for every two vertical lines on the display.

NOTE: Use GetHighestScanLine and GetLowestScanLine to obtain the highest and lowest useful values. Values are affected by front and back porch vsync settings (derived from VSyncLines configuration option).

func (*Device) Tx

func (d *Device) Tx(data []byte, isCommand bool)

Tx sends data to the display

type FrameRate added in v0.14.1

type FrameRate uint8

FrameRate controls the frame rate used by the display.

type Rotation

type Rotation uint8

Rotation controls the rotation used by the display.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL