2026-08-21 00:27:08 +02:00
2026-08-21 00:27:08 +02:00
2026-08-20 08:10:32 +02:00
2026-08-21 00:27:08 +02:00
2026-08-21 00:00:10 +02:00

ST7567 display driver

For esp-idf, same idea as the st7920 driver

For both SPI and I2C displays

Usage

I2C version

#include <st7567/st7567.h>

i2c_master_bus_config_t bus_cfg = {
    .i2c_port = I2C_NUM_0,
    .sda_io_num = GPIO_NUM_21,
    .scl_io_num = GPIO_NUM_22,
    .clk_source = I2C_CLK_SRC_DEFAULT,
    .glitch_ignore_cnt = 7,
    .flags.enable_internal_pullup = true,
};
i2c_master_bus_handle_t bus;
i2c_new_master_bus(&bus_cfg, &bus);

st7567_config_i2c_t cfg = {
    .i2c_bus = bus,
    .i2c_addr = ST7567_I2C_ADDR_DEFAULT, // 0x3F,
    .i2c_clock_speed_hz = 400000,
    .contrast = 0x38,  // good for generic modules at 3.3v
};

st7567_device_t dev;
st7567_init_i2c(&cfg, &dev);

st7567_draw_pixel(&dev, 10, 10);
st7567_update_screen(&dev);

SPI version

#include <st7567/st7567.h>

const spi_bus_config_t buscfg = {
	.mosi_io_num = GPIO_NUM_18,
	.sclk_io_num = GPIO_NUM_19,
	.miso_io_num = GPIO_NUM_20, // default c6 spi pins?
	.max_transfer_sz = 0,
	.quadhd_io_num = -1,
	.quadwp_io_num = -1,
};
spi_bus_initialize(SPI2_HOST, &buscfg, SPI_DMA_CH_AUTO);

const st7567_config_spi_t cfg = {
	.contrast = 0x35,
	.cs_gpio = GPIO_NUM_16,
	.dc_gpio = GPIO_NUM_17,
	.rst_gpio = GPIO_NUM_21,
	.spi_clock_speed_hz = 0,
	.spi_host = SPI2_HOST,
};

st7567_device_t dev;
st7567_init_spi(&cfg, &dev);

st7567_draw_pixel(&dev, 10, 10);
st7567_update_screen(&dev);
Description
No description provided
Readme 74 KiB
Languages
C 98.8%
CMake 1.2%