1.4 KiB
1.4 KiB
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);