<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[也来驱动8080屏]]></title><description><![CDATA[<p dir="auto">T113 驱动ili9342 8080屏，rgb565 16位模式下正常显示。<br />
<img src="/assets/uploads/files/1741590219412-7824c91f-57c9-43a5-b1bd-43f8a67fc16f-image.png" alt="7824c91f-57c9-43a5-b1bd-43f8a67fc16f-image.png" class=" img-responsive img-markdown" width="269" height="198" /></p>
<pre><code>	rgb16_pins_a: rgb16@0 {
				pins = "PD1", "PD2","PD3","PD4","PD5","PD6", "PD7", "PD8", \
				"PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PD16", "PD17", \
				"PD18", "PD19", "PD20", "PD21";
				allwinner,function = "rgb16";
				allwinner,muxsel = &lt;2&gt;;
				allwinner,drive = &lt;3&gt;;
				allwinner,pull = &lt;0&gt;;			
			};

			rgb16_pins_b: rgb16@1 {
				pins = "PD1", "PD2","PD3","PD4","PD5","PD6", "PD7", "PD8", \
				"PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PD16", "PD17", \
				"PD18", "PD19", "PD20", "PD21";
				allwinner,function = "rgb16_suspend";
				allwinner,muxsel = &lt;15&gt;;
				allwinner,drive = &lt;1&gt;;
				allwinner,pull = &lt;0&gt;;
			};

</code></pre>
<pre><code>&amp;lcd0 {
	lcd_used            = &lt;1&gt;;

    lcd_driver_name     = "default_lcd";

	/* part 2 */
	lcd_if = &lt;1&gt;;
	lcd_cpu_if = &lt;8&gt;;

    /* part 3 */
	lcd_x = &lt;320&gt;;
	lcd_y = &lt;240&gt;;
	lcd_width = &lt;49&gt;;
	lcd_height = &lt;37&gt;;
    lcd_dclk_freq = &lt;6&gt;;     // DOTCLK频率
    lcd_hspw = &lt;10&gt;;         // Hsync = 10 DOTCLK
    lcd_hbp = &lt;20&gt;;          // HBP = 20 DOTCLK
    lcd_ht = &lt;360&gt;;          // 总水平时序 = 320 + 10 + 20 + 10 = 360 DOTCLK

    lcd_vspw = &lt;2&gt;;          // Vsync = 2 lines
    lcd_vbp = &lt;4&gt;;           // VBP = 4 lines
    lcd_vt = &lt;250&gt;;          // 总垂直时序 = 240 + 2 + 4 + 4 = 250 lines

	/* part 4 */
	lcd_backlight = &lt;170&gt;;
	lcd_pwm_used = &lt;0&gt;;
	lcd_pwm_ch = &lt;4&gt;;
	lcd_pwm_freq = &lt;20000&gt;;
	lcd_pwm_pol = &lt;1&gt;;
	lcd_bright_curve_en = &lt;0&gt;;

	/* part 5 */
	lcd_cpu_mode= &lt;1&gt;;
	lcd_cpu_te= &lt;2&gt;;

	/* part 6 */
	lcd_frm = &lt;2&gt;;
	lcd_gamma_en = &lt;0&gt;;
	lcd_cmap_en = &lt;0&gt;;
	lcd_rb_swap = &lt;0&gt;;
	/* part 7 */
	lcd_gpio_0 = &lt;&amp;pio PE 1 GPIO_ACTIVE_HIGH&gt;;
	// cs pin
	lcd_gpio_1 = &lt;&amp;pio PE 9 GPIO_ACTIVE_LOW&gt;;
	pinctrl-0 = &lt;&amp;rgb16_pins_a&gt;;
	pinctrl-1 = &lt;&amp;rgb16_pins_b&gt;;
};
</code></pre>
<pre><code>&amp;disp {
	disp_init_enable         = &lt;1&gt;;
	disp_mode                = &lt;0&gt;;

	screen0_output_type      = &lt;1&gt;;
	screen0_output_mode      = &lt;4&gt;;

	screen1_output_type      = &lt;3&gt;;
	screen1_output_mode      = &lt;4&gt;;
	
	screen1_output_format    = &lt;0&gt;;
	screen1_output_bits      = &lt;0&gt;;
	screen1_output_eotf      = &lt;4&gt;;
	screen1_output_cs        = &lt;257&gt;;
	screen1_output_dvi_hdmi  = &lt;2&gt;;
	screen1_output_range     = &lt;2&gt;;
	screen1_output_scan      = &lt;0&gt;;
	screen1_output_aspect_ratio = &lt;8&gt;;
	dev0_output_type         = &lt;1&gt;;
	dev0_output_mode         = &lt;4&gt;;
	dev0_screen_id           = &lt;0&gt;;
	dev0_do_hpd              = &lt;0&gt;;

	dev1_output_type         = &lt;4&gt;;
	dev1_output_mode         = &lt;10&gt;;
	dev1_screen_id           = &lt;1&gt;;
	dev1_do_hpd              = &lt;1&gt;;

	def_output_dev           = &lt;1&gt;;
	hdmi_mode_check          = &lt;3&gt;;
	disp_rotation_used		 = &lt;0&gt;;
	degree0					 = &lt;0&gt;;
	fb0_format               = &lt;0&gt;;
	fb0_buffer_num           = &lt;1&gt;;	
	fb0_width                = &lt;320&gt;;
	fb0_height               = &lt;240&gt;;
	fb1_format               = &lt;0&gt;;
	fb1_width                = &lt;0&gt;;
	fb1_height               = &lt;0&gt;;
	chn_cfg_mode             = &lt;1&gt;;

	disp_para_zone           = &lt;1&gt;;
	/*VCC-LCD*/
/*	dc1sw-supply = &lt;&amp;reg_dc1sw&gt;;*/
	/*VCC-DSI*/
/*	eldo3-supply = &lt;&amp;reg_eldo3&gt;;*/
	/*VCC-PD*/
/*	dcdc1-supply = &lt;&amp;reg_dcdc1&gt;;*/
};

</code></pre>
<p dir="auto">但是如果是在18位模式下，显示是白屏。<br />
硬件支持18位。原理图是<br />
<img src="/assets/uploads/files/1741590376318-1b5fe65f-65df-4768-9863-6397bb7d84d3-image.png" alt="1b5fe65f-65df-4768-9863-6397bb7d84d3-image.png" class=" img-responsive img-markdown" width="494" height="605" /><br />
设备树是：</p>
<pre><code>			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 = &lt;2&gt;;
				allwinner,drive = &lt;3&gt;;
				allwinner,pull = &lt;0&gt;;
			};

			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 = &lt;15&gt;;
				allwinner,drive = &lt;1&gt;;
				allwinner,pull = &lt;0&gt;;
			};

