Linux LCD 驱动实验

        I.MX6ULL eLCDIF 接口驱动程序 NXP 已经编写好了,因此 LCD 驱动部分我们不需要去修改。我们需要做的就是按照所使用的 LCD 来修改设备树。

  1. LCD 屏幕 IO 配置

修改设备树中的pinctrl_lcdif_dat、pinctrl_lcdif_ctrl、pinctrl_pwm1这三个节点。

pinctrl_lcdif_dat: lcdifdatgrp { 
fsl,pins = < 
    MX6UL_PAD_LCD_DATA00__LCDIF_DATA00  0x79 
    MX6UL_PAD_LCD_DATA01__LCDIF_DATA01  0x79 
    MX6UL_PAD_LCD_DATA02__LCDIF_DATA02  0x79 
    MX6UL_PAD_LCD_DATA03__LCDIF_DATA03  0x79 
    MX6UL_PAD_LCD_DATA04__LCDIF_DATA04  0x79 
    MX6UL_PAD_LCD_DATA05__LCDIF_DATA05  0x79 
    MX6UL_PAD_LCD_DATA06__LCDIF_DATA06  0x79 
    MX6UL_PAD_LCD_DATA07__LCDIF_DATA07  0x79 
    MX6UL_PAD_LCD_DATA08__LCDIF_DATA08  0x79 
    MX6UL_PAD_LCD_DATA09__LCDIF_DATA09  0x79 
    MX6UL_PAD_LCD_DATA10__LCDIF_DATA10  0x79 
    MX6UL_PAD_LCD_DATA11__LCDIF_DATA11  0x79 
    MX6UL_PAD_LCD_DATA12__LCDIF_DATA12  0x79 
    MX6UL_PAD_LCD_DATA13__LCDIF_DATA13  0x79 
    MX6UL_PAD_LCD_DATA14__LCDIF_DATA14  0x79 
    MX6UL_PAD_LCD_DATA15__LCDIF_DATA15  0x79 
    MX6UL_PAD_LCD_DATA16__LCDIF_DATA16  0x79 
    MX6UL_PAD_LCD_DATA17__LCDIF_DATA17  0x79 
    MX6UL_PAD_LCD_DATA18__LCDIF_DATA18  0x79 
    MX6UL_PAD_LCD_DATA19__LCDIF_DATA19  0x79 
    MX6UL_PAD_LCD_DATA20__LCDIF_DATA20  0x79 
    MX6UL_PAD_LCD_DATA21__LCDIF_DATA21  0x79 
    MX6UL_PAD_LCD_DATA22__LCDIF_DATA22  0x79 
    MX6UL_PAD_LCD_DATA23__LCDIF_DATA23  0x79 
    >; 
}; 
pinctrl_lcdif_ctrl: lcdifctrlgrp { 
    fsl,pins = < 
        MX6UL_PAD_LCD_CLK__LCDIF_CLK  0x79 
        MX6UL_PAD_LCD_ENABLE__LCDIF_ENABLE  0x79 
        MX6UL_PAD_LCD_HSYNC__LCDIF_HSYNC  0x79 
        MX6UL_PAD_LCD_VSYNC__LCDIF_VSYNC  0x79 
    >; 


pinctrl_pwm1: pwm1grp { 
    fsl,pins = < 
        MX6UL_PAD_GPIO1_IO08__PWM1_OUT  0x110b0 
    >; 
};

子节点 pinctrl_lcdif_dat,为 RGB LCD 24 根数据线配置项。

子节点 pinctrl_lcdif_ctrlRGB LCD 4 根控制线配置项,包括 CLKENABLEVSYNC HSYNC

子节点 pinctrl_pwm1LCD 背光 PWM 引脚配置项。

        2. LCD 屏幕参数节点信息修改

&lcdif { 
    pinctrl-names = "default"; 
    pinctrl-0 = <&pinctrl_lcdif_dat /* 使用到的 IO */ 
                &pinctrl_lcdif_ctrl 
                &pinctrl_lcdif_reset>; 
    display = <&display0>; 
    status = "okay"; 

    display0: display { /* LCD 属性信息 */ 
        bits-per-pixel = <16>; /* 一个像素占用几个 bit */ 
        bus-width = <24>; /* 总线宽度 */ 
 
        display-timings { 
            native-mode = <&timing0>; /* 时序信息 */ 
            timing0: timing0 { 
                clock-frequency = <9200000>; /* LCD 像素时钟,单位 Hz */ 
                hactive = <480>; /* LCD X 轴像素个数 */ 
                vactive = <272>; /* LCD Y 轴像素个数 */ 
                hfront-porch = <8>; /* LCD hfp 参数 */ 
                hback-porch = <4>; /* LCD hbp 参数 */ 
                hsync-len = <41>; /* LCD hspw 参数 */ 
                vback-porch = <2>; /* LCD vbp 参数 */ 
                vfront-porch = <4>; /* LCD vfp 参数 */ 
                vsync-len = <10>; /* LCD vspw 参数 */ 
    
                hsync-active = <0>; /* hsync 数据线极性 */ 
                vsync-active = <0>; /* vsync 数据线极性 */ 
                de-active = <1>; /* de 数据线极性 */ 
                pixelclk-active = <0>; /* clk 数据线先极性 */ 
                }; 
            }; 
        }; 
    };

        display0 子节点,描述 LCD 的参数信息,bits-per-pixel 属性用于指明一个像素占用的 bit 数,默认为16bitLCD 配置为 RGB888 模式,因此一个像素点占用24bitbits-per-pixel属性要改为 24bus-width 属性用于设置数据线宽度,因为要配置为RGB888模式,因此 bus-width也要设置为 24

        LCD 的时序参数信息,NXP 官方的 EVK开发板使用了一个 4.3 寸的 480*272 屏幕,因此这里默认是按照 NXP 官方的那个屏幕参数设置的。每一个属性的含义后面的注释已经写的很详细了,大家自己去看就行了,这些时序参数就是我们重点要修改的,需要根据自己所使用的屏幕去修改。

        3. LCD 屏幕背光节点信息

&pwm1 { 
    pinctrl-names = "default"; 
    pinctrl-0 = <&pinctrl_pwm1>; 
    status = "okay"; 
};

向PWM节点追加内容

backlight { 
    compatible = "pwm-backlight"; 
    pwms = <&pwm1 0 5000000>; 
    brightness-levels = <0 4 8 16 32 64 128 255>; 
    default-brightness-level = <6>; 
    status = "okay"; 
};

backlight节点LCD 背光和PWM1_OUT连接起来。

pwms属性用于描述背光所使用的PWM以及PWM频率,比如本章我们要使用的pwm1

pwm 频率设置为 5KHz(NXP 官方推荐设置)

brightness-levels 属性描述亮度级别,范围为 0~2550 表示 PWM 占空比为 0%,也就

是亮度最低,255 表示 100%占空比,也就是亮度最高。至于设置几级亮度,大家可以自行填写此属性。

default-brightness-level 属性为默认亮度级别。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值