This commit is contained in:
2026-08-20 21:35:25 +02:00
parent cf66794a35
commit 1825a901fb
4 changed files with 18 additions and 23 deletions

View File

@@ -27,6 +27,18 @@
#define ST7567_CMD_STATIC_INDICATOR_OFF 0xAC
#define ST7567_CMD_NOP 0xE3
// Display dimensions
#define ST7567_WIDTH 128
#define ST7567_HEIGHT 64
#define ST7567_PAGES (ST7567_HEIGHT / 8)
typedef struct {
void* bus;
gpio_num_t dc_gpio;
uint8_t framebuffer[ST7567_WIDTH * ST7567_PAGES];
} st7567_device_t;
/**
* @brief Send a single command byte to the ST7567
*

View File

@@ -17,12 +17,6 @@ typedef struct {
uint8_t contrast; // 0-63, 0 = use a sane default (0x20)
} st7567_i2c_config_t;
// Handle for ST7567 device
typedef struct {
i2c_master_dev_handle_t i2c_dev;
uint8_t framebuffer[ST7567_WIDTH * ST7567_PAGES];
} st7567_device_t;
/**
* @brief Initialize ST7567 display
*

View File

@@ -5,11 +5,6 @@
#include "driver/spi_master.h"
#include "driver/gpio.h"
// Display dimensions
#define ST7567_WIDTH 128
#define ST7567_HEIGHT 64
#define ST7567_PAGES (ST7567_HEIGHT / 8)
// Configuration structure
typedef struct {
spi_host_device_t spi_host; // already-initialized SPI bus (spi_bus_initialize called by caller)
@@ -20,12 +15,6 @@ typedef struct {
uint8_t contrast; // 0-63, 0 = use a sane default (0x20)
} st7567_spi_config_t;
// Handle for ST7567 device
typedef struct {
spi_device_handle_t spi_dev;
gpio_num_t dc_gpio;
uint8_t framebuffer[ST7567_WIDTH * ST7567_PAGES];
} st7567_device_t;
/**
* @brief Initialize ST7567 display

View File

@@ -22,15 +22,15 @@ static esp_err_t st7567_write(const st7567_device_t *dev, uint8_t ctrl, const ui
buf[0] = ctrl;
memcpy(&buf[1], data, len);
return i2c_master_transmit(dev->i2c_dev, buf, len + 1, ST7567_I2C_TIMEOUT_MS);
return i2c_master_transmit(dev->bus, buf, len + 1, ST7567_I2C_TIMEOUT_MS);
}
esp_err_t st7567_send_cmd(const st7567_device_t *dev, const uint8_t cmd) {
return st7567_i2c_write(dev, ST7567_I2C_CTRL_CMD, &cmd, 1);
return st7567_write(dev, ST7567_I2C_CTRL_CMD, &cmd, 1);
}
esp_err_t st7567_send_data(const st7567_device_t *dev, const uint8_t *data, size_t len) {
return st7567_i2c_write(dev, ST7567_I2C_CTRL_DATA, data, len);
return st7567_write(dev, ST7567_I2C_CTRL_DATA, data, len);
}
@@ -95,16 +95,16 @@ static esp_err_t st7567_write(const st7567_device_t *dev, int dc_level, const ui
// blocking polling transmit: this driver is only ever called from one task
// (ui_task), so there's no need for the queued/async SPI API here
return spi_device_polling_transmit(dev->spi_dev, &t);
return spi_device_polling_transmit(dev->bus, &t);
}
esp_err_t st7567_send_cmd(const st7567_device_t *dev, const uint8_t cmd) {
return st7567_spi_write(dev, ST7567_DC_CMD, &cmd, 1);
return st7567_write(dev, ST7567_DC_CMD, &cmd, 1);
}
esp_err_t st7567_send_data(const st7567_device_t *dev, const uint8_t *data, size_t len) {
return st7567_spi_write(dev, ST7567_DC_DATA, data, len);
return st7567_write(dev, ST7567_DC_DATA, data, len);
}