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;
|
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;
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue