Files
TAIXIN/sdk/lib/bus/spi/lcd/jd9852.c

288 lines
4.5 KiB
C
Raw Normal View History

#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