T113 驱动ili9342 8080屏,rgb565 16位模式下正常显示。
但同样的屏以rgb666 18位模式驱动时,显示白屏。貌似初始化都没成功。但是所有到的引脚是有信号输出的。
硬件是RGB666连线。原理图如下
用到的设备树是
rgb18_pins_a: rgb18@0 {
allwinner,pins = "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", \
"PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PD16", "PD17", "PD18", "PD19", \
"PD20", "PD21";
allwinner,pname = "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", \
"PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PD16", "PD17", "PD18", "PD19", \
"PD20", "PD21";
allwinner,function = "rgb18";
allwinner,muxsel = <2>;
allwinner,drive = <3>;
allwinner,pull = <0>;
};
rgb18_pins_b: rgb18@1 {
allwinner,pins = "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", \
"PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PD16", "PD17", "PD18", "PD19", \
"PD20", "PD21";
allwinner,pname = "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", \
"PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PD16", "PD17", "PD18", "PD19", \
"PD20", "PD21";
allwinner,function = "rgb18_suspend";
allwinner,muxsel = <15>;
allwinner,drive = <1>;
allwinner,pull = <0>;
};
&lcd0 {
lcd_used = <1>;
lcd_driver_name = "default_lcd";
/* part 2 */
lcd_if = <1>;
lcd_cpu_if = <8>;
/* part 3 */
lcd_x = <320>;
lcd_y = <240>;
lcd_width = <49>;
lcd_height = <37>;
lcd_dclk_freq = <6>; // DOTCLK频率
lcd_hspw = <10>; // Hsync = 10 DOTCLK
lcd_hbp = <20>; // HBP = 20 DOTCLK
lcd_ht = <360>; // 总水平时序 = 320 + 10 + 20 + 10 = 360 DOTCLK
lcd_vspw = <2>; // Vsync = 2 lines
lcd_vbp = <4>; // VBP = 4 lines
lcd_vt = <250>; // 总垂直时序 = 240 + 2 + 4 + 4 = 250 lines
/* part 4 */
lcd_backlight = <170>;
lcd_pwm_used = <0>;
lcd_pwm_ch = <4>;
lcd_pwm_freq = <20000>;
lcd_pwm_pol = <1>;
lcd_bright_curve_en = <0>;
/* part 5 */
lcd_cpu_mode= <1>;
lcd_cpu_te= <2>;
/* part 6 */
lcd_frm = <2>;
lcd_gamma_en = <0>;
lcd_cmap_en = <0>;
lcd_rb_swap = <0>;
/* part 7 */
lcd_gpio_0 = <&pio PE 1 GPIO_ACTIVE_HIGH>;
// cs pin
lcd_gpio_1 = <&pio PE 9 GPIO_ACTIVE_LOW>;
pinctrl-0 = <&rgb16_pins_a>;
pinctrl-1 = <&rgb16_pins_b>;
};
&disp {
disp_init_enable = <1>;
disp_mode = <0>;
screen0_output_type = <1>;
screen0_output_mode = <4>;
screen1_output_type = <3>;
screen1_output_mode = <4>;
screen1_output_format = <0>;
screen1_output_bits = <0>;
screen1_output_eotf = <4>;
screen1_output_cs = <257>;
screen1_output_dvi_hdmi = <2>;
screen1_output_range = <2>;
screen1_output_scan = <0>;
screen1_output_aspect_ratio = <8>;
dev0_output_type = <1>;
dev0_output_mode = <4>;
dev0_screen_id = <0>;
dev0_do_hpd = <0>;
dev1_output_type = <4>;
dev1_output_mode = <10>;
dev1_screen_id = <1>;
dev1_do_hpd = <1>;
def_output_dev = <1>;
hdmi_mode_check = <3>;
disp_rotation_used = <0>;
degree0 = <0>;
fb0_format = <0>;
fb0_buffer_num = <1>;
fb0_width = <320>;
fb0_height = <240>;
fb1_format = <0>;
fb1_width = <0>;
fb1_height = <0>;
chn_cfg_mode = <1>;
disp_para_zone = <1>;
/*VCC-LCD*/
/* dc1sw-supply = <®_dc1sw>;*/
/*VCC-DSI*/
/* eldo3-supply = <®_eldo3>;*/ u32 id[5];
DBG_INFO("\n");
lcd_bl_init();
/*lcd_cs, active low */
lcd_cs(0);
sunxi_lcd_delay_ms(10);
panel_reset(1);
sunxi_lcd_delay_ms(20);
panel_reset(0);
sunxi_lcd_delay_ms(20);
panel_reset(1);
sunxi_lcd_delay_ms(120);
memset(id,0,sizeof(id));
tcon0_cpu_rd_24b_data(0, 0xD3, id, 4);
printk("ili9342 0x%02x 0x%02x 0x%02x 0x%02x\n", id[0], id[1], id[2], id[3]);
sunxi_lcd_cpu_write_index(0,0xB9);
sunxi_lcd_cpu_write_data(0,0xFF);
sunxi_lcd_cpu_write_data(0,0x93);
sunxi_lcd_cpu_write_data(0,0x42);
//sunxi_lcd_cpu_write_index(0,0x21);
sunxi_lcd_cpu_write_index(0,0x36);
sunxi_lcd_cpu_write_data(0,0x88);
sunxi_lcd_cpu_write_index(0,0xB6);
sunxi_lcd_cpu_write_data(0,0x0A);
sunxi_lcd_cpu_write_data(0,0xA2);//0x80
sunxi_lcd_cpu_write_index(0,0xC0);
sunxi_lcd_cpu_write_data(0,0x1D);
sunxi_lcd_cpu_write_data(0,0x0A);
sunxi_lcd_cpu_write_index(0,0xC1);
sunxi_lcd_cpu_write_data(0,0x02); //Vgate voltage
sunxi_lcd_cpu_write_index(0,0xC5);
sunxi_lcd_cpu_write_data(0,0x2F);
sunxi_lcd_cpu_write_data(0,0x2F);//27
sunxi_lcd_cpu_write_index(0,0xC7);
sunxi_lcd_cpu_write_data(0,0xC3); //A4vcom offset
sunxi_lcd_cpu_write_index(0,0xB8);
sunxi_lcd_cpu_write_data(0,0x0B);
sunxi_lcd_cpu_write_index(0,0xE0);
sunxi_lcd_cpu_write_data(0,0x0F);
sunxi_lcd_cpu_write_data(0,0x33);//24
sunxi_lcd_cpu_write_data(0,0x30);//
sunxi_lcd_cpu_write_data(0,0x0c);
sunxi_lcd_cpu_write_data(0,0x0F);
sunxi_lcd_cpu_write_data(0,0x08);//06
sunxi_lcd_cpu_write_data(0,0x5D);//50
sunxi_lcd_cpu_write_data(0,0x66);//75
sunxi_lcd_cpu_write_data(0,0x4A);//3f
sunxi_lcd_cpu_write_data(0,0x07);
sunxi_lcd_cpu_write_data(0,0x13);//12
sunxi_lcd_cpu_write_data(0,0x05);
sunxi_lcd_cpu_write_data(0,0x1B);//11
sunxi_lcd_cpu_write_data(0,0x0E);//0B
sunxi_lcd_cpu_write_data(0,0x08);
sunxi_lcd_cpu_write_index(0,0xE1);
sunxi_lcd_cpu_write_data(0,0x08);
sunxi_lcd_cpu_write_data(0,0x0E);//1D
sunxi_lcd_cpu_write_data(0,0x11);//20
sunxi_lcd_cpu_write_data(0,0x02);
sunxi_lcd_cpu_write_data(0,0x0E);
sunxi_lcd_cpu_write_data(0,0x02);//04
sunxi_lcd_cpu_write_data(0,0x24);//31
sunxi_lcd_cpu_write_data(0,0x33);//24
sunxi_lcd_cpu_write_data(0,0x37);//42
sunxi_lcd_cpu_write_data(0,0x03);
sunxi_lcd_cpu_write_data(0,0x0A);//0B
sunxi_lcd_cpu_write_data(0,0x09);
sunxi_lcd_cpu_write_data(0,0x26);//30
sunxi_lcd_cpu_write_data(0,0x33);//36
sunxi_lcd_cpu_write_data(0,0x0F);
sunxi_lcd_cpu_write_index(0,0x11); //Exit Sleep
sunxi_lcd_delay_ms(10);
// 设置18位RGB接口
sunxi_lcd_cpu_write_index(0,0xB6); // Display Function Control
sunxi_lcd_cpu_write_data(0,0x0A); // RGB interface control
sunxi_lcd_cpu_write_data(0,0xA2); // RGB interface setting [7]=1 18bit
sunxi_lcd_cpu_write_index(0,0x3A);
sunxi_lcd_cpu_write_data(0,0x66); //55=16 bits/pixel 66=18 bits/pixel
sunxi_lcd_cpu_write_index(0,0x11); //Exit Sleep
sunxi_lcd_delay_ms(80);
//sunxi_lcd_cpu_write_index(0,0x29);
//sunxi_lcd_cpu_write_index(0,0x2C);
#if defined(CPU_TRI_MODE)
/* enable te, mode 0 */
sunxi_lcd_cpu_write_index(0, 0x35);
sunxi_lcd_cpu_write_data(0, 0x00);
sunxi_lcd_cpu_write_index(0, 0x44);
sunxi_lcd_cpu_write_data(0, 0x00);
sunxi_lcd_cpu_write_data(0, 0x80);
#endif
//sunxi_lcd_cpu_write_index(0, 0x11);
//sunxi_lcd_delay_ms(120);
sunxi_lcd_cpu_write_index(0, 0x29);
sunxi_lcd_cpu_write_index(0, 0x2c);
/*VCC-PD*/
/* dcdc1-supply = <®_dcdc1>;*/
};
初始化时改3A寄存器为66(18位)
u32 id[5];
DBG_INFO("\n");
lcd_bl_init();
/*lcd_cs, active low */
lcd_cs(0);
sunxi_lcd_delay_ms(10);
panel_reset(1);
sunxi_lcd_delay_ms(20);
panel_reset(0);
sunxi_lcd_delay_ms(20);
panel_reset(1);
sunxi_lcd_delay_ms(120);
memset(id,0,sizeof(id));
tcon0_cpu_rd_24b_data(0, 0xD3, id, 4);
printk("ili9342 0x%02x 0x%02x 0x%02x 0x%02x\n", id[0], id[1], id[2], id[3]);
sunxi_lcd_cpu_write_index(0,0xB9);
sunxi_lcd_cpu_write_data(0,0xFF);
sunxi_lcd_cpu_write_data(0,0x93);
sunxi_lcd_cpu_write_data(0,0x42);
//sunxi_lcd_cpu_write_index(0,0x21);
sunxi_lcd_cpu_write_index(0,0x36);
sunxi_lcd_cpu_write_data(0,0x88);
sunxi_lcd_cpu_write_index(0,0xB6);
sunxi_lcd_cpu_write_data(0,0x0A);
sunxi_lcd_cpu_write_data(0,0xA2);//0x80
sunxi_lcd_cpu_write_index(0,0xC0);
sunxi_lcd_cpu_write_data(0,0x1D);
sunxi_lcd_cpu_write_data(0,0x0A);
sunxi_lcd_cpu_write_index(0,0xC1);
sunxi_lcd_cpu_write_data(0,0x02); //Vgate voltage
sunxi_lcd_cpu_write_index(0,0xC5);
sunxi_lcd_cpu_write_data(0,0x2F);
sunxi_lcd_cpu_write_data(0,0x2F);//27
sunxi_lcd_cpu_write_index(0,0xC7);
sunxi_lcd_cpu_write_data(0,0xC3); //A4vcom offset
sunxi_lcd_cpu_write_index(0,0xB8);
sunxi_lcd_cpu_write_data(0,0x0B);
sunxi_lcd_cpu_write_index(0,0xE0);
sunxi_lcd_cpu_write_data(0,0x0F);
sunxi_lcd_cpu_write_data(0,0x33);//24
sunxi_lcd_cpu_write_data(0,0x30);//
sunxi_lcd_cpu_write_data(0,0x0c);
sunxi_lcd_cpu_write_data(0,0x0F);
sunxi_lcd_cpu_write_data(0,0x08);//06
sunxi_lcd_cpu_write_data(0,0x5D);//50
sunxi_lcd_cpu_write_data(0,0x66);//75
sunxi_lcd_cpu_write_data(0,0x4A);//3f
sunxi_lcd_cpu_write_data(0,0x07);
sunxi_lcd_cpu_write_data(0,0x13);//12
sunxi_lcd_cpu_write_data(0,0x05);
sunxi_lcd_cpu_write_data(0,0x1B);//11
sunxi_lcd_cpu_write_data(0,0x0E);//0B
sunxi_lcd_cpu_write_data(0,0x08);
sunxi_lcd_cpu_write_index(0,0xE1);
sunxi_lcd_cpu_write_data(0,0x08);
sunxi_lcd_cpu_write_data(0,0x0E);//1D
sunxi_lcd_cpu_write_data(0,0x11);//20
sunxi_lcd_cpu_write_data(0,0x02);
sunxi_lcd_cpu_write_data(0,0x0E);
sunxi_lcd_cpu_write_data(0,0x02);//04
sunxi_lcd_cpu_write_data(0,0x24);//31
sunxi_lcd_cpu_write_data(0,0x33);//24
sunxi_lcd_cpu_write_data(0,0x37);//42
sunxi_lcd_cpu_write_data(0,0x03);
sunxi_lcd_cpu_write_data(0,0x0A);//0B
sunxi_lcd_cpu_write_data(0,0x09);
sunxi_lcd_cpu_write_data(0,0x26);//30
sunxi_lcd_cpu_write_data(0,0x33);//36
sunxi_lcd_cpu_write_data(0,0x0F);
sunxi_lcd_cpu_write_index(0,0x11); //Exit Sleep
sunxi_lcd_delay_ms(10);
// 设置18位RGB接口
sunxi_lcd_cpu_write_index(0,0xB6); // Display Function Control
sunxi_lcd_cpu_write_data(0,0x0A); // RGB interface control
sunxi_lcd_cpu_write_data(0,0xA2); // RGB interface setting [7]=1 18bit
sunxi_lcd_cpu_write_index(0,0x3A);
sunxi_lcd_cpu_write_data(0,0x66); //55=16 bits/pixel 66=18 bits/pixel
sunxi_lcd_cpu_write_index(0,0x11); //Exit Sleep
sunxi_lcd_delay_ms(80);
//sunxi_lcd_cpu_write_index(0,0x29);
//sunxi_lcd_cpu_write_index(0,0x2C);
#if defined(CPU_TRI_MODE)
/* enable te, mode 0 */
sunxi_lcd_cpu_write_index(0, 0x35);
sunxi_lcd_cpu_write_data(0, 0x00);
sunxi_lcd_cpu_write_index(0, 0x44);
sunxi_lcd_cpu_write_data(0, 0x00);
sunxi_lcd_cpu_write_data(0, 0x80);
#endif
//sunxi_lcd_cpu_write_index(0, 0x11);
//sunxi_lcd_delay_ms(120);
sunxi_lcd_cpu_write_index(0, 0x29);
sunxi_lcd_cpu_write_index(0, 0x2c);
请问驱动18位时还需要设置或修改哪些配置吗?
离线