您尚未登录。

楼主 # 2025-03-12 09:27:12

wangjun110
会员
注册时间: 2020-07-03
已发帖子: 12
积分: 3

t113驱动i8080屏

T113 驱动ili9342 8080屏,rgb565 16位模式下正常显示。
9999999.png
但同样的屏以rgb666 18位模式驱动时,显示白屏。貌似初始化都没成功。但是所有到的引脚是有信号输出的。
硬件是RGB666连线。原理图如下
88888888.png
用到的设备树是

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 = <&reg_dc1sw>;*/
	/*VCC-DSI*/
/*	eldo3-supply = <&reg_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 = <&reg_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位时还需要设置或修改哪些配置吗?

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn