pimoroni-pico/drivers/st7567/st7567.hpp

65 wiersze
1.7 KiB
C++
Czysty Zwykły widok Historia

2022-09-29 09:21:14 +00:00
#pragma once
#include "hardware/spi.h"
#include "hardware/pwm.h"
2022-09-29 09:21:14 +00:00
#include "common/pimoroni_bus.hpp"
#include "libraries/pico_graphics/pico_graphics.hpp"
namespace pimoroni {
class ST7567 : public DisplayDriver {
//--------------------------------------------------
// Constants
//--------------------------------------------------
private:
2022-10-10 13:12:45 +00:00
static const uint8_t ROWS = 64;
static const uint8_t COLS = 128;
2022-09-29 09:21:14 +00:00
static const uint8_t PAGESIZE = 128;
//--------------------------------------------------
// Variables
//--------------------------------------------------
private:
2022-11-07 12:50:50 +00:00
spi_inst_t *spi = spi0;
2022-09-29 09:21:14 +00:00
uint32_t dma_channel;
// interface pins with our standard defaults where appropriate
uint cs;
uint dc;
uint sck;
uint mosi;
uint bl;
2022-10-31 13:44:23 +00:00
uint reset_pin=21;
2022-09-29 09:21:14 +00:00
2022-10-12 10:07:17 +00:00
uint32_t spi_baud = 10000000; //10Mhz
2022-09-29 09:21:14 +00:00
uint8_t offset_cols = 0;
uint8_t offset_rows = 0;
//--------------------------------------------------
// Constructors/Destructor
//--------------------------------------------------
public:
2022-10-12 12:10:12 +00:00
ST7567(uint16_t width, uint16_t height, SPIPins pins) :
2022-09-29 09:21:14 +00:00
DisplayDriver(width, height, ROTATE_0),
spi(pins.spi), cs(pins.cs), dc(pins.dc), sck(pins.sck), mosi(pins.mosi), bl(pins.bl) {
2022-11-07 12:50:50 +00:00
init();
}
2022-10-12 12:10:12 +00:00
2022-09-29 09:21:14 +00:00
//--------------------------------------------------
// Methods
//--------------------------------------------------
public:
void update(PicoGraphics *graphics) override;
void set_backlight(uint8_t brightness) override;
void reset();
2022-09-29 09:21:14 +00:00
private:
void init(bool auto_init_sequence = true);
void command(uint8_t command, size_t len = 0, const char *data = NULL);
};
}