Fixed data write bug, implement rotation properly.
This commit is contained in:
parent
4df50bb676
commit
b0be98b771
14
st7789_lcd.c
14
st7789_lcd.c
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
Loading…
Reference in New Issue