Files

135 lines
3.2 KiB
C

/**
******************************************************************************
* @file ql_lcd.h
* @author Juson.zhang
* @version V1.0.0
* @date 2019/12/08
* @brief This file contains the lcd functions's declaration
******************************************************************************
*/
#ifndef _QUEC_LCD_H_
#define _QUEC_LCD_H_
#include "quec_cust_feature.h"
#include "panel_drv.h"
#ifdef __cplusplus
extern "C" {
#endif
typedef enum {
MCI_LCD_ID_MAIN,
MCI_LCD_ID_SUB,
}QUEC_MCI_LCD_ID_T;
typedef enum QUEC_SPI_LCD_CLK_ENUM {
QUEC_SPI_LCD_CLK_6_5M = 0,
QUEC_SPI_LCD_CLK_13M ,
QUEC_SPI_LCD_CLK_26M ,
QUEC_SPI_LCD_CLK_52M ,
QUEC_SPI_LCD_CLK_3_25M,
QUEC_SPI_LCD_CLK_1_625M,
QUEC_SPI_LCD_CLK_812_5k,
QUEC_SPI_CLK_LIMIT
}QUEC_SPI_LCD_CLK_E;
enum{
LCD_STATUS_POWEROFF = 0 ,
LCD_STATUS_POWERON = 1,
};
enum {
QUEC_LCD_CMD = 0,
QUEC_LCD_DATA,
QUEC_LCD_DELAY,
};
enum{
QUEC_SPI_FORMAT_RGB565 = 0,
QUEC_SPI_FORMAT_RGB666 = 1,
QUEC_SPI_FORMAT_RGB666_2_3 = 2,
QUEC_SPI_FORMAT_RGB888 = 3,
QUEC_SPI_FORMAT_RGB888_2_3 = 4,
QUEC_SPI_FORMAT_LIMIT
};
enum{
QUEC_SPI_EDGE_RISING = 0,
QUEC_SPI_EDGE_FALLING = 1,
QUEC_SPI_EDGE_LIMIT
};
enum{
QUEC_SPI_ENDIAN_LSB = 0,
QUEC_SPI_ENDIAN_MSB = 1,
QUEC_SPI_ENDIAN_LIMIT
};
enum{
QUEC_LCD_CAP_NORMALE = 0,
QUEC_LCD_CAP_FAKE = 1,
QUEC_LCD_CAP_POWERON = 2,
QUEC_LCD_CAP_NOTE = 4, /*has no te signal*/
QUEC_LCD_CAP_LIMIT
};
typedef struct quec_spi_lcd_write_struct {
unsigned char type; /* SPI_WRITE_CMD / SPI_WRITE_DATA / SPI_WRITE_DELAY */
unsigned char value;
unsigned char data_length; /* Only for SPI_WRITE_CMD */
}quec_spi_lcd_write_t;
typedef enum
{
LCD_SLEEP,
LCD_WAKE_UP,
} QUEC_LCD_SLEEP;
#define LCD_CMD_COL_ADDR_SET 0x2A
#define LCD_CMD_ROW_ADDR_SET 0x2B
#define LCD_CMD_FRAME_MEM_WR 0x2C
typedef struct quec_lcd_data_struct
{
quec_spi_lcd_write_t* init_para;
unsigned int init_para_len;
unsigned short width;
unsigned short height;
unsigned char lcd_cmd_col_set;
unsigned char lcd_cmd_row_set;
unsigned char lcd_cmd_mem_wr;
unsigned int te_signal;
unsigned int spi_wclk;//写时序的时钟
unsigned int spi_rclk;//读时序的时钟
unsigned int lcd_id;
unsigned short format;
unsigned short type;//rgb or 黑白屏
unsigned short sample_edge;
unsigned short endian;
unsigned short line_num; //4 or 3
unsigned short data_line; //1 or 2
unsigned char work_mode;
}quec_lcd_data_t;
int quec_lcd_init(quec_lcd_data_t *lcd_data);
unsigned int quec_lcd_read_id(void);
int quec_lcd_dinit(void);
int quec_lcd_write_sync(unsigned char *pbuffer, unsigned short start_x, unsigned short start_y, unsigned short end_x, unsigned short end_y);
int quec_lcd_clear_screen(unsigned short bg_color);
int quec_lcd_wakeup(unsigned int level);
int quec_lcd_display_on(void);
int quec_lcd_display_off(void);
int quec_spi_lcd_write_cmd(unsigned char cmd);
int quec_spi_lcd_write_data(unsigned char data);
int quec_lcd_updata_config(quec_lcd_data_t *lcd_data);
unsigned int quec_lcd_read_id(void);
#ifdef __cplusplus
} /*"C" */
#endif
#endif /* _QUEC_LCD_H_ */