zl程序教程

您现在的位置是:首页 >  大数据

当前栏目

编程_配置LCD控制器之寄存器操作_基于IMX6ULL

配置编程寄存器 操作 基于 控制器 LCD IMX6ULL
2023-09-14 09:16:19 时间

编程_配置LCD控制器之寄存器操作_基于IMX6ULL




参考资料

  • 内核自带的IMX6ULL LCD驱动程序
    • 驱动源码:Linux-4.9.88\drivers\video\fbdev\mxsfb.c
    • 设备树:
      • arch/arm/boot/dts/imx6ull.dtsi
      • arch/arm/boot/dts/100ask_imx6ull-14x14.dts

一、 硬件相关的操作

LCD驱动程序的核心就是:

  • 分配fb_info
  • 设置fb_info
  • 注册fb_info
  • 硬件相关的设置

硬件相关的设置又可以分为3部分:

  • 引脚设置
  • 时钟设置
  • LCD控制器设置

二、 在设备树里指定LCD参数

	framebuffer-mylcd {
			compatible = "100ask,lcd_drv";
	        pinctrl-names = "default";
			pinctrl-0 = <&mylcd_pinctrl>;
			backlight-gpios = <&gpio1 8 GPIO_ACTIVE_HIGH>;

            clocks = <&clks IMX6UL_CLK_LCDIF_PIX>,
                     <&clks IMX6UL_CLK_LCDIF_APB>;
            clock-names = "pix", "axi";
            
            display = <&display0>;

			display0: display {
				bits-per-pixel = <24>;
				bus-width = <24>;

				display-timings {
					native-mode = <&timing0>;

					 timing0: timing0_1024x768 {
					 clock-frequency = <50000000>;
					 hactive = <1024>;
					 vactive = <600>;
					 hfront-porch = <160>;
					 hback-porch = <140>;
					 hsync-len = <20>;
					 vback-porch = <20>;
					 vfront-porch = <12>;
					 vsync-len = <3>;

					 hsync-active = <0>;
					 vsync-active = <0>;
					 de-active = <1>;
					 pixelclk-active = <0>;
					 };

				};
			};            
	};

三、 编程

3.1 从设备树获得参数

时序参数、引脚极性等信息,都被保存在一个display_timing结构体里:

在这里插入图片描述

参考内核文件:

  • drivers\video\of_display_timing.c

  • drivers\video\fbdev\mxsfb.c

3.2 使用参数配置LCD控制器

根据芯片手册,一个一个设置寄存器:

  • Framebuffer地址设置
  • Framebuffer中数据格式设置
  • LCD时序参数设置

3.2 使用参数配置LCD控制器

根据芯片手册,一个一个设置寄存器:

  • Framebuffer地址设置
  • Framebuffer中数据格式设置
  • LCD时序参数设置
  • LCD引脚极性设置


致谢

以上笔记源自韦东山老师的视频课程,感谢韦老师,韦老师是嵌入式培训界一股清流,为嵌入式linux开发点起的星星之火,也愿韦老师桃李满园。聚是一团火,散是满天星!

在这样一个速食的时代,坚持做自己,慢下来,潜心琢磨,心怀敬畏,领悟知识,才能向下扎到根,向上捅破天,背着世界往前行!
仅此向嵌入行业里的每一个认真做技术的从业者致敬!