导航

    全志在线开发者论坛

    • 注册
    • 登录
    • 搜索
    • 版块
    • 话题
    • 在线文档
    • 社区主页

    也来驱动8080屏

    T Series
    1
    2
    609
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • W
      wj8331585 LV 6 最后由 编辑

      T113 驱动ili9342 8080屏,rgb565 16位模式下正常显示。
      7824c91f-57c9-43a5-b1bd-43f8a67fc16f-image.png

      	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 = <2>;
      				allwinner,drive = <3>;
      				allwinner,pull = <0>;			
      			};
      
      			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 = <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>;*/
      	/*VCC-PD*/
      /*	dcdc1-supply = <&reg_dcdc1>;*/
      };
      
      

      但是如果是在18位模式下,显示是白屏。
      硬件支持18位。原理图是
      1b5fe65f-65df-4768-9863-6397bb7d84d3-image.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 = <0>;
      
          /* 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= <0>;
      
      	/* part 6 */
      	lcd_frm = <1>;
      	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 = <&rgb18_pins_a>;
      	pinctrl-1 = <&rgb18_pins_b>;
      };
      
      

      初始化时改了3A寄存器

      	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);
      
      
      1 条回复 最后回复 回复 引用 分享 0
      • W
        wj8331585 LV 6 最后由 编辑

        18位模式到底要怎么驱动呢?

        1 条回复 最后回复 回复 引用 分享 0
        • 1 / 1
        • First post
          Last post

        Copyright © 2024 深圳全志在线有限公司 粤ICP备2021084185号 粤公网安备44030502007680号

        行为准则 | 用户协议 | 隐私权政策