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; y_offset = PANEL_X_OFFSET;
break; break;
case ST7789_DIR_180: case ST7789_DIR_180:
x_offset = 0; x_offset = 240 - (PANEL_X_OFFSET + PANEL_X_WIDTH);
y_offset = 80; y_offset = 320 - (PANEL_Y_OFFSET + PANEL_Y_WIDTH);
break; break;
case ST7789_DIR_270: case ST7789_DIR_270:
x_offset = 80; x_offset = 320 - (PANEL_Y_OFFSET + PANEL_Y_WIDTH);
y_offset = 0; y_offset = 240 - (PANEL_X_OFFSET + PANEL_X_WIDTH);
break; break;
default: default:
x_offset = 0; 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) { 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_init_seq(lcd) != ST7789_OK) return ST7789_ERROR;
if(st7789_lcd_config(lcd, &lcd->config) != 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; 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; 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 // Write pixel data
if(lcd->cb.write_data_cb(lcd->user_data, data, data_len) != ST7789_OK) { if(lcd->cb.write_data_cb(lcd->user_data, data, data_len) != ST7789_OK) {
return ST7789_ERROR; return ST7789_ERROR;

View File

@ -44,18 +44,24 @@ typedef struct {
#ifdef ST7789_PANEL_ZJY_240 #ifdef ST7789_PANEL_ZJY_240
#define ST7789_PANEL_SELECTION st7789_init_seq_zjy_240_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_X_OFFSET 0
#define PANEL_Y_OFFSET 0 #define PANEL_Y_OFFSET 0
#elif ST7789_PANEL_ZJY_135 #elif ST7789_PANEL_ZJY_135
#define ST7789_PANEL_SELECTION st7789_init_seq_zjy_240_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_X_OFFSET 53
#define PANEL_Y_OFFSET 40 #define PANEL_Y_OFFSET 40
#elif ST7789_PANEL_ZJY_320 #elif ST7789_PANEL_ZJY_320
#define ST7789_PANEL_SELECTION st7789_init_seq_zjy_320_240 #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_X_OFFSET 0
#define PANEL_Y_OFFSET 0 #define PANEL_Y_OFFSET 0
@ -63,6 +69,8 @@ typedef struct {
#warning "Panel not defined, using default." #warning "Panel not defined, using default."
#define ST7789_PANEL_SELECTION st7789_init_seq_zjy_240_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_X_OFFSET 0
#define PANEL_Y_OFFSET 0 #define PANEL_Y_OFFSET 0