热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Linuxlcd识别代码跟踪自己的lcd

1,lcd参数设置:staticstruct{intid;char*name;structnxp_lcd*lcd;intdpi;intctp;enum

1,lcd参数设置:

static struct {int id;char *name;struct nxp_lcd *lcd;int dpi;int ctp;enum lcd_format fmt;
} bd_lcd_config[] = {{ 25, "HD101", &wxga_hd101, 0, 1, LCD_RGB },{ 32, "HD101B",&wxga_hd101, 0, 1, LCD_RGB },{ 18, "HD700", &wxga_hd700, 213, 1, LCD_RGB },{ 30, "HD702", &wxga_hd700, 213, 1, LCD_RGB },{ 111, "AT080TN64", &wxga_at080tn64, 213, 1, LCD_RGB},{ 33, "H70", &wxga_hd700, 213, 0, LCD_VESA },{ 3, "S70", &wvga_s70, 128, 1, LCD_RGB },{ 36, "S701", &wvga_s70, 128, 1, LCD_RGB },{ 24, "S702", &wvga_s702, 128, 3, LCD_RGB },{ 26, "S70D", &wvga_s70d, 128, 0, LCD_RGB },{ 14, "H43", &hvga_h43, 0, 0, LCD_RGB },{ 19, "P43", &hvga_p43, 0, 0, LCD_RGB },{ 8, "W35", &qvga_w35, 0, 0, LCD_RGB },{ 28, "X710", &wsvga_x710, 0, 1, LCD_RGB },{ 31, "S430", &wvga_s430, 180, 1, LCD_RGB },{ 4, "W50", &wvga_w50, 0, 0, LCD_RGB },/* TODO: Testing */{ 15, "W101", &wsvga_w101, 0, 1, LCD_RGB },{ 5, "L80", &vga_l80, 0, 1, LCD_RGB },{ -1, "A97", &xga_a97, 0, 0, LCD_RGB },{ -1, "LQ150", &xga_lq150, 0, 1, LCD_RGB },{ -1, "BP101", &wxga_bp101, 0, 1, LCD_RGB },{ 128, "HDMI", &hdmi_def, 0, 0, LCD_HDMI }, /* Pls keep it at last */
};

2,bd_lcd_init

static void bd_lcd_init(void)
{struct nxp_lcd *cfg;int id;int ret;id &#61; onewire_get_lcd_id();/* -1: onwire probe failed* 0: bad* >0: identified */ret &#61; bd_setup_lcd_by_id(id);if (id <&#61; 0 || ret !&#61; id) {printf("Panel: N/A (%d)\n", id);bd_setup_lcd_by_name("HDMI720P60");} else {printf("Panel: %s\n", bd_get_lcd_name());cfg &#61; bd_get_lcd();if (cfg->gpio_init)cfg->gpio_init();}
}

3&#xff0c;onewire_get_lcd_id&#xff08;获取lcd的id号&#xff09;

int onewire_get_lcd_id(void)
{//return lcd_id;return 111;
}

4 通过id号找到lcd&#xff08;确定id号&#xff09;

int bd_setup_lcd_by_id(int id)
{int i;for (i &#61; 0; i &#61; ARRAY_SIZE(bd_lcd_config)) {/* NOT found */return -19;}return bd_lcd_config[i].id;
}

5,通过id号找到相应的lcd名字

const char *bd_get_lcd_name(void)
{return bd_lcd_config[lcd_idx].name;
}

6获取lcd的全部信息&#xff0c;包括一些lcd的物理参数&#xff08;尺寸&#xff09;&#xff0c;极性等等&#xff0c;例如wxga_at080tn64。

struct nxp_lcd *bd_get_lcd(void)
{return bd_lcd_config[lcd_idx].lcd;
}

7,bd_lcd_config结构体中的struct nxp_lcd *lcd定义有一系列的lcd,我们需要选择我们用的lcd进行设置。

 

static struct nxp_lcd wxga_at080tn64 &#61; {.width &#61; 800,.height &#61; 480,.p_width &#61; 155,.p_height &#61; 93,.bpp &#61; 24,.freq &#61; 63,.timing &#61; {.h_fp &#61; 210,.h_bp &#61; 46,.h_sw &#61; 20,.v_fp &#61; 22,.v_fpe &#61; 1,.v_bp &#61; 23,.v_bpe &#61; 1,.v_sw &#61; 10,},.polarity &#61; {.rise_vclk &#61; 0,.inv_hsync &#61; 1,.inv_vsync &#61; 1,.inv_vden &#61; 0,},.gpio_init &#61; s70_gpio_init,
};

8,s70_ gpio_init,rgb三色设置&#xff0c;以及pclk设置。

static void s70_gpio_init(void)
{int i;/* PVCLK */nx_gpio_set_drive_strength(PAD_GPIO_A, 0, 3);/* RGB24 */for (i &#61; 1; i <25; i&#43;&#43;)nx_gpio_set_drive_strength(PAD_GPIO_A, i, 3);/* HS/VS/DE */for (; i <28; i&#43;&#43;)nx_gpio_set_drive_strength(PAD_GPIO_A, i, 3);
}

 


推荐阅读
author-avatar
手机用户2602927805
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有