Первая итерация.
Базовая инициализация, и отрисовка прямоугольников
This commit is contained in:
83
Inc/DS_ST7789V.h
Normal file
83
Inc/DS_ST7789V.h
Normal file
@@ -0,0 +1,83 @@
|
||||
#ifndef DS_ST7789V_H
|
||||
#define DS_ST7789V_H
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#ifdef STM32G030xx
|
||||
#include "stm32g0xx_hal.h"
|
||||
#endif
|
||||
|
||||
#ifdef STM32G0B1xx
|
||||
#include "stm32g0xx_hal.h"
|
||||
#endif
|
||||
|
||||
#ifdef STM32F030xx
|
||||
#include "stm32f0xx_hal.h"
|
||||
#endif
|
||||
|
||||
/* Параметры дисплея */
|
||||
#define DS_ST7789V_WIDTH 240
|
||||
#define DS_ST7789V_HEIGHT 320
|
||||
|
||||
/* Основные команды контроллера ST7789V */
|
||||
#define ST7789V_CMD_NOP 0x00
|
||||
#define ST7789V_CMD_SWRESET 0x01
|
||||
#define ST7789V_CMD_SLPOUT 0x11
|
||||
#define ST7789V_CMD_INVOFF 0x20
|
||||
#define ST7789V_CMD_INVON 0x21
|
||||
#define ST7789V_CMD_DISPOFF 0x28
|
||||
#define ST7789V_CMD_DISPON 0x29
|
||||
#define ST7789V_CMD_CASET 0x2A
|
||||
#define ST7789V_CMD_RASET 0x2B
|
||||
#define ST7789V_CMD_RAMWR 0x2C
|
||||
#define ST7789V_CMD_MADCTL 0x36
|
||||
#define ST7789V_CMD_COLMOD 0x3A
|
||||
|
||||
/* Варианты ориентации экрана */
|
||||
typedef enum {
|
||||
DS_ST7789V_ORIENTATION_PORTRAIT = 0,
|
||||
DS_ST7789V_ORIENTATION_LANDSCAPE,
|
||||
DS_ST7789V_ORIENTATION_PORTRAIT_REV,
|
||||
DS_ST7789V_ORIENTATION_LANDSCAPE_REV
|
||||
} DS_ST7789V_Orientation_t;
|
||||
|
||||
/* Структура конфигурации пинов (аналогично DS_Button) */
|
||||
typedef struct {
|
||||
GPIO_TypeDef *Port;
|
||||
uint16_t Pin;
|
||||
} DS_ST7789V_Pin_t;
|
||||
|
||||
/* Главная управляющая структура дисплея */
|
||||
typedef struct DS_ST7789V {
|
||||
SPI_HandleTypeDef *hspi; // Указатель на аппаратный SPI
|
||||
DS_ST7789V_Pin_t CS; // Пин выбора чипа
|
||||
DS_ST7789V_Pin_t DC; // Пин выбор Команда/Данные
|
||||
DS_ST7789V_Pin_t RES; // Пин аппаратного сброса
|
||||
uint16_t Width; // Текущая ширина с учетом поворота
|
||||
uint16_t Height; // Текущая высота с учетом поворота
|
||||
DS_ST7789V_Orientation_t Orientation; // Текущая ориентация
|
||||
} DS_ST7789V;
|
||||
|
||||
/**@brief Инициализация дескриптора дисплея и передача начальных команд
|
||||
@param lcd Указатель на структуру дисплея
|
||||
@param hspi Указатель на сгенерированный CubeMX интерфейс SPI*/
|
||||
void DS_ST7789V_Init(DS_ST7789V *lcd, SPI_HandleTypeDef *hspi,
|
||||
GPIO_TypeDef *cs_port, uint16_t cs_pin,
|
||||
GPIO_TypeDef *dc_port, uint16_t dc_pin,
|
||||
GPIO_TypeDef *res_port, uint16_t res_pin);
|
||||
|
||||
/**@brief Установка ориентации экрана*/
|
||||
void DS_ST7789V_SetOrientation(DS_ST7789V *lcd,
|
||||
DS_ST7789V_Orientation_t orientation);
|
||||
|
||||
/**@brief Заливка экрана или выделенной области цветом (RGB565)*/
|
||||
void DS_ST7789V_FillRect(DS_ST7789V *lcd, uint16_t x, uint16_t y, uint16_t w,
|
||||
uint16_t h, uint16_t color);
|
||||
|
||||
/**@brief Низкоуровневые функции отправки (могут использоваться для кастомных
|
||||
* оптимизаций)*/
|
||||
void DS_ST7789V_WriteCommand(DS_ST7789V *lcd, uint8_t cmd);
|
||||
|
||||
void DS_ST7789V_WriteData(DS_ST7789V *lcd, uint8_t *data, uint16_t size);
|
||||
|
||||
#endif // DS_ST7789V_H
|
||||
Reference in New Issue
Block a user