117 lines
3.3 KiB
C
117 lines
3.3 KiB
C
/**
|
|
* @file lv_st7789.c
|
|
*
|
|
*/
|
|
|
|
/*********************
|
|
* INCLUDES
|
|
*********************/
|
|
#include "lv_st7789.h"
|
|
|
|
#if LV_USE_ST7789
|
|
|
|
/*********************
|
|
* DEFINES
|
|
*********************/
|
|
|
|
#define CMD_FRMCTR1 0xB1
|
|
#define CMD_FRMCTR2 0xB2
|
|
#define CMD_FRMCTR3 0xB3
|
|
#define CMD_INVCTR 0xB4
|
|
#define CMD_DFUNCTR 0xB6
|
|
#define CMD_ETMOD 0xB7
|
|
#define CMD_PWCTR1 0xC0
|
|
#define CMD_PWCTR2 0xC1
|
|
#define CMD_PWCTR3 0xC2
|
|
#define CMD_PWCTR4 0xC3
|
|
#define CMD_PWCTR5 0xC4
|
|
#define CMD_VMCTR 0xC5
|
|
#define CMD_GMCTRP1 0xE0
|
|
#define CMD_GMCTRN1 0xE1
|
|
#define CMD_DOCA 0xE8
|
|
#define CMD_CSCON 0xF0
|
|
|
|
#define CMD_RAMCTRL 0xB0
|
|
#define CMD_PORCTRL 0xB2 /* Porch control */
|
|
#define CMD_GCTRL 0xB7 /* Gate control */
|
|
#define CMD_VCOMS 0xBB /* VCOMS setting */
|
|
#define CMD_LCMCTRL 0xC0 /* LCM control */
|
|
#define CMD_VDVVRHEN 0xC2 /* VDV and VRH command enable */
|
|
#define CMD_VRHS 0xC3 /* VRH set */
|
|
#define CMD_VDVSET 0xC4 /* VDV setting */
|
|
#define CMD_FRCTR2 0xC6 /* FR Control 2 */
|
|
#define CMD_PWCTRL1 0xD0 /* Power control 1 */
|
|
#define CMD_PVGAMCTRL 0xE0 /* Positive Gamma Correction */
|
|
#define CMD_NVGAMCTRL 0xE1 /* Negative Gamma Correction */
|
|
|
|
/**********************
|
|
* TYPEDEFS
|
|
**********************/
|
|
|
|
/**********************
|
|
* STATIC PROTOTYPES
|
|
**********************/
|
|
|
|
/**********************
|
|
* STATIC CONSTANTS
|
|
**********************/
|
|
|
|
/* init commands based on LovyanGFX ST7789 driver */
|
|
static const uint8_t init_cmd_list[] = {
|
|
CMD_GCTRL, 1, 0x44, /* GCTRL -- panel dependent */
|
|
CMD_VCOMS, 1, 0x24, /* VCOMS -- panel dependent */
|
|
CMD_VRHS, 1, 0x13, /* VRHS - panel dependent */
|
|
CMD_PWCTRL1, 2, 0xa4, 0xa1,
|
|
CMD_RAMCTRL, 2, 0x00, 0xC0, /* controls mapping of RGB565 to RGB666 */
|
|
CMD_PVGAMCTRL, 14, 0xd0, 0x00, 0x02, 0x07, 0x0a, 0x28, 0x32, 0x44, 0x42, 0x06, 0x0e, 0x12, 0x14, 0x17,
|
|
CMD_NVGAMCTRL, 14, 0xd0, 0x00, 0x02, 0x07, 0x0a, 0x28, 0x31, 0x54, 0x47, 0x0e, 0x1c, 0x17, 0x1b, 0x1e,
|
|
LV_LCD_CMD_SET_GAMMA_CURVE, 1, 0x01,
|
|
LV_LCD_CMD_DELAY_MS, LV_LCD_CMD_EOF
|
|
};
|
|
|
|
/**********************
|
|
* STATIC VARIABLES
|
|
**********************/
|
|
|
|
/**********************
|
|
* MACROS
|
|
**********************/
|
|
|
|
/**********************
|
|
* GLOBAL FUNCTIONS
|
|
**********************/
|
|
|
|
lv_display_t * lv_st7789_create(uint32_t hor_res, uint32_t ver_res, lv_lcd_flag_t flags,
|
|
lv_st7789_send_cmd_cb_t send_cmd_cb, lv_st7789_send_color_cb_t send_color_cb)
|
|
{
|
|
lv_display_t * disp = lv_lcd_generic_mipi_create(hor_res, ver_res, flags, send_cmd_cb, send_color_cb);
|
|
lv_lcd_generic_mipi_send_cmd_list(disp, init_cmd_list);
|
|
return disp;
|
|
}
|
|
|
|
void lv_st7789_set_gap(lv_display_t * disp, uint16_t x, uint16_t y)
|
|
{
|
|
lv_lcd_generic_mipi_set_gap(disp, x, y);
|
|
}
|
|
|
|
void lv_st7789_set_invert(lv_display_t * disp, bool invert)
|
|
{
|
|
lv_lcd_generic_mipi_set_invert(disp, invert);
|
|
}
|
|
|
|
void lv_st7789_set_gamma_curve(lv_display_t * disp, uint8_t gamma)
|
|
{
|
|
lv_lcd_generic_mipi_set_gamma_curve(disp, gamma);
|
|
}
|
|
|
|
void lv_st7789_send_cmd_list(lv_display_t * disp, const uint8_t * cmd_list)
|
|
{
|
|
lv_lcd_generic_mipi_send_cmd_list(disp, cmd_list);
|
|
}
|
|
|
|
/**********************
|
|
* STATIC FUNCTIONS
|
|
**********************/
|
|
|
|
#endif /*LV_USE_ST7789*/
|