#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