Initial commit: TXW82x FPV v2.7.0.7-42229 SDK + project sources
This commit is contained in:
309
sdk/lib/bus/spi/lcd/ili9881c.c
Normal file
309
sdk/lib/bus/spi/lcd/ili9881c.c
Normal file
@@ -0,0 +1,309 @@
|
||||
#include "lib/lcd/lcd.h"
|
||||
|
||||
#if LCD_ILI9881C_EN
|
||||
|
||||
#define CMD(x) {LCD_CMD,x}
|
||||
#define DAT(x) {LCD_DAT,x}
|
||||
#define DLY(x) {DELAY_MS,x}
|
||||
#define END {LCD_TAB_END,LCD_TAB_END}
|
||||
|
||||
|
||||
const uint8_t ili9881c_register_init_tab[][2] = {
|
||||
CMD(0XFF),DAT(0X98),DAT(0X81),DAT(0X03),
|
||||
CMD(0X01),DAT(0X00),
|
||||
CMD(0X02),DAT(0X00),
|
||||
CMD(0X03),DAT(0X72),
|
||||
CMD(0X04),DAT(0X00),
|
||||
CMD(0X05),DAT(0X00),
|
||||
CMD(0X06),DAT(0X09),
|
||||
CMD(0X07),DAT(0X00),
|
||||
CMD(0X08),DAT(0X00),
|
||||
CMD(0X09),DAT(0X01),
|
||||
CMD(0X0A),DAT(0X00),
|
||||
CMD(0X0B),DAT(0X00),
|
||||
CMD(0X0C),DAT(0X01),
|
||||
CMD(0X0D),DAT(0X00),
|
||||
CMD(0X0E),DAT(0X00),
|
||||
CMD(0X0F),DAT(0X00),
|
||||
CMD(0X10),DAT(0X00),
|
||||
CMD(0X11),DAT(0X00),
|
||||
CMD(0X12),DAT(0X00),
|
||||
CMD(0X13),DAT(0X00),
|
||||
CMD(0X14),DAT(0X00),
|
||||
CMD(0X15),DAT(0X00),
|
||||
CMD(0X16),DAT(0X00),
|
||||
CMD(0X17),DAT(0X00),
|
||||
CMD(0X18),DAT(0X00),
|
||||
CMD(0X19),DAT(0X00),
|
||||
CMD(0X1A),DAT(0X00),
|
||||
CMD(0X1B),DAT(0X00),
|
||||
CMD(0X1C),DAT(0X00),
|
||||
CMD(0X1D),DAT(0X00),
|
||||
CMD(0X1E),DAT(0X40),
|
||||
CMD(0X1F),DAT(0X80),
|
||||
CMD(0X20),DAT(0X05),
|
||||
CMD(0X21),DAT(0X02),
|
||||
CMD(0X22),DAT(0X00),
|
||||
CMD(0X23),DAT(0X00),
|
||||
CMD(0X24),DAT(0X00),
|
||||
CMD(0X25),DAT(0X00),
|
||||
CMD(0X26),DAT(0X00),
|
||||
CMD(0X27),DAT(0X00),
|
||||
CMD(0X28),DAT(0X33),
|
||||
CMD(0X29),DAT(0X02),
|
||||
CMD(0X2A),DAT(0X00),
|
||||
CMD(0X2B),DAT(0X00),
|
||||
CMD(0X2C),DAT(0X00),
|
||||
CMD(0X2D),DAT(0X00),
|
||||
CMD(0X2E),DAT(0X00),
|
||||
CMD(0X2F),DAT(0X00),
|
||||
CMD(0X30),DAT(0X00),
|
||||
CMD(0X31),DAT(0X00),
|
||||
CMD(0X32),DAT(0X00),
|
||||
CMD(0X33),DAT(0X00),
|
||||
CMD(0X34),DAT(0X04),
|
||||
CMD(0X35),DAT(0X00),
|
||||
CMD(0X36),DAT(0X00),
|
||||
CMD(0X37),DAT(0X00),
|
||||
CMD(0X38),DAT(0X3c),
|
||||
CMD(0X39),DAT(0X00),
|
||||
CMD(0X3A),DAT(0X40),
|
||||
CMD(0X3B),DAT(0X40),
|
||||
CMD(0X3C),DAT(0X00),
|
||||
CMD(0X3D),DAT(0X00),
|
||||
CMD(0X3E),DAT(0X00),
|
||||
CMD(0X3F),DAT(0X00),
|
||||
CMD(0X40),DAT(0X00),
|
||||
CMD(0X41),DAT(0X00),
|
||||
CMD(0X42),DAT(0X00),
|
||||
CMD(0X43),DAT(0X00),
|
||||
CMD(0X44),DAT(0X00),
|
||||
|
||||
|
||||
CMD(0X50),DAT(0X01),
|
||||
CMD(0X51),DAT(0X23),
|
||||
CMD(0X52),DAT(0X45),
|
||||
CMD(0X53),DAT(0X67),
|
||||
CMD(0X54),DAT(0X89),
|
||||
CMD(0X55),DAT(0XAB),
|
||||
CMD(0X56),DAT(0X01),
|
||||
CMD(0X57),DAT(0X23),
|
||||
CMD(0X58),DAT(0X45),
|
||||
CMD(0X59),DAT(0X67),
|
||||
CMD(0X5A),DAT(0X89),
|
||||
CMD(0X5B),DAT(0XAB),
|
||||
CMD(0X5C),DAT(0XCD),
|
||||
CMD(0X5D),DAT(0XEF),
|
||||
|
||||
|
||||
CMD(0X5E),DAT(0X11),
|
||||
CMD(0X5F),DAT(0X01),
|
||||
CMD(0X60),DAT(0X00),
|
||||
CMD(0X61),DAT(0X15),
|
||||
CMD(0X62),DAT(0X14),
|
||||
CMD(0X63),DAT(0X0E),
|
||||
CMD(0X64),DAT(0X0F),
|
||||
CMD(0X65),DAT(0X0C),
|
||||
CMD(0X66),DAT(0X0D),
|
||||
CMD(0X67),DAT(0X06),
|
||||
CMD(0X68),DAT(0X02),
|
||||
CMD(0X69),DAT(0X07),
|
||||
CMD(0X6A),DAT(0X02),
|
||||
CMD(0X6B),DAT(0X02),
|
||||
CMD(0X6C),DAT(0X02),
|
||||
CMD(0X6D),DAT(0X02),
|
||||
CMD(0X6E),DAT(0X02),
|
||||
CMD(0X6F),DAT(0X02),
|
||||
CMD(0X70),DAT(0X02),
|
||||
CMD(0X71),DAT(0X02),
|
||||
CMD(0X72),DAT(0X02),
|
||||
CMD(0X73),DAT(0X02),
|
||||
CMD(0X74),DAT(0X02),
|
||||
CMD(0X75),DAT(0X01),
|
||||
CMD(0X76),DAT(0X00),
|
||||
CMD(0X77),DAT(0X14),
|
||||
CMD(0X78),DAT(0X15),
|
||||
CMD(0X79),DAT(0X0E),
|
||||
CMD(0X7A),DAT(0X0F),
|
||||
CMD(0X7B),DAT(0X0C),
|
||||
CMD(0X7C),DAT(0X0D),
|
||||
CMD(0X7D),DAT(0X06),
|
||||
CMD(0X7E),DAT(0X02),
|
||||
CMD(0X7F),DAT(0X07),
|
||||
CMD(0X80),DAT(0X02),
|
||||
CMD(0X81),DAT(0X02),
|
||||
CMD(0X82),DAT(0X02),
|
||||
CMD(0X83),DAT(0X02),
|
||||
CMD(0X84),DAT(0X02),
|
||||
CMD(0X85),DAT(0X02),
|
||||
CMD(0X86),DAT(0X02),
|
||||
CMD(0X87),DAT(0X02),
|
||||
CMD(0X88),DAT(0X02),
|
||||
CMD(0X89),DAT(0X02),
|
||||
CMD(0X8A),DAT(0X02),
|
||||
|
||||
CMD(0XFF),DAT(0X98),DAT(0X81),DAT(0X04),
|
||||
|
||||
//CMD(0X00),DAT(0X00), //3 lane
|
||||
|
||||
CMD(0X6C),DAT(0X15),
|
||||
CMD(0X6E),DAT(0X2A),
|
||||
CMD(0X6F),DAT(0X35),
|
||||
CMD(0X3A),DAT(0X94),
|
||||
CMD(0X8D),DAT(0X15),
|
||||
CMD(0X87),DAT(0XBA),
|
||||
CMD(0X26),DAT(0X76),
|
||||
CMD(0XB2),DAT(0XD1),
|
||||
CMD(0XB5),DAT(0X06),
|
||||
|
||||
//CMD(0X),DAT(0X1),DAT(0X01 ),
|
||||
|
||||
CMD(0XFF),DAT(0X98),DAT(0X81),DAT(0X01),
|
||||
CMD(0X22),DAT(0X0A),
|
||||
CMD(0X31),DAT(0X00),
|
||||
CMD(0X53),DAT(0Xa5),
|
||||
CMD(0X55),DAT(0XA5),
|
||||
CMD(0X50),DAT(0X9A),
|
||||
CMD(0X51),DAT(0X9A),
|
||||
CMD(0X60),DAT(0X22),
|
||||
CMD(0X61),DAT(0X00),
|
||||
CMD(0X62),DAT(0X19),
|
||||
CMD(0X63),DAT(0X10),
|
||||
CMD(0XA0),DAT(0X08),
|
||||
CMD(0XA1),DAT(0X18),
|
||||
CMD(0XA2),DAT(0X1f),
|
||||
CMD(0XA3),DAT(0X0f),
|
||||
CMD(0XA4),DAT(0X14),
|
||||
CMD(0XA5),DAT(0X24),
|
||||
CMD(0XA6),DAT(0X1B),
|
||||
CMD(0XA7),DAT(0X1B),
|
||||
CMD(0XA8),DAT(0X5a),
|
||||
CMD(0XA9),DAT(0X1c),
|
||||
CMD(0XAA),DAT(0X29),
|
||||
CMD(0XAB),DAT(0X4e),
|
||||
CMD(0XAC),DAT(0X19),
|
||||
CMD(0XAD),DAT(0X16),
|
||||
CMD(0XAE),DAT(0X4c),
|
||||
CMD(0XAF),DAT(0X21),
|
||||
CMD(0XB0),DAT(0X2a),
|
||||
CMD(0XB1),DAT(0X48),
|
||||
CMD(0XB2),DAT(0X62),
|
||||
CMD(0XB3),DAT(0X39),
|
||||
|
||||
//CMD(0XB6),DAT(0Xa0),
|
||||
CMD(0XB7),DAT(0X02), //03:2 lane 2: 4 lane
|
||||
|
||||
CMD(0XC0),DAT(0X08),
|
||||
CMD(0XC1),DAT(0X0d),
|
||||
CMD(0XC2),DAT(0X18),
|
||||
CMD(0XC3),DAT(0X10),
|
||||
CMD(0XC4),DAT(0X0c),
|
||||
CMD(0XC5),DAT(0X1d),
|
||||
CMD(0XC6),DAT(0X10),
|
||||
CMD(0XC7),DAT(0X16),
|
||||
CMD(0XC8),DAT(0X61),
|
||||
CMD(0XC9),DAT(0X1b),
|
||||
CMD(0XCA),DAT(0X27),
|
||||
CMD(0XCB),DAT(0X5e),
|
||||
CMD(0XCC),DAT(0X1c),
|
||||
CMD(0XCD),DAT(0X1b),
|
||||
CMD(0XCE),DAT(0X4e),
|
||||
CMD(0XCF),DAT(0X22),
|
||||
CMD(0XD0),DAT(0X27),
|
||||
CMD(0XD1),DAT(0X52),
|
||||
CMD(0XD2),DAT(0X61),
|
||||
CMD(0XD3),DAT(0X39),
|
||||
|
||||
|
||||
CMD(0X35),DAT(0X05),
|
||||
CMD(0X11),
|
||||
CMD(0XFF),DAT(0X98),DAT(0X81),DAT(0X00),
|
||||
|
||||
DLY(120),
|
||||
CMD(0X11),
|
||||
DLY(120),
|
||||
CMD(0X29),
|
||||
DLY(120),
|
||||
|
||||
//CMD(0XFF),DAT(0X98),DAT(0X81),DAT(0X01),
|
||||
//CMD(0XB6),DAT(0XA0),
|
||||
DLY(120),
|
||||
|
||||
END
|
||||
|
||||
};
|
||||
|
||||
|
||||
lcddev_t lcdstruct = {
|
||||
.name = "ili9881c_mipi",
|
||||
.lcd_bus_type = LCD_BUS_MIPI,
|
||||
.bus_width = LCD_BUS_WIDTH_16,
|
||||
.color_mode = LCD_MODE_565,
|
||||
//.red_width = LCD_BUS_WIDTH_6,
|
||||
//.green_width = LCD_BUS_WIDTH_6,
|
||||
//.blue_width = LCD_BUS_WIDTH_6,
|
||||
.scan_mode = LCD_ROTATE_90,//rotate 90
|
||||
.te_mode = 0xff,//te mode, 0xff:disable
|
||||
.colrarray = 0,//0:_RGB_ 1:_RBG_,2:_GBR_,3:_GRB_,4:_BRG_,5:_BGR_
|
||||
.lane_num = 4,
|
||||
//f(wr) = source_clk/div/2
|
||||
//f(wr) >= screen_w * screen_h * clk_per_pixel * 60
|
||||
.pclk = 30000000,
|
||||
.even_order = 0,
|
||||
.odd_order = 0,
|
||||
.lcd_data_mode = (0<<31)|//data inversion mode
|
||||
(2<<24)|//data compress mode
|
||||
(1<<20)|//fifo mode
|
||||
(0<<17)|//output cycle 2 shift direction
|
||||
(0<<12)|//output cycle 2 shift bit
|
||||
(0<<11)|//output cycle 1 shift direction
|
||||
(0<<6)| //output cycle 1 shift bit
|
||||
(0<<5)| //output cycle 0 shift direction
|
||||
(8<<0), //output cycle 0 shift bit
|
||||
.screen_w = 720,
|
||||
.screen_h = 1280,
|
||||
.video_x = 0,
|
||||
.video_y = 0,
|
||||
.video_w = 720,
|
||||
.video_h = 1280,
|
||||
.osd_x = 0,
|
||||
.osd_y = 0,
|
||||
.osd_w = 0, // 0 : value will set to video_w , use for 4:3 LCD +16:9 sensor show UPDOWN BLACK
|
||||
.osd_h = 0, // 0 : value will set to video_h , use for 4:3 LCD +16:9 sensor show UPDOWN BLACK
|
||||
.init_table = ili9881c_register_init_tab,
|
||||
.frame_table = NULL,
|
||||
.clk_per_pixel = 2,
|
||||
|
||||
.pclk_inv = 1,
|
||||
|
||||
.vlw = 2*2,
|
||||
.vbp = 30*2,
|
||||
.vfp = 20*2,
|
||||
|
||||
.hlw = 33*2,
|
||||
.hbp = 100*2,
|
||||
.hfp = 100*2,
|
||||
|
||||
|
||||
.de_inv = 0,
|
||||
.hs_inv = 0,
|
||||
.vs_inv = 0,
|
||||
|
||||
|
||||
.de_en = 1,
|
||||
.vs_en = 1,
|
||||
.hs_en = 1,
|
||||
|
||||
|
||||
.brightness = 1,
|
||||
.saturation = 7,
|
||||
.contrast = 7,
|
||||
.contra_index = 8,
|
||||
|
||||
.gamma_red = 3,
|
||||
.gamma_green=3,
|
||||
.gamma_blue=3,
|
||||
|
||||
};
|
||||
#endif
|
||||
|
||||
287
sdk/lib/bus/spi/lcd/jd9852.c
Normal file
287
sdk/lib/bus/spi/lcd/jd9852.c
Normal file
@@ -0,0 +1,287 @@
|
||||
#include "lib/lcd/lcd.h"
|
||||
|
||||
#if LCD_JD9852_EN
|
||||
|
||||
#define CMD(x) {LCD_CMD,x}
|
||||
#define DAT(x) {LCD_DAT,x}
|
||||
#define DLY(x) {DELAY_MS,x}
|
||||
#define END {LCD_TAB_END,LCD_TAB_END}
|
||||
|
||||
|
||||
const uint8_t jd9852_register_init_tab[][2] = {
|
||||
DLY(200),
|
||||
CMD(0xDF), //Password
|
||||
DAT(0x98),
|
||||
DAT(0x51),
|
||||
DAT(0xE9),
|
||||
|
||||
//---------------- PAGE0 --------------
|
||||
CMD(0xDE),
|
||||
DAT(0x00),
|
||||
|
||||
//VGMP,VGSP,VGMN,VGSN 4.2
|
||||
CMD(0xB7),
|
||||
DAT(0x1E),
|
||||
DAT(0x7D),
|
||||
DAT(0x1E),
|
||||
DAT(0x2B),
|
||||
|
||||
//Set_R_GAMMA
|
||||
CMD(0xC8),
|
||||
DAT(0x3F),
|
||||
DAT(0x31),
|
||||
DAT(0x29),
|
||||
DAT(0x28),
|
||||
DAT(0x2C),
|
||||
DAT(0x31),
|
||||
DAT(0x2D),
|
||||
DAT(0x2D),
|
||||
DAT(0x2A),
|
||||
DAT(0x28),
|
||||
DAT(0x23),
|
||||
DAT(0x16),
|
||||
DAT(0x10),
|
||||
DAT(0x0E),
|
||||
DAT(0x08),
|
||||
DAT(0x0E),
|
||||
DAT(0x3F),
|
||||
DAT(0x31),
|
||||
DAT(0x29),
|
||||
DAT(0x28),
|
||||
DAT(0x2C),
|
||||
DAT(0x31),
|
||||
DAT(0x2D),
|
||||
DAT(0x2C),
|
||||
DAT(0x2A),
|
||||
DAT(0x28),
|
||||
DAT(0x23),
|
||||
DAT(0x16),
|
||||
DAT(0x10),
|
||||
DAT(0x0E),
|
||||
DAT(0x08),
|
||||
DAT(0x0E),
|
||||
|
||||
//POW_CTRL
|
||||
CMD(0xB9),
|
||||
DAT(0x33),
|
||||
DAT(0x08),
|
||||
DAT(0xCC),
|
||||
|
||||
//DCDC_SEL
|
||||
CMD(0xBB),
|
||||
DAT(0x46),//VGH 14.75,VGL-9.6
|
||||
DAT(0x7A),
|
||||
DAT(0x30),
|
||||
DAT(0xD0), //3
|
||||
DAT(0x7C), //6
|
||||
DAT(0x60),
|
||||
DAT(0x70),//50
|
||||
DAT(0x70),
|
||||
|
||||
//VDDD_CTRL
|
||||
CMD(0xBC),
|
||||
DAT(0x38),
|
||||
DAT(0x3C),
|
||||
|
||||
//SETSTBA
|
||||
CMD(0xC0),
|
||||
DAT(0x31),
|
||||
DAT(0x20),
|
||||
|
||||
//SETPANEL(default)
|
||||
CMD(0xC1),
|
||||
DAT(0x12),
|
||||
|
||||
//SETRGBCYC
|
||||
CMD(0xC3),
|
||||
DAT(0x08),
|
||||
DAT(0x00),
|
||||
DAT(0x0A),
|
||||
DAT(0x10),
|
||||
DAT(0x08),
|
||||
DAT(0x54),
|
||||
DAT(0x45),
|
||||
DAT(0x71),
|
||||
DAT(0x2C),
|
||||
|
||||
//SETRGBCYC(default)
|
||||
CMD(0xC4),
|
||||
DAT(0x00),
|
||||
DAT(0xA0),
|
||||
DAT(0x79),
|
||||
DAT(0x0E),
|
||||
DAT(0x0A),
|
||||
DAT(0x16),
|
||||
DAT(0x79),
|
||||
DAT(0x0E),
|
||||
DAT(0x0A),
|
||||
DAT(0x16),
|
||||
DAT(0x79),
|
||||
DAT(0x0E),
|
||||
DAT(0x0A),
|
||||
DAT(0x16),
|
||||
DAT(0x82),
|
||||
DAT(0x00),
|
||||
DAT(0x03),
|
||||
|
||||
|
||||
//SET_GD(default)
|
||||
CMD(0xD0),
|
||||
DAT(0x04),
|
||||
DAT(0x0C),
|
||||
DAT(0x6B),
|
||||
DAT(0x0F),
|
||||
DAT(0x07),
|
||||
DAT(0x03),
|
||||
|
||||
//RAMCTRL(default)
|
||||
CMD(0xD7),
|
||||
DAT(0x13),
|
||||
DAT(0x00),
|
||||
|
||||
//---------------- PAGE2 --------------
|
||||
CMD(0xDE),
|
||||
DAT(0x02),
|
||||
DLY(1),
|
||||
|
||||
//DCDC_SET
|
||||
//SSD_Number(0x06),
|
||||
CMD(0xB8),
|
||||
DAT(0x1D),
|
||||
DAT(0xA0),
|
||||
DAT(0x2F),
|
||||
DAT(0x04),
|
||||
DAT(0x33),
|
||||
|
||||
//SETRGBCYC2
|
||||
CMD(0xC1),
|
||||
DAT(0x10),
|
||||
DAT(0x66),
|
||||
DAT(0x66),
|
||||
DAT(0x01),
|
||||
|
||||
//---------------- PAGE0 --------------
|
||||
CMD(0xDE),
|
||||
DAT(0x00),
|
||||
|
||||
|
||||
// sleep out
|
||||
CMD(0x11), // SLPOUT
|
||||
DLY(120),
|
||||
//---------------- PAGE2 --------------
|
||||
CMD(0xDE),
|
||||
DAT(0x02),
|
||||
DLY(1),
|
||||
|
||||
//OSCM
|
||||
CMD(0xC5),
|
||||
DAT(0x4E),
|
||||
DAT(0x00),
|
||||
DAT(0x00),
|
||||
DLY(1),
|
||||
|
||||
//SETMIPI_2
|
||||
CMD(0xCA),
|
||||
DAT(0x30),
|
||||
DAT(0x20),
|
||||
DAT(0xF4),
|
||||
DLY(1),
|
||||
|
||||
//---------------- PAGE4 --------------
|
||||
CMD(0xDE),
|
||||
DAT(0x04),
|
||||
DLY(1),
|
||||
|
||||
//SETPHY3
|
||||
CMD(0xD3),
|
||||
DAT(0x3C),
|
||||
DLY(100),
|
||||
//---------------- PAGE0 --------------
|
||||
CMD(0xDE),
|
||||
DAT(0x00),
|
||||
DLY(50),
|
||||
|
||||
// display on
|
||||
CMD(0x29), // SLPOUT
|
||||
|
||||
|
||||
|
||||
END
|
||||
|
||||
};
|
||||
|
||||
|
||||
lcddev_t lcdstruct = {
|
||||
.name = "jd9852_mipi",
|
||||
.lcd_bus_type = LCD_BUS_MIPI,
|
||||
.bus_width = LCD_BUS_WIDTH_24,
|
||||
.color_mode = LCD_MODE_888,
|
||||
//.red_width = LCD_BUS_WIDTH_6,
|
||||
//.green_width = LCD_BUS_WIDTH_6,
|
||||
//.blue_width = LCD_BUS_WIDTH_6,
|
||||
.scan_mode = LCD_ROTATE_90,//rotate 90
|
||||
.te_mode = 0xff,//te mode, 0xff:disable
|
||||
.colrarray = 0,//0:_RGB_ 1:_RBG_,2:_GBR_,3:_GRB_,4:_BRG_,5:_BGR_
|
||||
//f(wr) = source_clk/div/2
|
||||
//f(wr) >= screen_w * screen_h * clk_per_pixel * 60
|
||||
.pclk = 10000000,
|
||||
.even_order = 0,
|
||||
.odd_order = 0,
|
||||
.lane_num = 1,
|
||||
.lcd_data_mode = (0<<31)|//data inversion mode
|
||||
(2<<24)|//data compress mode
|
||||
(1<<20)|//fifo mode
|
||||
(0<<17)|//output cycle 2 shift direction
|
||||
(0<<12)|//output cycle 2 shift bit
|
||||
(0<<11)|//output cycle 1 shift direction
|
||||
(0<<6)| //output cycle 1 shift bit
|
||||
(0<<5)| //output cycle 0 shift direction
|
||||
(8<<0), //output cycle 0 shift bit
|
||||
.screen_w = 240,
|
||||
.screen_h = 320,
|
||||
.video_x = 0,
|
||||
.video_y = 0,
|
||||
.video_w = 240,
|
||||
.video_h = 320,
|
||||
.osd_x = 0,
|
||||
.osd_y = 0,
|
||||
.osd_w = 240, // 0 : value will set to video_w , use for 4:3 LCD +16:9 sensor show UPDOWN BLACK
|
||||
.osd_h = 320, // 0 : value will set to video_h , use for 4:3 LCD +16:9 sensor show UPDOWN BLACK
|
||||
.init_table = jd9852_register_init_tab,
|
||||
.frame_table = NULL,
|
||||
.clk_per_pixel = 2,
|
||||
|
||||
.pclk_inv = 1,
|
||||
|
||||
.vlw = 2,
|
||||
.vbp = 2,
|
||||
.vfp = 10,
|
||||
|
||||
.hlw = 2,
|
||||
.hbp = 8,
|
||||
.hfp = 12,
|
||||
|
||||
|
||||
.de_inv = 0,
|
||||
.hs_inv = 0,
|
||||
.vs_inv = 0,
|
||||
|
||||
|
||||
.de_en = 1,
|
||||
.vs_en = 1,
|
||||
.hs_en = 1,
|
||||
|
||||
|
||||
.brightness = 1,
|
||||
.saturation = 7,
|
||||
.contrast = 7,
|
||||
.contra_index = 8,
|
||||
|
||||
.gamma_red = 3,
|
||||
.gamma_green=3,
|
||||
.gamma_blue=3,
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
383
sdk/lib/bus/spi/lcd/st7701s.c
Normal file
383
sdk/lib/bus/spi/lcd/st7701s.c
Normal file
@@ -0,0 +1,383 @@
|
||||
#include "lib/lcd/lcd.h"
|
||||
|
||||
|
||||
#if LCD_ST7701S_EN
|
||||
|
||||
#define CMD(x) {LCD_CMD,x}
|
||||
#define DAT(x) {LCD_DAT,x}
|
||||
#define DLY(x) {DELAY_MS,x}
|
||||
#define END {LCD_TAB_END,LCD_TAB_END}
|
||||
|
||||
|
||||
const uint8_t st7701s_register_init_tab[][2] = {
|
||||
|
||||
CMD(0x11),
|
||||
DLY(250),
|
||||
|
||||
CMD(0xFF),
|
||||
DAT(0x77),
|
||||
DAT(0x01),
|
||||
DAT(0x00),
|
||||
DAT(0x00),
|
||||
DAT(0x13),
|
||||
|
||||
CMD(0xEF),
|
||||
DAT(0x08),
|
||||
|
||||
CMD(0xFF),
|
||||
DAT(0x77),
|
||||
DAT(0x01),
|
||||
DAT(0x00),
|
||||
DAT(0x00),
|
||||
DAT(0x10),
|
||||
|
||||
CMD(0xC0),
|
||||
DAT(0xE9),
|
||||
DAT(0x03),
|
||||
|
||||
CMD(0xC1),
|
||||
DAT(0x11),
|
||||
DAT(0x02),
|
||||
|
||||
CMD(0xC2),
|
||||
DAT(0x07),
|
||||
DAT(0x06),
|
||||
|
||||
CMD(0xC3),
|
||||
DAT(0x80),
|
||||
|
||||
|
||||
CMD(0xCC),
|
||||
DAT(0x18),
|
||||
|
||||
CMD(0xB0),
|
||||
DAT(0x00),
|
||||
DAT(0x0D),
|
||||
DAT(0x14),
|
||||
DAT(0x0D),
|
||||
DAT(0x10),
|
||||
DAT(0x05),
|
||||
DAT(0x02),
|
||||
DAT(0x08),
|
||||
DAT(0x08),
|
||||
DAT(0x1E),
|
||||
DAT(0x05),
|
||||
DAT(0x13),
|
||||
DAT(0x11),
|
||||
DAT(0xA3),
|
||||
DAT(0x29),
|
||||
DAT(0x18),
|
||||
|
||||
CMD(0xB1),
|
||||
DAT(0x00),
|
||||
DAT(0x0C),
|
||||
DAT(0x14),
|
||||
DAT(0x0C),
|
||||
DAT(0x10),
|
||||
DAT(0x05),
|
||||
DAT(0x03),
|
||||
DAT(0x08),
|
||||
DAT(0x07),
|
||||
DAT(0x20),
|
||||
DAT(0x05),
|
||||
DAT(0x13),
|
||||
DAT(0x11),
|
||||
DAT(0xA4),
|
||||
DAT(0x29),
|
||||
DAT(0x18),
|
||||
|
||||
CMD(0xFF),
|
||||
DAT(0x77),
|
||||
DAT(0x01),
|
||||
DAT(0x00),
|
||||
DAT(0x00),
|
||||
DAT(0x11),
|
||||
|
||||
CMD(0xB0),
|
||||
DAT(0x6C),
|
||||
|
||||
CMD(0xB1),
|
||||
DAT(0x4D),
|
||||
|
||||
CMD(0xB2),
|
||||
DAT(0x89),
|
||||
|
||||
CMD(0xB3),
|
||||
DAT(0x80),
|
||||
|
||||
CMD(0xB5),
|
||||
DAT(0x4E),
|
||||
|
||||
CMD(0xB7),
|
||||
DAT(0x85),
|
||||
|
||||
CMD(0xB8),
|
||||
DAT(0x20),
|
||||
|
||||
CMD(0xB9),
|
||||
DAT(0x00),
|
||||
DAT(0x13),
|
||||
|
||||
CMD(0xC0),
|
||||
DAT(0x09),
|
||||
|
||||
CMD(0xC1),
|
||||
DAT(0x78),
|
||||
|
||||
CMD(0xC2),
|
||||
DAT(0x78),
|
||||
|
||||
CMD(0xD0),
|
||||
DAT(0x88),
|
||||
|
||||
CMD(0xE0),
|
||||
DAT(0x00),
|
||||
DAT(0x00),
|
||||
DAT(0x02),
|
||||
|
||||
CMD(0xE1),
|
||||
DAT(0x08),
|
||||
DAT(0x00),
|
||||
DAT(0x0A),
|
||||
DAT(0x00),
|
||||
DAT(0x07),
|
||||
DAT(0x00),
|
||||
DAT(0x09),
|
||||
DAT(0x00),
|
||||
DAT(0x00),
|
||||
DAT(0x33),
|
||||
DAT(0x33),
|
||||
|
||||
CMD(0xE2),
|
||||
DAT(0x00),
|
||||
DAT(0x00),
|
||||
DAT(0x00),
|
||||
DAT(0x00),
|
||||
DAT(0x00),
|
||||
DAT(0x00),
|
||||
DAT(0x00),
|
||||
DAT(0x00),
|
||||
DAT(0x00),
|
||||
DAT(0x00),
|
||||
DAT(0x00),
|
||||
DAT(0x00),
|
||||
DAT(0x00),
|
||||
|
||||
CMD(0xE3),
|
||||
DAT(0x00),
|
||||
DAT(0x00),
|
||||
DAT(0x33),
|
||||
DAT(0x33),
|
||||
|
||||
CMD(0xE4),
|
||||
DAT(0x44),
|
||||
DAT(0x44),
|
||||
|
||||
CMD(0xE5),
|
||||
DAT(0x0E),
|
||||
DAT(0x60),
|
||||
DAT(0xA0),
|
||||
DAT(0xA0),
|
||||
DAT(0x10),
|
||||
DAT(0x60),
|
||||
DAT(0xA0),
|
||||
DAT(0xA0),
|
||||
DAT(0x0A),
|
||||
DAT(0x60),
|
||||
DAT(0xA0),
|
||||
DAT(0xA0),
|
||||
DAT(0x0C),
|
||||
DAT(0x60),
|
||||
DAT(0xA0),
|
||||
DAT(0xA0),
|
||||
|
||||
CMD(0xE6),
|
||||
DAT(0x00),
|
||||
DAT(0x00),
|
||||
DAT(0x33),
|
||||
DAT(0x33),
|
||||
|
||||
CMD(0xE7),
|
||||
DAT(0x44),
|
||||
DAT(0x44),
|
||||
|
||||
CMD(0xE8),
|
||||
DAT(0x0D),
|
||||
DAT(0x60),
|
||||
DAT(0xA0),
|
||||
DAT(0xA0),
|
||||
DAT(0x0F),
|
||||
DAT(0x60),
|
||||
DAT(0xA0),
|
||||
DAT(0xA0),
|
||||
DAT(0x09),
|
||||
DAT(0x60),
|
||||
DAT(0xA0),
|
||||
DAT(0xA0),
|
||||
DAT(0x0B),
|
||||
DAT(0x60),
|
||||
DAT(0xA0),
|
||||
DAT(0xA0),
|
||||
|
||||
CMD(0xEB),
|
||||
DAT(0x02),
|
||||
DAT(0x01),
|
||||
DAT(0xE4),
|
||||
DAT(0xE4),
|
||||
DAT(0x44),
|
||||
DAT(0x00),
|
||||
DAT(0x40),
|
||||
|
||||
CMD(0xEC),
|
||||
DAT(0x02),
|
||||
DAT(0x01),
|
||||
|
||||
CMD(0xED),
|
||||
DAT(0xAB),
|
||||
DAT(0x89),
|
||||
DAT(0x76),
|
||||
DAT(0x54),
|
||||
DAT(0x01),
|
||||
DAT(0xFF),
|
||||
DAT(0xFF),
|
||||
DAT(0xFF),
|
||||
DAT(0xFF),
|
||||
DAT(0xFF),
|
||||
DAT(0xFF),
|
||||
DAT(0x10),
|
||||
DAT(0x45),
|
||||
DAT(0x67),
|
||||
DAT(0x98),
|
||||
DAT(0xBA),
|
||||
|
||||
CMD(0xEF),
|
||||
DAT(0x08),
|
||||
DAT(0x08),
|
||||
DAT(0x08),
|
||||
DAT(0x45),
|
||||
DAT(0x3F),
|
||||
DAT(0x54),
|
||||
|
||||
CMD(0xFF),
|
||||
DAT(0x77),
|
||||
DAT(0x01),
|
||||
DAT(0x00),
|
||||
DAT(0x00),
|
||||
DAT(0x13),
|
||||
|
||||
CMD(0xE8),
|
||||
DAT(0x00),
|
||||
DAT(0x0E),
|
||||
|
||||
CMD(0xFF),
|
||||
DAT(0x77),
|
||||
DAT(0x01),
|
||||
DAT(0x00),
|
||||
DAT(0x00),
|
||||
DAT(0x00),
|
||||
|
||||
CMD(0x11),
|
||||
DAT(0x00),
|
||||
DLY (120),
|
||||
CMD(0xFF),
|
||||
DAT(0x77),
|
||||
DAT(0x01),
|
||||
DAT(0x00),
|
||||
DAT(0x00),
|
||||
DAT(0x13),
|
||||
|
||||
CMD(0xE8),
|
||||
DAT(0x00),
|
||||
DAT(0x0C),
|
||||
DLY (10),
|
||||
CMD(0xE8),
|
||||
DAT(0x00),
|
||||
DAT(0x00),
|
||||
|
||||
CMD(0xE6),
|
||||
DAT(0x16),
|
||||
DAT(0x7C),
|
||||
|
||||
CMD(0xFF),
|
||||
DAT(0x77),
|
||||
DAT(0x01),
|
||||
DAT(0x00),
|
||||
DAT(0x00),
|
||||
DAT(0x00),
|
||||
|
||||
/*
|
||||
CMD(0xFF),//bist mode
|
||||
DAT(0x77),
|
||||
DAT(0x01),
|
||||
DAT(0x00),
|
||||
DAT(0x00),
|
||||
DAT(0x12),
|
||||
|
||||
CMD(0xD1),
|
||||
DAT(0x81),
|
||||
|
||||
CMD(0xD2),
|
||||
DAT(0x06),//bist mode 0x00列灰阶分两半 02红03绿04蓝05白边框06棋盘格07黑底白像素网格08RGB彩条
|
||||
*/
|
||||
CMD(0x3A),
|
||||
DAT(0x77),
|
||||
// DAT(0x55),
|
||||
|
||||
CMD(0x29),
|
||||
DAT(0x00),
|
||||
DLY (20),
|
||||
|
||||
|
||||
|
||||
END
|
||||
|
||||
};
|
||||
|
||||
|
||||
lcddev_t lcdstruct = {
|
||||
.name = "st7701s",
|
||||
.lcd_bus_type = LCD_BUS_RGB,
|
||||
.bus_width = LCD_BUS_WIDTH_24,
|
||||
.color_mode = LCD_MODE_888,
|
||||
.scan_mode = LCD_ROTATE_90,//rotate 90
|
||||
.te_mode = 0xff,//te mode, 0xff:disable
|
||||
.colrarray = 0,//0:_RGB_ 1:_RBG_,2:_GBR_,3:_GRB_,4:_BRG_,5:_BGR_
|
||||
.pclk = 20000000,
|
||||
.even_order = 0,
|
||||
.odd_order = 0,
|
||||
|
||||
.screen_w = 480,
|
||||
.screen_h = 854,
|
||||
.video_x = 0,
|
||||
.video_y = 0,
|
||||
.video_w = 480,
|
||||
.video_h = 854,
|
||||
.osd_x = 0,
|
||||
.osd_y = 0,
|
||||
.osd_w = 480, // 0 : value will set to video_w , use for 4:3 LCD +16:9 sensor show UPDOWN BLACK
|
||||
.osd_h = 848, // 0 : value will set to video_h , use for 4:3 LCD +16:9 sensor show UPDOWN BLACK
|
||||
.init_table = st7701s_register_init_tab,
|
||||
|
||||
.pclk_inv = 1,
|
||||
|
||||
.vlw = 10,
|
||||
.vbp = 6,
|
||||
.vfp = 10,
|
||||
|
||||
.hlw = 8,
|
||||
.hbp = 8,
|
||||
.hfp = 30,
|
||||
|
||||
|
||||
.de_inv = 0,
|
||||
.hs_inv = 1,
|
||||
.vs_inv = 1,
|
||||
|
||||
|
||||
.de_en = 1,
|
||||
.vs_en = 1,
|
||||
.hs_en = 1,
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
657
sdk/lib/bus/spi/lcd/st7701s_mipi.c
Normal file
657
sdk/lib/bus/spi/lcd/st7701s_mipi.c
Normal file
@@ -0,0 +1,657 @@
|
||||
#include "lib/lcd/lcd.h"
|
||||
|
||||
#if LCD_ST7701S_MIPI_EN
|
||||
|
||||
|
||||
#define CMD(x) {LCD_CMD,x}
|
||||
#define DAT(x) {LCD_DAT,x}
|
||||
#define DLY(x) {DELAY_MS,x}
|
||||
#define END {LCD_TAB_END,LCD_TAB_END}
|
||||
|
||||
#define BOE397_IPS 1
|
||||
|
||||
|
||||
const uint8_t st7701s_register_init_tab[][2] = {
|
||||
#if BOE397_IPS
|
||||
CMD (0xFF),
|
||||
DAT (0x77),
|
||||
DAT (0x01),
|
||||
DAT (0x00),
|
||||
DAT (0x00),
|
||||
DAT (0x13),
|
||||
CMD (0xEF),
|
||||
DAT (0x08),
|
||||
CMD (0xFF),
|
||||
DAT (0x77),
|
||||
DAT (0x01),
|
||||
DAT (0x00),
|
||||
DAT (0x00),
|
||||
DAT (0x10),
|
||||
CMD (0xC0),
|
||||
DAT (0x63),
|
||||
DAT (0x00),
|
||||
CMD (0xC1),
|
||||
DAT (0x09),
|
||||
DAT (0x02),
|
||||
CMD (0xC2),
|
||||
DAT (0x07),
|
||||
DAT (0x02),
|
||||
CMD (0xCC),
|
||||
DAT (0x18),
|
||||
CMD (0xB0),
|
||||
DAT (0x00),
|
||||
DAT (0x12),
|
||||
DAT (0x19),
|
||||
DAT (0x0D),
|
||||
DAT (0x12),
|
||||
DAT (0x0A),
|
||||
DAT (0x07),
|
||||
DAT (0x0B),
|
||||
DAT (0x08),
|
||||
DAT (0x23),
|
||||
DAT (0x06),
|
||||
DAT (0x14),
|
||||
DAT (0x13),
|
||||
DAT (0x25),
|
||||
DAT (0x2B),
|
||||
DAT (0x1F),
|
||||
CMD (0xB1),
|
||||
DAT (0x00),
|
||||
DAT (0x0A),
|
||||
DAT (0x13),
|
||||
DAT (0x0D),
|
||||
DAT (0x10),
|
||||
DAT (0x03),
|
||||
DAT (0x04),
|
||||
DAT (0x07),
|
||||
DAT (0x09),
|
||||
DAT (0x1F),
|
||||
DAT (0x04),
|
||||
DAT (0x11),
|
||||
DAT (0x0E),
|
||||
DAT (0x23),
|
||||
DAT (0x2A),
|
||||
DAT (0x1F),
|
||||
CMD (0xFF),
|
||||
DAT (0x77),
|
||||
DAT (0x01),
|
||||
DAT (0x00),
|
||||
DAT (0x00),
|
||||
DAT (0x11),
|
||||
CMD (0xB0),
|
||||
DAT (0x4D),
|
||||
CMD (0xB1),
|
||||
DAT (0x55),
|
||||
CMD (0xB2),
|
||||
DAT (0x87),
|
||||
CMD (0xB3),
|
||||
DAT (0x80),
|
||||
CMD (0xB5),
|
||||
DAT (0x4F),
|
||||
CMD (0xB7),
|
||||
DAT (0x85),
|
||||
CMD (0xB8),
|
||||
DAT (0x23),
|
||||
CMD (0xB9),
|
||||
DAT (0x22),
|
||||
DAT (0x13),
|
||||
CMD (0xBB),
|
||||
DAT (0x03),
|
||||
CMD (0xBC),
|
||||
DAT (0x10),
|
||||
CMD (0xC0),
|
||||
DAT (0x89),
|
||||
CMD (0xC1),
|
||||
DAT (0x78),
|
||||
CMD (0xC2),
|
||||
DAT (0x78),
|
||||
CMD (0xEF),
|
||||
DAT (0x08),
|
||||
DAT (0x08),
|
||||
DAT (0x08),
|
||||
DAT (0x4C),
|
||||
DAT (0x3F),
|
||||
DAT (0x54),
|
||||
CMD (0xD0),
|
||||
DAT (0x88),
|
||||
CMD (0xE0),
|
||||
DAT (0x00),
|
||||
DAT (0x00),
|
||||
DAT (0x02),
|
||||
CMD (0xE1),
|
||||
DAT (0x04),
|
||||
DAT (0x00),
|
||||
DAT (0x00),
|
||||
DAT (0x00),
|
||||
DAT (0x05),
|
||||
DAT (0x00),
|
||||
DAT (0x00),
|
||||
DAT (0x00),
|
||||
DAT (0x00),
|
||||
DAT (0x10),
|
||||
DAT (0x10),
|
||||
CMD (0xE2),
|
||||
DAT (0x00),
|
||||
DAT (0x00),
|
||||
DAT (0x00),
|
||||
DAT (0x00),
|
||||
DAT (0x00),
|
||||
DAT (0x00),
|
||||
DAT (0x00),
|
||||
DAT (0x00),
|
||||
DAT (0x00),
|
||||
DAT (0x00),
|
||||
DAT (0x00),
|
||||
DAT (0x00),
|
||||
DAT (0x00),
|
||||
CMD (0xE3),
|
||||
DAT (0x00),
|
||||
DAT (0x00),
|
||||
DAT (0x33),
|
||||
DAT (0x00),
|
||||
CMD (0xE4),
|
||||
DAT (0x22),
|
||||
DAT (0x00),
|
||||
CMD (0xE5),
|
||||
DAT (0x03),
|
||||
DAT (0x34),
|
||||
DAT (0xAF),
|
||||
DAT (0xB3),
|
||||
DAT (0x05),
|
||||
DAT (0x34),
|
||||
DAT (0xAF),
|
||||
DAT (0xB3),
|
||||
DAT (0x00),
|
||||
DAT (0x00),
|
||||
DAT (0x00),
|
||||
DAT (0x00),
|
||||
DAT (0x00),
|
||||
DAT (0x00),
|
||||
DAT (0x00),
|
||||
DAT (0x00),
|
||||
CMD (0xE6),
|
||||
DAT (0x00),
|
||||
DAT (0x00),
|
||||
DAT (0x33),
|
||||
DAT (0x00),
|
||||
CMD (0xE7),
|
||||
DAT (0x22),
|
||||
DAT (0x00),
|
||||
CMD (0xE8),
|
||||
DAT (0x04),
|
||||
DAT (0x34),
|
||||
DAT (0xAF),
|
||||
DAT (0xB3),
|
||||
DAT (0x06),
|
||||
DAT (0x34),
|
||||
DAT (0xAF),
|
||||
DAT (0xB3),
|
||||
DAT (0x00),
|
||||
DAT (0x00),
|
||||
DAT (0x00),
|
||||
DAT (0x00),
|
||||
DAT (0x00),
|
||||
DAT (0x00),
|
||||
DAT (0x00),
|
||||
DAT (0x00),
|
||||
CMD (0xEB),
|
||||
DAT (0x02),
|
||||
DAT (0x00),
|
||||
DAT (0x40),
|
||||
DAT (0x40),
|
||||
DAT (0x00),
|
||||
DAT (0x00),
|
||||
DAT (0x00),
|
||||
CMD (0xEC),
|
||||
DAT (0x00),
|
||||
DAT (0x00),
|
||||
CMD (0xED),
|
||||
DAT (0xFA),
|
||||
DAT (0x45),
|
||||
DAT (0x0B),
|
||||
DAT (0xFF),
|
||||
DAT (0xFF),
|
||||
DAT (0xFF),
|
||||
DAT (0xFF),
|
||||
DAT (0xFF),
|
||||
DAT (0xFF),
|
||||
DAT (0xFF),
|
||||
DAT (0xFF),
|
||||
DAT (0xFF),
|
||||
DAT (0xFF),
|
||||
DAT (0xB0),
|
||||
DAT (0x54),
|
||||
DAT (0xAF),
|
||||
CMD (0xEF),
|
||||
DAT (0x08),
|
||||
DAT (0x08),
|
||||
DAT (0x08),
|
||||
DAT (0x45),
|
||||
DAT (0x3F),
|
||||
DAT (0x54),
|
||||
CMD (0xFF),
|
||||
DAT (0x77),
|
||||
DAT (0x01),
|
||||
DAT (0x00),
|
||||
DAT (0x00),
|
||||
DAT (0x13),
|
||||
CMD (0xE6),
|
||||
DAT (0x16),
|
||||
DAT (0x7c),
|
||||
CMD (0xe8),
|
||||
DAT (0x00),
|
||||
DAT (0x0E),
|
||||
CMD (0xFF),
|
||||
DAT (0x77),
|
||||
DAT (0x01),
|
||||
DAT (0x00),
|
||||
DAT (0x00),
|
||||
DAT (0x00),
|
||||
CMD (0x11),
|
||||
DLY (120),
|
||||
CMD (0xFF),
|
||||
DAT (0x77),
|
||||
DAT (0x01),
|
||||
DAT (0x00),
|
||||
DAT (0x00),
|
||||
DAT (0x13),
|
||||
CMD (0xe8),
|
||||
DAT (0x00),
|
||||
DAT (0x0C),
|
||||
DLY (10),
|
||||
CMD (0xe8),
|
||||
DAT (0x00),
|
||||
DAT (0x00),
|
||||
CMD (0xFF),
|
||||
DAT (0x77),
|
||||
DAT (0x01),
|
||||
DAT (0x00),
|
||||
DAT (0x00),
|
||||
DAT (0x00),
|
||||
CMD (0x35),
|
||||
DAT (0x00),
|
||||
|
||||
#if 0 //test pattern
|
||||
CMD(0xFF),
|
||||
DAT(0x77),
|
||||
DAT(0x01),
|
||||
DAT(0x00),
|
||||
DAT(0x00),
|
||||
DAT(0x12),
|
||||
|
||||
CMD(0xD1),
|
||||
DAT(0x81),
|
||||
|
||||
CMD(0xD2),
|
||||
DAT(0x06),
|
||||
#endif
|
||||
|
||||
CMD(0x36), // //U&D Y-DIR
|
||||
DAT(0x00), //rotate 0: 0x00 : rotate 180 :0x10
|
||||
|
||||
CMD(0x3A),
|
||||
DAT(0x77),
|
||||
|
||||
CMD (0x21),
|
||||
DLY(100),
|
||||
CMD (0x29),
|
||||
DLY(200),
|
||||
|
||||
#else
|
||||
|
||||
|
||||
CMD(0x01),
|
||||
DLY(120),
|
||||
|
||||
CMD(0x11),
|
||||
DLY(120),
|
||||
|
||||
//CMD(0xD3),
|
||||
//DAT(0x07),
|
||||
//DAT(0x00),
|
||||
|
||||
|
||||
CMD(0xFF),
|
||||
DAT(0x77),
|
||||
DAT(0x01),
|
||||
DAT(0x00),
|
||||
DAT(0x00),
|
||||
DAT(0x11),
|
||||
|
||||
CMD(0xD1),
|
||||
DAT(0x11),
|
||||
|
||||
CMD(0x55),
|
||||
DAT(0xb0), // 80 90 b0
|
||||
|
||||
|
||||
CMD(0xFF),
|
||||
DAT(0x77),
|
||||
DAT(0x01),
|
||||
DAT(0x00),
|
||||
DAT(0x00),
|
||||
DAT(0x10),
|
||||
|
||||
|
||||
CMD(0xC0),
|
||||
DAT(0x63),
|
||||
DAT(0x00),
|
||||
|
||||
CMD(0xC1),
|
||||
DAT(0x02), //vbp
|
||||
DAT(0x0A), //vfp
|
||||
|
||||
CMD(0xC2),
|
||||
DAT(0x37),
|
||||
DAT(0x08),
|
||||
|
||||
CMD(0xC3),
|
||||
DAT(0x00),
|
||||
DAT(0x00),
|
||||
DAT(0x08),
|
||||
|
||||
|
||||
CMD(0xC7),//x-dir
|
||||
DAT(0x04), // rotate 0 : 0x00 rotate 180 :0x04
|
||||
|
||||
CMD(0xCC),
|
||||
DAT(0x38),
|
||||
|
||||
CMD(0xB0),
|
||||
DAT(0x00),
|
||||
DAT(0x11),
|
||||
DAT(0x19),
|
||||
DAT(0x0C),
|
||||
DAT(0x10),
|
||||
DAT(0x06),
|
||||
DAT(0x07),
|
||||
DAT(0x0A),
|
||||
DAT(0x09),
|
||||
DAT(0x22),
|
||||
DAT(0x04),
|
||||
DAT(0x10),
|
||||
DAT(0x0E),
|
||||
DAT(0x28),
|
||||
DAT(0x30),
|
||||
DAT(0x1C),
|
||||
|
||||
CMD(0xB1),
|
||||
DAT(0x00),
|
||||
DAT(0x12),
|
||||
DAT(0x19),
|
||||
DAT(0x0D),
|
||||
DAT(0x10),
|
||||
DAT(0x04),
|
||||
DAT(0x06),
|
||||
DAT(0x07),
|
||||
DAT(0x08),
|
||||
DAT(0x23),
|
||||
DAT(0x04),
|
||||
DAT(0x12),
|
||||
DAT(0x11),
|
||||
DAT(0x28),
|
||||
DAT(0x30),
|
||||
DAT(0x1C),
|
||||
|
||||
|
||||
CMD(0xFF),
|
||||
DAT(0x77),
|
||||
DAT(0x01),
|
||||
DAT(0x00),
|
||||
DAT(0x00),
|
||||
DAT(0x11), // enable bk fun of command 2 BK1
|
||||
|
||||
|
||||
CMD(0xB0),
|
||||
DAT(0x4D),
|
||||
|
||||
CMD(0xB1),
|
||||
DAT(0x60), //0x56 0x4a 0x5b
|
||||
|
||||
|
||||
CMD(0xB2),
|
||||
DAT(0x07),
|
||||
CMD(0xB3),
|
||||
DAT(0x80),
|
||||
CMD(0xB5),
|
||||
DAT(0x47),
|
||||
CMD(0xB7),
|
||||
DAT(0x8A),
|
||||
CMD(0xB8),
|
||||
DAT(0x21),
|
||||
CMD(0xC1),
|
||||
DAT(0x78),
|
||||
|
||||
CMD(0xC2),
|
||||
DAT(0x78),
|
||||
CMD(0xD0),
|
||||
DAT(0x88),
|
||||
DLY(100),
|
||||
|
||||
|
||||
CMD(0xE0),
|
||||
DAT(0x00),
|
||||
DAT(0x00),
|
||||
DAT(0x02),
|
||||
|
||||
CMD(0xE1),
|
||||
DAT(0x01),
|
||||
DAT(0xA0),
|
||||
DAT(0x03),
|
||||
DAT(0xA0),
|
||||
DAT(0x02),
|
||||
DAT(0xA0),
|
||||
DAT(0x04),
|
||||
DAT(0xA0),
|
||||
DAT(0x00),
|
||||
DAT(0x44),
|
||||
DAT(0x44),
|
||||
|
||||
CMD(0xE2),
|
||||
DAT(0x00),
|
||||
DAT(0x00),
|
||||
DAT(0x00),
|
||||
DAT(0x00),
|
||||
DAT(0x00),
|
||||
DAT(0x00),
|
||||
DAT(0x00),
|
||||
DAT(0x00),
|
||||
DAT(0x00),
|
||||
DAT(0x00),
|
||||
DAT(0x00),
|
||||
DAT(0x00),
|
||||
|
||||
CMD(0xE3),
|
||||
DAT(0x00),
|
||||
DAT(0x00),
|
||||
DAT(0x33),
|
||||
DAT(0x33),
|
||||
|
||||
CMD(0xE4),
|
||||
DAT(0x44),
|
||||
DAT(0x44),
|
||||
|
||||
CMD(0xE5),
|
||||
DAT(0x01),
|
||||
DAT(0x26),
|
||||
DAT(0xA0),
|
||||
DAT(0xA0),
|
||||
DAT(0x03),
|
||||
DAT(0x28),
|
||||
DAT(0xA0),
|
||||
DAT(0xA0),
|
||||
DAT(0x05),
|
||||
DAT(0x2A),
|
||||
DAT(0xA0),
|
||||
DAT(0xA0),
|
||||
DAT(0x07),
|
||||
DAT(0x2C),
|
||||
DAT(0xA0),
|
||||
DAT(0xA0),
|
||||
|
||||
CMD(0xE6),
|
||||
DAT(0x00),
|
||||
DAT(0x00),
|
||||
DAT(0x33),
|
||||
DAT(0x33),
|
||||
|
||||
CMD(0xE7),
|
||||
DAT(0x44),
|
||||
DAT(0x44),
|
||||
|
||||
CMD(0xE8),
|
||||
DAT(0x02),
|
||||
DAT(0x26),
|
||||
DAT(0xA0),
|
||||
DAT(0xA0),
|
||||
DAT(0x04),
|
||||
DAT(0x28),
|
||||
DAT(0xA0),
|
||||
DAT(0xA0),
|
||||
DAT(0x06),
|
||||
DAT(0x2A),
|
||||
DAT(0xA0),
|
||||
DAT(0xA0),
|
||||
DAT(0x08),
|
||||
DAT(0x2C),
|
||||
DAT(0xA0),
|
||||
DAT(0xA0),
|
||||
|
||||
CMD(0xEB),
|
||||
DAT(0x00),
|
||||
DAT(0x01),
|
||||
DAT(0xE4),
|
||||
DAT(0xE4),
|
||||
DAT(0x44),
|
||||
DAT(0x00),
|
||||
DAT(0x40),
|
||||
|
||||
CMD(0xED),
|
||||
DAT(0xFF),
|
||||
DAT(0xF7),
|
||||
DAT(0x65),
|
||||
DAT(0x4F),
|
||||
DAT(0x0B),
|
||||
DAT(0xA1),
|
||||
DAT(0xCF),
|
||||
DAT(0xFF),
|
||||
DAT(0xFF),
|
||||
DAT(0xFC),
|
||||
DAT(0x1A),
|
||||
DAT(0xB0),
|
||||
DAT(0xF4),
|
||||
DAT(0x56),
|
||||
DAT(0x7F),
|
||||
DAT(0xFF),
|
||||
|
||||
|
||||
CMD(0xFF),
|
||||
DAT(0x77),
|
||||
DAT(0x01),
|
||||
DAT(0x00),
|
||||
DAT(0x00),
|
||||
DAT(0x00),
|
||||
|
||||
CMD(0x36), // //U&D Y-DIR
|
||||
DAT(0x10), //rotate 0: 0x00 : rotate 180 :0x10
|
||||
|
||||
CMD(0x3A),
|
||||
DAT(0x77),
|
||||
#if 0 //test pattern
|
||||
CMD(0xFF),
|
||||
DAT(0x77),
|
||||
DAT(0x01),
|
||||
DAT(0x00),
|
||||
DAT(0x00),
|
||||
DAT(0x12),
|
||||
|
||||
CMD(0xD1),
|
||||
DAT(0x81),
|
||||
|
||||
CMD(0xD2),
|
||||
DAT(0x06),
|
||||
#endif
|
||||
CMD(0x29),
|
||||
|
||||
// DLY(120),
|
||||
// CMD(0x23),
|
||||
// DLY(120),
|
||||
#endif
|
||||
END
|
||||
|
||||
};
|
||||
|
||||
|
||||
lcddev_t lcdstruct = {
|
||||
.name = "st7701s_mipi",
|
||||
.lcd_bus_type = LCD_BUS_MIPI,
|
||||
.bus_width = LCD_BUS_WIDTH_24,
|
||||
.color_mode = LCD_MODE_888,
|
||||
//.red_width = LCD_BUS_WIDTH_6,
|
||||
//.green_width = LCD_BUS_WIDTH_6,
|
||||
//.blue_width = LCD_BUS_WIDTH_6,
|
||||
.osd_scan_mode = LCD_ROTATE_270,
|
||||
.scan_mode =LCD_ROTATE_270,// LCD_ROTATE_90,//rotate 90
|
||||
.te_mode = 0xff,//te mode, 0xff:disable
|
||||
.colrarray = 0,//0:_RGB_ 1:_RBG_,2:_GBR_,3:_GRB_,4:_BRG_,5:_BGR_
|
||||
//f(wr) = source_clk/div/2
|
||||
//f(wr) >= screen_w * screen_h * clk_per_pixel * 60
|
||||
.pclk = DEFAULT_SYS_CLK/(DEFAULT_SYS_CLK/24000000),
|
||||
.even_order = 0,
|
||||
.odd_order = 0,
|
||||
.lcd_data_mode = (0<<31)|//data inversion mode
|
||||
(2<<24)|//data compress mode
|
||||
(1<<20)|//fifo mode
|
||||
(0<<17)|//output cycle 2 shift direction
|
||||
(0<<12)|//output cycle 2 shift bit
|
||||
(0<<11)|//output cycle 1 shift direction
|
||||
(0<<6)| //output cycle 1 shift bit
|
||||
(0<<5)| //output cycle 0 shift direction
|
||||
(8<<0), //output cycle 0 shift bit
|
||||
.screen_w = 480,
|
||||
.screen_h = 800,
|
||||
.video_x = 0,
|
||||
.video_y = 0,
|
||||
.video_w = 480,//480,
|
||||
.video_h = 800,//800,
|
||||
.osd_x = 0,
|
||||
.osd_y = 0,
|
||||
.osd_w = 480, // 0 : value will set to video_w , use for 4:3 LCD +16:9 sensor show UPDOWN BLACK
|
||||
.osd_h = 800, // 0 : value will set to video_h , use for 4:3 LCD +16:9 sensor show UPDOWN BLACK
|
||||
.init_table = st7701s_register_init_tab,
|
||||
.frame_table = NULL,
|
||||
.clk_per_pixel = 2,
|
||||
.lane_num = 2,
|
||||
.pclk_inv = 1,
|
||||
|
||||
.vlw = 2,
|
||||
.vbp = 2,
|
||||
.vfp = 10,
|
||||
|
||||
.hlw = 2,
|
||||
.hbp = 8,
|
||||
.hfp = 96,
|
||||
|
||||
|
||||
.de_inv = 0,
|
||||
.hs_inv = 0,
|
||||
.vs_inv = 0,
|
||||
|
||||
|
||||
.de_en = 1,
|
||||
.vs_en = 1,
|
||||
.hs_en = 1,
|
||||
|
||||
|
||||
.brightness = 1,
|
||||
.saturation = 7,
|
||||
.contrast = 7,
|
||||
.contra_index = 8,
|
||||
|
||||
.gamma_red = 3,
|
||||
.gamma_green=3,
|
||||
.gamma_blue=3,
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
206
sdk/lib/bus/spi/lcd/st7735.c
Normal file
206
sdk/lib/bus/spi/lcd/st7735.c
Normal file
@@ -0,0 +1,206 @@
|
||||
#include "lib/lcd/lcd.h"
|
||||
|
||||
#if LCD_ST7735_EN
|
||||
#define CMD(x) {LCD_CMD,x}
|
||||
#define DAT(x) {LCD_DAT,x}
|
||||
#define DLY(x) {DELAY_MS,x}
|
||||
#define END {LCD_TAB_END,LCD_TAB_END}
|
||||
|
||||
uint8_t st7735_firt_send[][2]={
|
||||
CMD( 0x2A),
|
||||
DAT( 0x00),
|
||||
DAT( 0x00),
|
||||
DAT( 0x00),
|
||||
//DAT( 0x7F),
|
||||
DAT( 0x83),
|
||||
|
||||
CMD( 0x2B),
|
||||
DAT( 0x00),
|
||||
DAT( 0x00),
|
||||
DAT( 0x00),
|
||||
//DAT( 0x9F),
|
||||
DAT( 0xA1),
|
||||
// CMD( 0x2C),
|
||||
END
|
||||
};
|
||||
|
||||
|
||||
uint8_t st7735_register_init_tab[][2] = {
|
||||
CMD( 0x11),
|
||||
DLY( 120 ),
|
||||
CMD( 0xB1),
|
||||
DAT( 0x05),
|
||||
DAT( 0x3C),
|
||||
DAT( 0x3C),
|
||||
|
||||
CMD( 0xB2),
|
||||
DAT( 0x05),
|
||||
DAT( 0x3C),
|
||||
DAT( 0x3C),
|
||||
|
||||
CMD( 0xB3),
|
||||
DAT( 0x05),
|
||||
DAT( 0x3C),
|
||||
DAT( 0x3C),
|
||||
DAT( 0x05),
|
||||
DAT( 0x3C),
|
||||
DAT( 0x3C),
|
||||
|
||||
CMD( 0xB4),
|
||||
DAT( 0x03),
|
||||
|
||||
CMD( 0xC0),
|
||||
DAT( 0x28),
|
||||
DAT( 0x08),
|
||||
DAT( 0x04),
|
||||
|
||||
CMD( 0xC1),
|
||||
DAT( 0xC0),
|
||||
|
||||
CMD( 0xC2),
|
||||
DAT( 0x0D),
|
||||
DAT( 0x00),
|
||||
|
||||
CMD( 0xC3),
|
||||
DAT( 0x8D),
|
||||
DAT( 0x2A),
|
||||
|
||||
CMD( 0xC4),
|
||||
DAT( 0x8D),
|
||||
DAT( 0xEE),
|
||||
|
||||
CMD( 0xC5),
|
||||
DAT( 0x1A),
|
||||
|
||||
CMD( 0x36),
|
||||
DAT( 0xC0),
|
||||
|
||||
CMD( 0xE0),
|
||||
DAT( 0x04),
|
||||
DAT( 0x22),
|
||||
DAT( 0x07),
|
||||
DAT( 0x0A),
|
||||
DAT( 0x2E),
|
||||
DAT( 0x30),
|
||||
DAT( 0x25),
|
||||
DAT( 0x2A),
|
||||
DAT( 0x28),
|
||||
DAT( 0x26),
|
||||
DAT( 0x2E),
|
||||
DAT( 0x3A),
|
||||
DAT( 0x00),
|
||||
DAT( 0x01),
|
||||
DAT( 0x03),
|
||||
DAT( 0x13),
|
||||
|
||||
CMD( 0xE1),
|
||||
DAT( 0x04),
|
||||
DAT( 0x16),
|
||||
DAT( 0x06),
|
||||
DAT( 0x0D),
|
||||
DAT( 0x2D),
|
||||
DAT( 0x26),
|
||||
DAT( 0x23),
|
||||
DAT( 0x27),
|
||||
DAT( 0x27),
|
||||
DAT( 0x25),
|
||||
DAT( 0x2D),
|
||||
DAT( 0x3B),
|
||||
DAT( 0x00),
|
||||
DAT( 0x01),
|
||||
DAT( 0x04),
|
||||
DAT( 0x13),
|
||||
|
||||
CMD( 0x3A),
|
||||
DAT( 0x05),
|
||||
|
||||
CMD( 0x29),
|
||||
|
||||
CMD( 0x2A),
|
||||
DAT( 0x00),
|
||||
DAT( 0x00),
|
||||
DAT( 0x00),
|
||||
//DAT( 0x7F),
|
||||
DAT( 0x83),
|
||||
|
||||
CMD( 0x2B),
|
||||
DAT( 0x00),
|
||||
DAT( 0x00),
|
||||
DAT( 0x00),
|
||||
//DAT( 0x9F),
|
||||
DAT( 0xA1),
|
||||
CMD( 0x2C),
|
||||
|
||||
END
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
lcddev_t lcdstruct = {
|
||||
.name = "st7735",
|
||||
.lcd_bus_type = LCD_BUS_SPI4,
|
||||
.bus_width = LCD_BUS_WIDTH_1,
|
||||
.color_mode = LCD_MODE_565,
|
||||
.osd_scan_mode = LCD_ROTATE_90,
|
||||
.scan_mode = LCD_ROTATE_90,//rotate 90
|
||||
.te_mode = 0xff,//te mode, 0xff:disable
|
||||
.colrarray = 0,//0:_RGB_ 1:_RBG_,2:_GBR_,3:_GRB_,4:_BRG_,5:_BGR_
|
||||
//f(wr) = source_clk/div/2
|
||||
//f(wr) >= screen_w * screen_h * clk_per_pixel * 60
|
||||
.pclk = 24000000,
|
||||
.even_order = 0,
|
||||
.odd_order = 0,
|
||||
.lcd_data_mode = (0<<31)|//data inversion mode
|
||||
(2<<24)|//data compress mode
|
||||
(1<<20)|//fifo mode
|
||||
(0<<17)|//output cycle 2 shift direction
|
||||
(0<<12)|//output cycle 2 shift bit
|
||||
(0<<11)|//output cycle 1 shift direction
|
||||
(0<<6)| //output cycle 1 shift bit
|
||||
(0<<5)| //output cycle 0 shift direction
|
||||
(8<<0), //output cycle 0 shift bit
|
||||
.screen_w = 132,
|
||||
.screen_h = 162,
|
||||
.video_x = 0,
|
||||
.video_y = 0,
|
||||
.video_w = 132,
|
||||
.video_h = 162,
|
||||
.osd_x = 0,
|
||||
.osd_y = 0,
|
||||
.osd_w = 132, // 0 : value will set to video_w , use for 4:3 LCD +16:9 sensor show UPDOWN BLACK
|
||||
.osd_h = 162, // 0 : value will set to video_h , use for 4:3 LCD +16:9 sensor show UPDOWN BLACK
|
||||
.init_table = st7735_register_init_tab,
|
||||
.frame_table = st7735_firt_send,
|
||||
.clk_per_pixel = 2,
|
||||
|
||||
.pclk_inv = 1,
|
||||
|
||||
|
||||
.vlw = 0,// 0,
|
||||
.vbp = 0,// 12,
|
||||
.vfp = 0,// 12,
|
||||
.hlw = 0,// 1,
|
||||
.hbp = 0,//14,
|
||||
.hfp = 0,//13,
|
||||
|
||||
|
||||
.de_en = 1,
|
||||
.vs_en = 1,
|
||||
.hs_en = 1,
|
||||
.de_inv = 0xff,
|
||||
.hs_inv = 0,
|
||||
.vs_inv = 0,
|
||||
|
||||
.brightness = 1,
|
||||
.saturation = 7,
|
||||
.contrast = 7,
|
||||
.contra_index = 8,
|
||||
|
||||
.gamma_red = 3,
|
||||
.gamma_green=3,
|
||||
.gamma_blue=3,
|
||||
|
||||
};
|
||||
#endif
|
||||
172
sdk/lib/bus/spi/lcd/st7789v.c
Normal file
172
sdk/lib/bus/spi/lcd/st7789v.c
Normal file
@@ -0,0 +1,172 @@
|
||||
#include "lib/lcd/lcd.h"
|
||||
|
||||
#if LCD_ST7789V_EN
|
||||
|
||||
#define CMD(x) {LCD_CMD,x}
|
||||
#define DAT(x) {LCD_DAT,x}
|
||||
#define DLY(x) {DELAY_MS,x}
|
||||
#define END {LCD_TAB_END,LCD_TAB_END}
|
||||
|
||||
uint8_t st7789_register_init_tab[][2] = {
|
||||
|
||||
//Sleep Out
|
||||
CMD( 0x11),
|
||||
DLY( 0x64),
|
||||
//TEON,and Not consist of HBlanking
|
||||
CMD( 0x35),
|
||||
DAT( 0x00),
|
||||
|
||||
//Set Tear Scanline,when display 0th line,the TE output
|
||||
CMD( 0x44),
|
||||
DAT( 0x00),
|
||||
DAT( 0x00),
|
||||
|
||||
//65K-color RGB interface,and 18bit/pixel
|
||||
CMD( 0x3A),
|
||||
DAT( 0x66), // 18bit/pixel DB[6:4]
|
||||
|
||||
CMD( 0x21),
|
||||
|
||||
CMD( 0xB0),
|
||||
DAT( 0x11), //RGB mode
|
||||
DAT( 0xF4), //6bit bus width 666 mode set RIM=1
|
||||
|
||||
|
||||
CMD( 0xB1),
|
||||
DAT( 0xe0), //RGB hv mode,vsync low active,hsync low active
|
||||
DAT( 0x05), //vbp
|
||||
DAT( 0x14), //hbp
|
||||
|
||||
|
||||
//Porch Setting(set VBlank),back porch 8,front porch 8
|
||||
CMD( 0xB2),
|
||||
DAT( 0x08), //bpa
|
||||
DAT( 0x08),
|
||||
DAT( 0x00),
|
||||
DAT( 0x22),
|
||||
DAT( 0x22),
|
||||
|
||||
//Gate Control
|
||||
CMD( 0xB7),
|
||||
DAT( 0x35),
|
||||
|
||||
//-----------------Power Setting------------------
|
||||
CMD( 0xBB),
|
||||
DAT( 0x27),
|
||||
|
||||
CMD( 0xC0),
|
||||
DAT( 0x2C),
|
||||
|
||||
CMD( 0xC2),
|
||||
DAT( 0x01),
|
||||
|
||||
CMD( 0xC6),
|
||||
DAT( 0x18),
|
||||
|
||||
CMD( 0xC6),
|
||||
DAT( 0x0F),
|
||||
|
||||
CMD( 0xC4),
|
||||
DAT( 0x20),
|
||||
|
||||
CMD( 0xC3),
|
||||
DAT( 0x10),
|
||||
|
||||
CMD( 0xCA),
|
||||
DAT( 0x0F),
|
||||
|
||||
CMD( 0xD0),
|
||||
DAT( 0xA4),
|
||||
DAT( 0xA1),
|
||||
|
||||
//-----------------Gamma Setting--------------------
|
||||
CMD( 0xE0),
|
||||
DAT( 0xD0),
|
||||
DAT( 0x00),
|
||||
DAT( 0x03),
|
||||
DAT( 0x09),
|
||||
DAT( 0x13),
|
||||
DAT( 0x1C),
|
||||
DAT( 0x3A),
|
||||
DAT( 0x55),
|
||||
DAT( 0x48),
|
||||
DAT( 0x18),
|
||||
DAT( 0x12),
|
||||
DAT( 0x0E),
|
||||
DAT( 0x20),
|
||||
DAT( 0x1E),
|
||||
|
||||
CMD( 0xE1),
|
||||
DAT( 0xD0),
|
||||
DAT( 0x00),
|
||||
DAT( 0x03),
|
||||
DAT( 0x09),
|
||||
DAT( 0x05),
|
||||
DAT( 0x25),
|
||||
DAT( 0x3A),
|
||||
DAT( 0x55),
|
||||
DAT( 0x50),
|
||||
DAT( 0x3D),
|
||||
DAT( 0x1C),
|
||||
DAT( 0x1D),
|
||||
DAT( 0x21),
|
||||
DAT( 0x1E),
|
||||
|
||||
|
||||
CMD( 0x36),
|
||||
DAT( 0xC0),
|
||||
|
||||
DLY( 0X0F),
|
||||
|
||||
CMD( 0x11),
|
||||
DLY( 0x64),
|
||||
//Display on
|
||||
CMD( 0x29),
|
||||
DLY( 0X05),
|
||||
//Memory Write
|
||||
END
|
||||
};
|
||||
|
||||
lcddev_t lcdstruct = {
|
||||
.name = "st7789",
|
||||
.lcd_bus_type = LCD_BUS_RGB,
|
||||
.bus_width = LCD_BUS_WIDTH_6,
|
||||
.color_mode = LCD_MODE_666,
|
||||
.scan_mode = LCD_ROTATE_90,//rotate 90
|
||||
.te_mode = 0xff,//te mode, 0xff:disable
|
||||
.colrarray = 0,//0:_RGB_ 1:_RBG_,2:_GBR_,3:_GRB_,4:_BRG_,5:_BGR_
|
||||
.pclk = 15000000,
|
||||
.even_order = 0,
|
||||
.odd_order = 0,
|
||||
.screen_w = 240,
|
||||
.screen_h = 320,
|
||||
.video_x = 0,
|
||||
.video_y = 0,
|
||||
.video_w = 240,
|
||||
.video_h = 320,
|
||||
.osd_x = 0,
|
||||
.osd_y = 0,
|
||||
.osd_w = 240, // 0 : value will set to video_w , use for 4:3 LCD +16:9 sensor show UPDOWN BLACK
|
||||
.osd_h = 320, // 0 : value will set to video_h , use for 4:3 LCD +16:9 sensor show UPDOWN BLACK
|
||||
.init_table = st7789_register_init_tab,
|
||||
|
||||
.pclk_inv = 1,
|
||||
|
||||
.vlw = 1,// 0,
|
||||
.vbp = 0x04,// 12,
|
||||
.vfp = 8,// 12,
|
||||
.hlw = 4,// 1,
|
||||
.hbp = 0x3c,//14,
|
||||
.hfp = 12,//13,
|
||||
|
||||
.de_en = 1,
|
||||
.vs_en = 1,
|
||||
.hs_en = 1,
|
||||
.de_inv = 0,
|
||||
.hs_inv = 0,
|
||||
.vs_inv = 0,
|
||||
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
195
sdk/lib/bus/spi/lcd/st7789v_mcu.c
Normal file
195
sdk/lib/bus/spi/lcd/st7789v_mcu.c
Normal file
@@ -0,0 +1,195 @@
|
||||
#include "lib/lcd/lcd.h"
|
||||
|
||||
#if LCD_ST7789V_MCU_EN
|
||||
|
||||
#define CMD(x) {LCD_CMD,x}
|
||||
#define DAT(x) {LCD_DAT,x}
|
||||
#define DLY(x) {DELAY_MS,x}
|
||||
#define END {LCD_TAB_END,LCD_TAB_END}
|
||||
|
||||
uint8_t st7789_register_init_tab[][2] = {
|
||||
|
||||
//Sleep Out
|
||||
CMD( 0x11),
|
||||
DLY( 0x64),
|
||||
//TEON,and Not consist of HBlanking
|
||||
CMD( 0x35),
|
||||
DAT( 0x00),
|
||||
|
||||
//Set Tear Scanline,when display 0th line,the TE output
|
||||
CMD( 0x44),
|
||||
DAT( 0x00),
|
||||
DAT( 0x00),
|
||||
|
||||
//65K-color RGB interface,and 18bit/pixel
|
||||
CMD( 0x3A),
|
||||
DAT( 0x05), // 16bit/pixel
|
||||
|
||||
CMD( 0x21),
|
||||
#if 0
|
||||
CMD( 0xB0),
|
||||
DAT( 0x00), //RGB mode
|
||||
DAT( 0xF4), //6bit bus width 666 mode
|
||||
#endif
|
||||
|
||||
CMD( 0xB1),
|
||||
DAT( 0x40), //RGB hv mode,vsync low active,hsync low active
|
||||
DAT( 0x02), //vbp
|
||||
DAT( 0x14), //hbp
|
||||
|
||||
|
||||
//Porch Setting(set VBlank),back porch 8,front porch 8
|
||||
CMD( 0xB2),
|
||||
DAT( 0x08), //bpa
|
||||
DAT( 0x08),
|
||||
DAT( 0x00),
|
||||
DAT( 0x22),
|
||||
DAT( 0x22),
|
||||
|
||||
//Gate Control
|
||||
CMD( 0xB7),
|
||||
DAT( 0x35),
|
||||
|
||||
//-----------------Power Setting------------------
|
||||
CMD( 0xBB),
|
||||
DAT( 0x27),
|
||||
|
||||
CMD( 0xC0),
|
||||
DAT( 0x2C),
|
||||
|
||||
CMD( 0xC2),
|
||||
DAT( 0x01),
|
||||
|
||||
CMD( 0xC6),
|
||||
DAT( 0x18),
|
||||
|
||||
CMD( 0xC6),
|
||||
DAT( 0x0F),
|
||||
|
||||
CMD( 0xC4),
|
||||
DAT( 0x20),
|
||||
|
||||
CMD( 0xC3),
|
||||
DAT( 0x10),
|
||||
|
||||
CMD( 0xCA),
|
||||
DAT( 0x0F),
|
||||
|
||||
CMD( 0xD0),
|
||||
DAT( 0xA4),
|
||||
DAT( 0xA1),
|
||||
|
||||
//-----------------Gamma Setting--------------------
|
||||
CMD( 0xE0),
|
||||
DAT( 0xD0),
|
||||
DAT( 0x00),
|
||||
DAT( 0x03),
|
||||
DAT( 0x09),
|
||||
DAT( 0x13),
|
||||
DAT( 0x1C),
|
||||
DAT( 0x3A),
|
||||
DAT( 0x55),
|
||||
DAT( 0x48),
|
||||
DAT( 0x18),
|
||||
DAT( 0x12),
|
||||
DAT( 0x0E),
|
||||
DAT( 0x20),
|
||||
DAT( 0x1E),
|
||||
|
||||
CMD( 0xE1),
|
||||
DAT( 0xD0),
|
||||
DAT( 0x00),
|
||||
DAT( 0x03),
|
||||
DAT( 0x09),
|
||||
DAT( 0x05),
|
||||
DAT( 0x25),
|
||||
DAT( 0x3A),
|
||||
DAT( 0x55),
|
||||
DAT( 0x50),
|
||||
DAT( 0x3D),
|
||||
DAT( 0x1C),
|
||||
DAT( 0x1D),
|
||||
DAT( 0x21),
|
||||
DAT( 0x1E),
|
||||
|
||||
|
||||
CMD( 0x36),
|
||||
DAT( 0x00),
|
||||
|
||||
DLY( 0X0F),
|
||||
|
||||
|
||||
CMD(0x2a),
|
||||
DAT(0x00),
|
||||
DAT(0x00),
|
||||
DAT(0x00),
|
||||
DAT(0xef),
|
||||
|
||||
|
||||
CMD(0x2b),
|
||||
DAT(0x00),
|
||||
DAT(0x00),
|
||||
DAT(0x01),
|
||||
DAT(0x3f),
|
||||
|
||||
|
||||
|
||||
CMD( 0x11),
|
||||
DLY( 0x64),
|
||||
//Display on
|
||||
CMD( 0x29),
|
||||
DLY( 0X05),
|
||||
//Memory Write
|
||||
CMD(0x2c), //启动写入
|
||||
END
|
||||
};
|
||||
|
||||
lcddev_t lcdstruct = {
|
||||
.name = "st7789",
|
||||
.lcd_bus_type = LCD_BUS_I80,
|
||||
.bus_width = LCD_BUS_WIDTH_8,
|
||||
.color_mode = LCD_MODE_565,
|
||||
.scan_mode = LCD_ROTATE_90,//rotate 90
|
||||
.te_mode = 0xff,//te mode, 0xff:disable
|
||||
.colrarray = 0,//0:_RGB_ 1:_RBG_,2:_GBR_,3:_GRB_,4:_BRG_,5:_BGR_
|
||||
.pclk = 10000000,
|
||||
.even_order = 0,
|
||||
.odd_order = 0,
|
||||
.screen_w = 240,
|
||||
.screen_h = 320,
|
||||
.video_x = 0,
|
||||
.video_y = 0,
|
||||
.video_w = 240,
|
||||
.video_h = 320,
|
||||
.osd_x = 0,
|
||||
.osd_y = 0,
|
||||
.osd_w = 240, // 0 : value will set to video_w , use for 4:3 LCD +16:9 sensor show UPDOWN BLACK
|
||||
.osd_h = 320, // 0 : value will set to video_h , use for 4:3 LCD +16:9 sensor show UPDOWN BLACK
|
||||
.init_table = st7789_register_init_tab,
|
||||
|
||||
.pclk_inv = 0,
|
||||
|
||||
.vlw = 0,// 0,
|
||||
.vbp = 0,// 12,
|
||||
.vfp = 0,// 12,
|
||||
.hlw = 0,// 1,
|
||||
.hbp = 0,//14,
|
||||
.hfp = 0,//13,
|
||||
|
||||
.de_en = 0,
|
||||
.vs_en = 0,
|
||||
.hs_en = 0,
|
||||
.de_inv = 0,
|
||||
.hs_inv = 0,
|
||||
.vs_inv = 0,
|
||||
|
||||
|
||||
|
||||
.signal_config.mcu.resev = 0,
|
||||
.signal_config.mcu.wr_inv = 1,
|
||||
.signal_config.mcu.rd_inv = 0,
|
||||
.signal_config.mcu.cs_inv = 0,
|
||||
.signal_config.mcu.dc_inv = 1,
|
||||
|
||||
};
|
||||
#endif
|
||||
353
sdk/lib/bus/spi/lcd/st77903.c
Normal file
353
sdk/lib/bus/spi/lcd/st77903.c
Normal file
@@ -0,0 +1,353 @@
|
||||
#include "lib/lcd/lcd.h"
|
||||
|
||||
|
||||
#if LCD_ST77903_EN
|
||||
|
||||
#define CMD(x) {LCD_CMD,x}
|
||||
#define DAT(x) {LCD_DAT,x}
|
||||
#define DLY(x) {DELAY_MS,x}
|
||||
#define END {LCD_TAB_END,LCD_TAB_END}
|
||||
|
||||
uint8_t st77903_firt_send[][2]={
|
||||
// CMD( 0x2A),
|
||||
// DAT( 0x00),
|
||||
// DAT( 0x00),
|
||||
// DAT( 0x01),
|
||||
// DAT( 0x90),
|
||||
|
||||
// CMD( 0x2B),
|
||||
// DAT( 0x00),
|
||||
// DAT( 0x00),
|
||||
// DAT( 0x01),
|
||||
// DAT( 0x90),
|
||||
|
||||
CMD( 0x2C),
|
||||
END
|
||||
};
|
||||
|
||||
|
||||
uint8_t st77903_register_init_tab[][2] = {
|
||||
#if 1
|
||||
//DLY( 40 ),
|
||||
CMD( 0xf0),
|
||||
DAT( 0xc3),
|
||||
CMD( 0xf0),
|
||||
DAT( 0x96),
|
||||
CMD( 0xf0),
|
||||
DAT( 0xa5),
|
||||
CMD( 0xe9),
|
||||
DAT( 0x20),
|
||||
CMD( 0xe7),
|
||||
DAT( 0x80),
|
||||
DAT( 0x77),
|
||||
DAT( 0x1f),
|
||||
DAT( 0xcc),
|
||||
CMD( 0xc1),
|
||||
DAT( 0x77),
|
||||
DAT( 0x07),
|
||||
DAT( 0xcf),
|
||||
DAT( 0x16),
|
||||
CMD( 0xc2),
|
||||
DAT( 0x77),
|
||||
DAT( 0x07),
|
||||
DAT( 0xcf),
|
||||
DAT( 0x16),
|
||||
CMD( 0xc3),
|
||||
DAT( 0x22),
|
||||
DAT( 0x02),
|
||||
DAT( 0x22),
|
||||
DAT( 0x04),
|
||||
CMD( 0xc4),
|
||||
DAT( 0x22),
|
||||
DAT( 0x02),
|
||||
DAT( 0x22),
|
||||
DAT( 0x04),
|
||||
CMD( 0xc5),
|
||||
DAT( 0xed),
|
||||
CMD( 0xe0),
|
||||
DAT( 0x87),
|
||||
DAT( 0x09),
|
||||
DAT( 0x0c),
|
||||
DAT( 0x06),
|
||||
DAT( 0x05),
|
||||
DAT( 0x03),
|
||||
DAT( 0x29),
|
||||
DAT( 0x32),
|
||||
DAT( 0x49),
|
||||
DAT( 0x0f),
|
||||
DAT( 0x1b),
|
||||
DAT( 0x17),
|
||||
DAT( 0x2a),
|
||||
DAT( 0x2f),
|
||||
CMD( 0xe1),
|
||||
DAT( 0x87),
|
||||
DAT( 0x09),
|
||||
DAT( 0x0c),
|
||||
DAT( 0x06),
|
||||
DAT( 0x05),
|
||||
DAT( 0x03),
|
||||
DAT( 0x29),
|
||||
DAT( 0x32),
|
||||
DAT( 0x49),
|
||||
DAT( 0x0f),
|
||||
DAT( 0x1b),
|
||||
DAT( 0x17),
|
||||
DAT( 0x2a),
|
||||
DAT( 0x2f),
|
||||
CMD( 0xe5),
|
||||
DAT( 0xbe),
|
||||
DAT( 0xf5),
|
||||
DAT( 0xb1),
|
||||
DAT( 0x22),
|
||||
DAT( 0x22),
|
||||
DAT( 0x25),
|
||||
DAT( 0x10),
|
||||
DAT( 0x22),
|
||||
DAT( 0x22),
|
||||
DAT( 0x22),
|
||||
DAT( 0x22),
|
||||
DAT( 0x22),
|
||||
DAT( 0x22),
|
||||
DAT( 0x22),
|
||||
CMD( 0xe6),
|
||||
DAT( 0xbe),
|
||||
DAT( 0xf5),
|
||||
DAT( 0xb1),
|
||||
DAT( 0x22),
|
||||
DAT( 0x22),
|
||||
DAT( 0x25),
|
||||
DAT( 0x10),
|
||||
DAT( 0x22),
|
||||
DAT( 0x22),
|
||||
DAT( 0x22),
|
||||
DAT( 0x22),
|
||||
DAT( 0x22),
|
||||
DAT( 0x22),
|
||||
DAT( 0x22),
|
||||
CMD( 0xec),
|
||||
DAT( 0x40),
|
||||
DAT( 0x03),
|
||||
CMD( 0xb2),
|
||||
DAT( 0x00),
|
||||
CMD( 0xb3),
|
||||
DAT( 0x01),
|
||||
CMD( 0xb4),
|
||||
DAT( 0x00),
|
||||
CMD( 0xb5),
|
||||
DAT( 0x00),
|
||||
DAT( 0x08),
|
||||
DAT( 0x00),
|
||||
DAT( 0x08),
|
||||
|
||||
CMD(0xb6), DAT(0xc7), DAT(0x31),
|
||||
|
||||
|
||||
CMD( 0xa5),
|
||||
DAT( 0x00),
|
||||
DAT( 0x00),
|
||||
DAT( 0x00),
|
||||
DAT( 0x00),
|
||||
DAT( 0x00),
|
||||
DAT( 0x15),
|
||||
DAT( 0x2a),
|
||||
DAT( 0x8a),
|
||||
DAT( 0x02),
|
||||
CMD( 0xa6),
|
||||
DAT( 0x00),
|
||||
DAT( 0x00),
|
||||
DAT( 0x00),
|
||||
DAT( 0x00),
|
||||
DAT( 0x00),
|
||||
DAT( 0x15),
|
||||
DAT( 0x2a),
|
||||
DAT( 0x8a),
|
||||
DAT( 0x02),
|
||||
CMD( 0xba),
|
||||
DAT( 0x0a),
|
||||
DAT( 0x5a),
|
||||
DAT( 0x23),
|
||||
DAT( 0x10),
|
||||
DAT( 0x25),
|
||||
DAT( 0x02),
|
||||
DAT( 0x00),
|
||||
CMD( 0xbb),
|
||||
DAT( 0x00),
|
||||
DAT( 0x30),
|
||||
DAT( 0x00),
|
||||
DAT( 0x2c),
|
||||
DAT( 0x82),
|
||||
DAT( 0x87),
|
||||
DAT( 0x18),
|
||||
DAT( 0x00),
|
||||
CMD( 0xbc),
|
||||
DAT( 0x00),
|
||||
DAT( 0x30),
|
||||
DAT( 0x00),
|
||||
DAT( 0x2c),
|
||||
DAT( 0x82),
|
||||
DAT( 0x87),
|
||||
DAT( 0x18),
|
||||
DAT( 0x00),
|
||||
CMD( 0xbd),
|
||||
DAT( 0xa1),
|
||||
DAT( 0xb2),
|
||||
DAT( 0x2b),
|
||||
DAT( 0x1a),
|
||||
DAT( 0x56),
|
||||
DAT( 0x43),
|
||||
DAT( 0x34),
|
||||
DAT( 0x65),
|
||||
DAT( 0xff),
|
||||
DAT( 0xff),
|
||||
DAT( 0x0f),
|
||||
CMD( 0x35),
|
||||
DAT( 0x00),
|
||||
CMD( 0x36),
|
||||
DAT( 0x0c),
|
||||
CMD( 0x3a),
|
||||
DAT( 0x05),
|
||||
CMD( 0x21),
|
||||
CMD( 0x11),
|
||||
DLY( 50 ),
|
||||
CMD( 0x29),
|
||||
DLY( 10 ),
|
||||
#if 0
|
||||
// CMD( 0x2A),
|
||||
// DAT( 0x00),
|
||||
// DAT( 0x00),
|
||||
// DAT( 0x01),
|
||||
// DAT( 0x90),
|
||||
|
||||
// CMD( 0x2B),
|
||||
// DAT( 0x00),
|
||||
// DAT( 0x00),
|
||||
// DAT( 0x01),
|
||||
// DAT( 0x90),
|
||||
|
||||
// CMD( 0x2C),
|
||||
|
||||
CMD( 0xf0),
|
||||
DAT( 0xa5),
|
||||
CMD( 0xb0),
|
||||
DAT( 0xa5),
|
||||
CMD( 0xcc),
|
||||
DAT( 0x40),
|
||||
DAT( 0x00),
|
||||
DAT( 0x3f),
|
||||
|
||||
DAT( 0x12),
|
||||
DAT( 0x06),
|
||||
DAT( 0x06),
|
||||
DAT( 0x48),
|
||||
DAT( 0x46),
|
||||
DAT( 0x00),
|
||||
|
||||
#endif
|
||||
#else
|
||||
CMD(0xf0), DAT(0xc3),
|
||||
CMD(0xf0), DAT(0x96),
|
||||
CMD(0xf0), DAT(0xa5),
|
||||
CMD(0xe9), DAT(0x20),
|
||||
CMD(0xe7), DAT(0x80), DAT(0x77),DAT(0x1f),DAT(0xcc),
|
||||
CMD(0xc1), DAT(0x77), DAT(0x07),DAT(0xc2),DAT(0x07),
|
||||
CMD(0xc2), DAT(0x77), DAT(0x07),DAT(0xc2),DAT(0x07),
|
||||
CMD(0xc3), DAT(0x22), DAT(0x02),DAT(0x22),DAT(0x04),
|
||||
CMD(0xc4), DAT(0x22), DAT(0x02),DAT(0x22),DAT(0x04),
|
||||
CMD(0xc5), DAT(0x71),
|
||||
CMD(0xe0), DAT(0x87), DAT(0x09),DAT(0x0c),DAT(0x06),DAT(0x05),DAT(0x03),DAT(0x29),DAT(0x32),DAT(0x49),DAT(0x0f),DAT(0x1b),DAT(0x17),DAT(0x2a),DAT(0x2f),
|
||||
CMD(0xe1), DAT(0x87), DAT(0x09),DAT(0x0c),DAT(0x06),DAT(0x05),DAT(0x03),DAT(0x29),DAT(0x32),DAT(0x49),DAT(0x0f),DAT(0x1b),DAT(0x17),DAT(0x2a),DAT(0x2f),
|
||||
CMD(0xe5), DAT(0xb2), DAT(0xf5),DAT(0xbd),DAT(0x24),DAT(0x22),DAT(0x25),DAT(0x10),DAT(0x22),DAT(0x22),DAT(0x22),DAT(0x22),DAT(0x22),DAT(0x22),DAT(0x22),
|
||||
CMD(0xe6), DAT(0xb2), DAT(0xf5),DAT(0xbd),DAT(0x24),DAT(0x22),DAT(0x25),DAT(0x10),DAT(0x22),DAT(0x22),DAT(0x22),DAT(0x22),DAT(0x22),DAT(0x22),DAT(0x22),
|
||||
CMD(0xec), DAT(0x40), DAT(0x03),
|
||||
CMD(0x36), DAT(0x0c),
|
||||
CMD(0x3a), DAT(0x05),
|
||||
CMD(0xb2), DAT(0x00),
|
||||
CMD(0xb3), DAT(0x01),
|
||||
CMD(0xb4), DAT(0x00),
|
||||
CMD(0xb5), DAT(0x00), DAT(0x08),DAT(0x00),DAT(0x08),
|
||||
CMD(0xb6), DAT(0xc7), DAT(0x31),
|
||||
CMD(0xa5), DAT(0x00), DAT(0x00),DAT(0x00),DAT(0x00),DAT(0x20),DAT(0x15),DAT(0x2a),DAT(0x8a),DAT(0x02),
|
||||
CMD(0xa6), DAT(0x00), DAT(0x00),DAT(0x00),DAT(0x00),DAT(0x20),DAT(0x15),DAT(0x2a),DAT(0x8a),DAT(0x02),
|
||||
CMD(0xba), DAT(0x0a), DAT(0x5a),DAT(0x23),DAT(0x10),DAT(0x25),DAT(0x02),DAT(0x00),
|
||||
CMD(0xbb), DAT(0x00), DAT(0x30),DAT(0x00),DAT(0x29),DAT(0x88),DAT(0x87),DAT(0x18),DAT(0x00),
|
||||
CMD(0xbc), DAT(0x00), DAT(0x30),DAT(0x00),DAT(0x29),DAT(0x88),DAT(0x87),DAT(0x18),DAT(0x00),
|
||||
CMD(0xbd), DAT(0xa1), DAT(0xb2),DAT(0x2b),DAT(0x1a),DAT(0x56),DAT(0x43),DAT(0x34),DAT(0x65),DAT(0xff),DAT(0xff),DAT(0x0f),
|
||||
CMD(0x35), DAT(0x00),
|
||||
CMD(0x21),
|
||||
CMD(0x11),
|
||||
DLY(120 ),
|
||||
CMD(0x29),
|
||||
DLY(120 ),
|
||||
CMD(0xf0),
|
||||
#endif
|
||||
//DLY(40),
|
||||
|
||||
END
|
||||
};
|
||||
|
||||
lcddev_t lcdstruct = {
|
||||
.name = "st77903",
|
||||
.lcd_bus_type = LCD_BUS_QSPI,
|
||||
.bus_width = LCD_BUS_WIDTH_4, //DE: BUS4 DB:BUS2 D8:BUS1
|
||||
.color_mode = LCD_MODE_565,
|
||||
.scan_mode = LCD_ROTATE_90,//rotate 90
|
||||
.te_mode = 0xff,//te mode, 0xff:disable
|
||||
.colrarray = 0,//0:_RGB_ 1:_RBG_,2:_GBR_,3:_GRB_,4:_BRG_,5:_BGR_
|
||||
//f(wr) = source_clk/div/2
|
||||
//f(wr) >= screen_w * screen_h * clk_per_pixel * 60
|
||||
.pclk = 24000000,
|
||||
.even_order = 0,
|
||||
.odd_order = 0,
|
||||
.lcd_data_mode = (0<<31)|//data inversion mode
|
||||
(2<<24)|//data compress mode
|
||||
(1<<20)|//fifo mode
|
||||
(0<<17)|//output cycle 2 shift direction
|
||||
(0<<12)|//output cycle 2 shift bit
|
||||
(0<<11)|//output cycle 1 shift direction
|
||||
(0<<6)| //output cycle 1 shift bit
|
||||
(0<<5)| //output cycle 0 shift direction
|
||||
(8<<0), //output cycle 0 shift bit
|
||||
.screen_w = 400,
|
||||
.screen_h = 400,
|
||||
.video_x = 0,
|
||||
.video_y = 0,
|
||||
.video_w = 400,
|
||||
.video_h = 400,
|
||||
.osd_x = 0,
|
||||
.osd_y = 0,
|
||||
.osd_w = 0, // 0 : value will set to video_w , use for 4:3 LCD +16:9 sensor show UPDOWN BLACK
|
||||
.osd_h = 0, // 0 : value will set to video_h , use for 4:3 LCD +16:9 sensor show UPDOWN BLACK
|
||||
.init_table = st77903_register_init_tab,
|
||||
.frame_table = NULL,
|
||||
|
||||
.clk_per_pixel = 2,
|
||||
|
||||
.pclk_inv = 1,
|
||||
|
||||
|
||||
.vlw = 1,// 0,
|
||||
.vbp = 6,// 12,
|
||||
.vfp = 6,// 12,
|
||||
.hlw = 0,// 1,
|
||||
.hbp = 0,//14,
|
||||
.hfp = 0,//13,
|
||||
|
||||
|
||||
.de_en = 1,
|
||||
.vs_en = 1,
|
||||
.hs_en = 1,
|
||||
.de_inv = 0xff,
|
||||
.hs_inv = 0,
|
||||
.vs_inv = 0,
|
||||
|
||||
.brightness = 1,
|
||||
.saturation = 7,
|
||||
.contrast = 7,
|
||||
.contra_index = 8,
|
||||
|
||||
.gamma_red = 3,
|
||||
.gamma_green=3,
|
||||
.gamma_blue=3,
|
||||
|
||||
};
|
||||
#endif
|
||||
176
sdk/lib/bus/spi/lcd/st7796.c
Normal file
176
sdk/lib/bus/spi/lcd/st7796.c
Normal file
@@ -0,0 +1,176 @@
|
||||
#include "lib/lcd/lcd.h"
|
||||
|
||||
|
||||
#if LCD_ST7796_EN
|
||||
#define CMD(x) {LCD_CMD,x}
|
||||
#define DAT(x) {LCD_DAT,x}
|
||||
#define DLY(x) {DELAY_MS,x}
|
||||
#define END {LCD_TAB_END,LCD_TAB_END}
|
||||
|
||||
uint8_t st7796_register_init_tab[][2] = {
|
||||
|
||||
//ST7796
|
||||
|
||||
CMD(0x11),
|
||||
DLY(120),
|
||||
CMD(0xf0),
|
||||
DAT(0xc3),
|
||||
|
||||
CMD(0xf0),
|
||||
DAT(0x96),
|
||||
|
||||
CMD(0x21),
|
||||
|
||||
CMD(0x36),
|
||||
DAT(0x48),
|
||||
|
||||
CMD(0x3A),
|
||||
DAT(0x66),
|
||||
//DAT(0x55),
|
||||
|
||||
CMD(0xB0),
|
||||
DAT(0x02),
|
||||
|
||||
CMD(0xB4),
|
||||
DAT(0x01),
|
||||
|
||||
CMD(0xB5),
|
||||
DAT(0x02), //vfp[7:0]
|
||||
DAT(0x02), //vbp[7:0]
|
||||
DAT(0x00),
|
||||
DAT(0x04), //hbp[7:0]
|
||||
|
||||
CMD(0xB6),
|
||||
DAT(0x80), //MCU:80, RGB:20/A0
|
||||
DAT(0x02),
|
||||
DAT(0x3B),
|
||||
|
||||
CMD(0xB7),
|
||||
DAT(0xC6),
|
||||
|
||||
CMD(0xe8),
|
||||
DAT(0x40),
|
||||
DAT(0x8a),
|
||||
DAT(0x00),
|
||||
DAT(0x00),
|
||||
DAT(0x29),
|
||||
DAT(0x19),
|
||||
DAT(0xa5),
|
||||
DAT(0x33),
|
||||
|
||||
CMD(0xc2),
|
||||
DAT(0xa7),
|
||||
|
||||
CMD(0xc5),
|
||||
DAT(0x19),
|
||||
|
||||
CMD(0xe0), //Positive Voltage Gamma Control
|
||||
DAT(0xf0),
|
||||
DAT(0x00),
|
||||
DAT(0x08),
|
||||
DAT(0x0e),
|
||||
DAT(0x0d),
|
||||
DAT(0x1a),
|
||||
DAT(0x37),
|
||||
DAT(0x54),
|
||||
DAT(0x47),
|
||||
DAT(0x2b),
|
||||
DAT(0x16),
|
||||
DAT(0x15),
|
||||
DAT(0x1a),
|
||||
DAT(0x1d),
|
||||
|
||||
CMD(0xe1), //Negative Voltage Gamma Control
|
||||
DAT(0xf0),
|
||||
DAT(0x02),
|
||||
DAT(0x06),
|
||||
DAT(0x0c),
|
||||
DAT(0x0e),
|
||||
DAT(0x29),
|
||||
DAT(0x34),
|
||||
DAT(0x44),
|
||||
DAT(0x47),
|
||||
DAT(0x2b),
|
||||
DAT(0x17),
|
||||
DAT(0x16),
|
||||
DAT(0x19),
|
||||
DAT(0x1d),
|
||||
CMD(0xf0),
|
||||
DAT(0x3c),
|
||||
CMD(0xf0),
|
||||
DAT(0x69),
|
||||
|
||||
DLY(120),
|
||||
CMD(0x29),
|
||||
DLY(100),
|
||||
CMD(0x2C),
|
||||
|
||||
END
|
||||
};
|
||||
|
||||
lcddev_t lcdstruct = {
|
||||
.name = "st7796",
|
||||
.lcd_bus_type = LCD_BUS_I80,
|
||||
.bus_width = LCD_BUS_WIDTH_6,
|
||||
.color_mode = LCD_MODE_666,
|
||||
//.red_width = LCD_BUS_WIDTH_6,
|
||||
//.green_width = LCD_BUS_WIDTH_6,
|
||||
//.blue_width = LCD_BUS_WIDTH_6,
|
||||
.scan_mode = LCD_ROTATE_90,//rotate 90
|
||||
.te_mode = 0xff,//te mode, 0xff:disable
|
||||
.colrarray = 0,//0:_RGB_ 1:_RBG_,2:_GBR_,3:_GRB_,4:_BRG_,5:_BGR_
|
||||
//f(wr) = source_clk/div/2
|
||||
//f(wr) >= screen_w * screen_h * clk_per_pixel * 60
|
||||
.pclk = 10000000,
|
||||
.even_order = 0,
|
||||
.odd_order = 0,
|
||||
.lcd_data_mode = (0<<31)|//data inversion mode
|
||||
(2<<24)|//data compress mode
|
||||
(1<<20)|//fifo mode
|
||||
(0<<17)|//output cycle 2 shift direction
|
||||
(0<<12)|//output cycle 2 shift bit
|
||||
(0<<11)|//output cycle 1 shift direction
|
||||
(0<<6)| //output cycle 1 shift bit
|
||||
(0<<5)| //output cycle 0 shift direction
|
||||
(8<<0), //output cycle 0 shift bit
|
||||
.screen_w = 320,
|
||||
.screen_h = 480,
|
||||
.video_x = 0,
|
||||
.video_y = 0,
|
||||
.video_w = 320,
|
||||
.video_h = 480,
|
||||
.osd_x = 0,
|
||||
.osd_y = 0,
|
||||
.osd_w = 0, // 0 : value will set to video_w , use for 4:3 LCD +16:9 sensor show UPDOWN BLACK
|
||||
.osd_h = 0, // 0 : value will set to video_h , use for 4:3 LCD +16:9 sensor show UPDOWN BLACK
|
||||
.init_table = st7796_register_init_tab,
|
||||
.frame_table = NULL,
|
||||
.clk_per_pixel = 2,
|
||||
|
||||
.pclk_inv = 1,
|
||||
|
||||
.vlw = 0,// 0,
|
||||
.vbp = 0,// 12,
|
||||
.vfp = 0,// 12,
|
||||
.hlw = 0,// 1,
|
||||
.hbp = 0,//14,
|
||||
.hfp = 0,//13,
|
||||
|
||||
.de_en = 1,
|
||||
.vs_en = 0,
|
||||
.hs_en = 0,
|
||||
.de_inv = 1,
|
||||
.hs_inv = 0,
|
||||
.vs_inv = 0,
|
||||
|
||||
.brightness = 1,
|
||||
.saturation = 7,
|
||||
.contrast = 7,
|
||||
.contra_index = 8,
|
||||
|
||||
.gamma_red = 3,
|
||||
.gamma_green=3,
|
||||
.gamma_blue=3,
|
||||
|
||||
};
|
||||
#endif
|
||||
1524
sdk/lib/bus/spi/spi_nor/spi_nor_bus.c
Normal file
1524
sdk/lib/bus/spi/spi_nor/spi_nor_bus.c
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user