Fixed data write bug, implement rotation properly.

This commit is contained in:
imi415 2021-06-22 01:24:52 +08:00
parent 4df50bb676
commit b0be98b771
Signed by: imi415
GPG Key ID: 17F01E106F9F5E0A
2 changed files with 18 additions and 4 deletions

View File

@ -86,12 +86,12 @@ st7789_ret_t _st7789_window(st7789_lcd_t *lcd, uint16_t x_start, uint16_t x_end,
y_offset = PANEL_X_OFFSET;
break;
case ST7789_DIR_180:
x_offset = 0;
y_offset = 80;
x_offset = 240 - (PANEL_X_OFFSET + PANEL_X_WIDTH);
y_offset = 320 - (PANEL_Y_OFFSET + PANEL_Y_WIDTH);
break;
case ST7789_DIR_270:
x_offset = 80;
y_offset = 0;
x_offset = 320 - (PANEL_Y_OFFSET + PANEL_Y_WIDTH);
y_offset = 240 - (PANEL_X_OFFSET + PANEL_X_WIDTH);
break;
default:
x_offset = 0;
@ -130,6 +130,7 @@ st7789_ret_t _st7789_reset(st7789_lcd_t *lcd) {
}
st7789_ret_t st7789_lcd_init(st7789_lcd_t *lcd) {
if(_st7789_reset(lcd) != ST7789_OK) return ST7789_ERROR;
if(_st7789_init_seq(lcd) != ST7789_OK) return ST7789_ERROR;
if(st7789_lcd_config(lcd, &lcd->config) != ST7789_OK) return ST7789_ERROR;
if(st7789_lcd_sleep(lcd, 0) != ST7789_OK) return ST7789_ERROR;
@ -164,6 +165,11 @@ st7789_ret_t st7789_lcd_load(st7789_lcd_t *lcd, uint8_t *data, uint16_t x_start,
return ST7789_ERROR;
}
uint8_t command = 0x2C; // Memory Write
if(lcd->cb.write_cmd_cb(lcd->user_data, &command, 0x01) != ST7789_OK) {
return ST7789_ERROR;
}
// Write pixel data
if(lcd->cb.write_data_cb(lcd->user_data, data, data_len) != ST7789_OK) {
return ST7789_ERROR;

View File

@ -44,18 +44,24 @@ typedef struct {
#ifdef ST7789_PANEL_ZJY_240
#define ST7789_PANEL_SELECTION st7789_init_seq_zjy_240_240
#define PANEL_X_WIDTH 240
#define PANEL_Y_WIDTH 240
#define PANEL_X_OFFSET 0
#define PANEL_Y_OFFSET 0
#elif ST7789_PANEL_ZJY_135
#define ST7789_PANEL_SELECTION st7789_init_seq_zjy_240_135
#define PANEL_X_WIDTH 240
#define PANEL_Y_WIDTH 135
#define PANEL_X_OFFSET 53
#define PANEL_Y_OFFSET 40
#elif ST7789_PANEL_ZJY_320
#define ST7789_PANEL_SELECTION st7789_init_seq_zjy_320_240
#define PANEL_X_WIDTH 240
#define PANEL_Y_WIDTH 320
#define PANEL_X_OFFSET 0
#define PANEL_Y_OFFSET 0
@ -63,6 +69,8 @@ typedef struct {
#warning "Panel not defined, using default."
#define ST7789_PANEL_SELECTION st7789_init_seq_zjy_240_240
#define PANEL_X_WIDTH 240
#define PANEL_Y_WIDTH 240
#define PANEL_X_OFFSET 0
#define PANEL_Y_OFFSET 0