67 lines
1.4 KiB
Markdown
67 lines
1.4 KiB
Markdown
# ST7567 display driver
|
|
For esp-idf, same idea as the st7920 driver
|
|
|
|
For both SPI and I2C displays
|
|
|
|
## Usage
|
|
|
|
I2C version
|
|
|
|
```c
|
|
#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
|
|
|
|
```c
|
|
#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);
|
|
``` |