</code></pre>
<pre><code>
&amp;lcd0 {
	lcd_used            = &lt;1&gt;;

    lcd_driver_name     = "default_lcd";

	/* part 2 */
	lcd_if = &lt;1&gt;;
	lcd_cpu_if = &lt;0&gt;;

    /* part 3 */
	lcd_x = &lt;320&gt;;
	lcd_y = &lt;240&gt;;
	lcd_width = &lt;49&gt;;
	lcd_height = &lt;37&gt;;
    lcd_dclk_freq = &lt;6&gt;;     // DOTCLK频率
    lcd_hspw = &lt;10&gt;;         // Hsync = 10 DOTCLK
    lcd_hbp = &lt;20&gt;;          // HBP = 20 DOTCLK
    lcd_ht = &lt;360&gt;;          // 总水平时序 = 320 + 10 + 20 + 10 = 360 DOTCLK

    lcd_vspw = &lt;2&gt;;          // Vsync = 2 lines
    lcd_vbp = &lt;4&gt;;           // VBP = 4 lines
    lcd_vt = &lt;250&gt;;          // 总垂直时序 = 240 + 2 + 4 + 4 = 250 lines

	/* part 4 */
	lcd_backlight = &lt;170&gt;;
	lcd_pwm_used = &lt;0&gt;;
	lcd_pwm_ch = &lt;4&gt;;
	lcd_pwm_freq = &lt;20000&gt;;
	lcd_pwm_pol = &lt;1&gt;;
	lcd_bright_curve_en = &lt;0&gt;;

	/* part 5 */
	lcd_cpu_mode= &lt;1&gt;;
	lcd_cpu_te= &lt;0&gt;;

	/* part 6 */
	lcd_frm = &lt;1&gt;;
	lcd_gamma_en = &lt;0&gt;;
	lcd_cmap_en = &lt;0&gt;;
	lcd_rb_swap = &lt;0&gt;;
	/* part 7 */
	lcd_gpio_0 = &lt;&amp;pio PE 1 GPIO_ACTIVE_HIGH&gt;;
	// cs pin
	lcd_gpio_1 = &lt;&amp;pio PE 9 GPIO_ACTIVE_LOW&gt;;
	pinctrl-0 = &lt;&amp;rgb18_pins_a&gt;;
	pinctrl-1 = &lt;&amp;rgb18_pins_b&gt;;
};

</code></pre>
<p dir="auto">初始化时改了3A寄存器</p>
<pre><code>	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);

</code></pre>
]]></description><link>https://bbs.aw-ol.com/topic/6173/也来驱动8080屏</link><generator>RSS for Node</generator><lastBuildDate>Sat, 16 May 2026 17:19:14 GMT</lastBuildDate><atom:link href="https://bbs.aw-ol.com/topic/6173.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 10 Mar 2025 07:09:49 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to 也来驱动8080屏 on Tue, 11 Mar 2025 00:53:04 GMT]]></title><description><![CDATA[<p dir="auto">18位模式到底要怎么驱动呢？</p>
]]></description><link>https://bbs.aw-ol.com/post/25536</link><guid isPermaLink="true">https://bbs.aw-ol.com/post/25536</guid><dc:creator><![CDATA[wj8331585]]></dc:creator><pubDate>Tue, 11 Mar 2025 00:53:04 GMT</pubDate></item></channel></rss>