6、Lctech Pi(F1C200S)4.3寸(480*272)16位RGB565LCD屏驱动适配(CherryPi,Mangopi,F1C100S)

news/2024/11/7 21:07:43/

本次主要参考:
https://blog.csdn.net/wending1986/article/details/106837597/
http://blog.chinaunix.net/uid-20543672-id-3246283.html
https://wiki.sipeed.com/soft/Lichee/zh/Nano-Doc-Backup/index.html
李山文大佬
(如果方便请给这几位大佬一个关注)

注意代码块之间的空行

如有不足之处,欢迎指出。

1、设置LCD基础参数(需要自己去根据屏幕参数进行适配)
在drivers/gpu/drm/panel/panel-simple.c文件中,第2713行开始修改如下:

static const struct drm_display_mode qd43003c0_40_mode = {
    .clock = 9000,
    .hdisplay = 480,
    .hsync_start = 480 + 8,
    .hsync_end = 480 + 8 + 4,
    .htotal = 480 + 8 + 4 + 43,
    .vdisplay = 272,
    .vsync_start = 272 + 8,
    .vsync_end = 272 + 8 + 4,
    .vtotal = 272 + 8 + 4 + 12,
    .vrefresh = 60,
};

部分参数含义如下:
    hdisplay:有效显示区水平像素数量,对应Active Width
    hsync_start:水平同步开始,对应hdispay + HFP
    hsync_end:水平同步结束,对应hdisplay + HFP + HSYNC width(HPW)
    htotal:水平总像素,对应hdisplay + HFP + HSYNC width + HBP
    vdisplay:垂直显示像素,对应Active Height
    vsync_start:垂直同步开始,对应vdispay + VFP
    vsync_end:垂直像素结束,对应vdisplay + VFP + VSYNC width(VPW)
    vtotal:垂直总像素,对应vdisplay + VFP + VSYNC width + VBP
    vrefresh:刷新率

第2726行开始修改如下:

static const struct panel_desc qd43003c0_40 = {
    .modes = &qd43003c0_40_mode,
    .num_modes = 1,
    //.bpc = 8,
    .size = {
        .width = 95,
        .height = 53,
    },
    .bus_format = MEDIA_BUS_FMT_RGB565_1X16//MEDIA_BUS_FMT_RGB888_1X24
};

其中需要注意,参数bus_format设置为:MEDIA_BUS_FMT_RGB565_1X16;width与height为液晶尺寸。

2、配置设备树
2.1、修改suniv-f1c100s.dtsi文件
打开linux-5.7.1/arch/arm/boot/dts/suniv-f1c100s.dtsi文件。
在第38行插入如下代码:

de: display-engine {
    .compatible = “allwinner,suniv-f1c100s-display-engine”;
    .allwinner,pipelines = <&fe0>;
    .status = “disabled”;
};

在soc->pio 下(第104行)添加如下代码:

lcd_rgb565_pins: lcd-rgb565-pins {
    pins = “PD1”, “PD2”, “PD3”, “PD4”, “PD5”,
        “PD6”, “PD7”, “PD8”, “PD9”, “PD10”, “PD11”,
        “PD13”, “PD14”, “PD15”, “PD16”, “PD17”,
        “PD18”, “PD19”, “PD20”, “PD21”;
    function = “lcd”;
};

在第172~173行中间,添加如下代码:

tcon0: lcd-controller@1c0c000 {compatible = "allwinner,suniv-f1c100s-tcon";reg = <0x01c0c000 0x1000>;interrupts = <29>;clocks = <&ccu CLK_BUS_LCD>,<&ccu CLK_TCON>,<&osc24M>;	/* Still unknown */clock-names = "ahb","tcon-ch0","tcon-ch1";clock-output-names = "tcon-pixel-clock";resets = <&ccu RST_BUS_LCD>;reset-names = "lcd";status = "disabled";ports {#address-cells = <1>;#size-cells = <0>;tcon0_in: port@0 {#address-cells = <1>;#size-cells = <0>;reg = <0>;tcon0_in_be0: endpoint@0 {reg = <0>;remote-endpoint = <&be0_out_tcon0>;};};tcon0_out: port@1 {#address-cells = <1>;#size-cells = <0>;reg = <1>;};};
};fe0: display-frontend@1e00000 {compatible = "allwinner,suniv-f1c100s-display-frontend";reg = <0x01e00000 0x20000>;interrupts = <30>;clocks = <&ccu CLK_BUS_DE_FE>, <&ccu CLK_DE_FE>,<&ccu CLK_DRAM_DE_FE>;clock-names = "ahb", "mod","ram";resets = <&ccu RST_BUS_DE_FE>;status = "disabled";ports {#address-cells = <1>;#size-cells = <0>;fe0_out: port@1 {#address-cells = <1>;#size-cells = <0>;reg = <1>;fe0_out_be0: endpoint@0 {reg = <0>;remote-endpoint = <&be0_in_fe0>;};};};
};be0: display-backend@1e60000 {compatible = "allwinner,suniv-f1c100s-display-backend";reg = <0x01e60000 0x10000>;reg-names = "be";interrupts = <31>;clocks = <&ccu CLK_BUS_DE_BE>, <&ccu CLK_DE_BE>,<&ccu CLK_DRAM_DE_BE>;clock-names = "ahb", "mod","ram";resets = <&ccu RST_BUS_DE_BE>;reset-names = "be";assigned-clocks = <&ccu CLK_DE_BE>;assigned-clock-rates = <300000000>;ports {#address-cells = <1>;#size-cells = <0>;be0_in: port@0 {#address-cells = <1>;#size-cells = <0>;reg = <0>;be0_in_fe0: endpoint@0 {reg = <0>;remote-endpoint = <&fe0_out_be0>;};};be0_out: port@1 {#address-cells = <1>;#size-cells = <0>;reg = <1>;be0_out_tcon0: endpoint@0 {reg = <0>;remote-endpoint = <&tcon0_in_be0>;};};};
};

完成之后,保存退出。

2.2、修改suniv-f1c100s-licheepi-nano.dts文件
打开linux-5.7.1/arch/arm/boot/dts/suniv-f1c100s-licheepi-nano.dts文件。
在第9行插入如下代码:

#include <dt-bindings/gpio/gpio.h>

在第26行~27行中间,添加如下代码:

panel: panel {compatible = "qiaodian,qd43003c0-40", "simple-panel";#address-cells = <1>;#size-cells = <0>;enable-gpios = <&pio 4 6 GPIO_ACTIVE_HIGH>;port@0 {reg = <0>;#address-cells = <1>;#size-cells = <0>;panel_input: endpoint@0 {reg = <0>;remote-endpoint = <&tcon0_out_lcd>;};};
};

在第40行下面,也就是文档最后添加如下代码:

&be0 {status = "okay";
};&fe0 {status = "okay";
};&de {status = "okay";
};&tcon0 {pinctrl-names = "default";pinctrl-0 = <&lcd_rgb565_pins>;status = "okay";
};&tcon0_out {tcon0_out_lcd: endpoint@0 {reg = <0>;remote-endpoint = <&panel_input>;};
};

完成之后,保存退出。

3、修改内核代码,配置fb
在linux-5.7.1/drivers/gpu/drm/sun4i/文件夹下,需要修改sun4i_tcon.c、sun4i_drv.c、sun4i_backend.c等文件。因为这些文件的配置是参考其他大佬给的资料完成,不予以外示。

4、uboot相关配置
本次不进行uboot的相关编译。因为在uboot启动完成到内核启动,会有花屏一闪而过。一直没有很好的解决。相关参数如下(有些为下面单词前两个字母的缩写):

xres; /* 可见分辨率 /
yres;
/
时序: 所有值都以像素时钟为单位(当然除了像素时钟本身) /
pixclock; /
像素时钟(单位:微秒) /
left_margin; /
从行同步到图像左边沿的像素时钟数 /
right_margin; /
从行同步到图像右边沿的像素时钟数 /
upper_margin; /
从场同步到图像上边沿的行数 /
lower_margin; /
从场同步到图像下边沿的行数 /
hsync_len; /
行同步时间长度(像素时钟数) /
vsync_len; /
场同步时间长度(行数) /
sync; /
see FB_SYNC_* /
vmode; /
see FB_VMODE_* */

5、进行编译与运行
将编译后的zImage,suniv-f1c100s-licheepi-nano.dtb下载到sunxi-fel.exe同级目录下。
用两根type-c线将电脑与CherryPi-F1C200S连接起来,在串口终端以115200 8n1配置打开串口。
按一下板载RST键后,在windows命令终端进入到sunxi-fel.exe同级目录下,执行以下命令可以看到串口终端有log打印,LCD屏有log显示:

sunxi-fel -p uboot u-boot-sunxi-with-spl.bin write 0x80008000 zImage write 0x80c08000 suniv-f1c100s-licheepi-nano.dtb

可以在串口终端翻阅log,会看到如下信息:
在这里插入图片描述
在这里插入图片描述

QQ:763314235,会在第一时间处理。


http://www.ppmy.cn/news/180416.html

相关文章

嵌入式Linux--荔枝派Zero--V3s--ST7789v

文章目录 前言血的教训&#xff1a;没有CS引脚是没法运行的&#xff01; 一、原理图二、ubootU-Boot编译配置文件编译uboot 三、Linux Kernel四、设备树第一步&#xff1a;注释掉自带的视频输出第二步&#xff1a;增加屏幕驱动节点 五、烧录荔枝派是怎么启动的TF卡上需要有什么…

全志v3s学习笔记(5)——主线Linux编译与烧录

一、安装交叉编译环境 交叉编译环境跟uboot使用的一样。 参考&#xff1a;arm-linux-gnueabihf 交叉编译工具链安装 二、下载linux源码 # 默认是zero-4.10.y分支&#xff1a; git clone https://github.com/Lichee-Pi/linux.git# 或者zero-4.13.y对网卡的支持更好 git clone …

台式 华硕 win7 耳机 插到 主机 耳机没有声音

台式接了显示器的&#xff0c;显示器下面有个耳机接口&#xff0c;因此就有一个显示器音频。那个地方接耳机有声音的。 在主机哪里有耳机接口&#xff0c;插上没声音&#xff0c;我以为下个驱动精灵&#xff0c;就能解决。然而驱动精灵驱动以后&#xff0c;还是耳机还是没声音…

华硕台式机VT-x设置

华硕台式机设置虚拟化支持&#xff08;在使用虚拟机时&#xff0c;提示vt-x不可用&#xff09; 1.开机时&#xff0c;显示华硕主界面&#xff0c;按delete键&#xff0c;进入华硕主板控制界面&#xff1b; 2.选择主界面的“高级模式”&#xff1b; 3.选择进入advanced&#x…

华硕重装后进入bios_华硕台式机重装系统win10按哪个键进入bios设置

需要为台式机进行重装系统win10的用户&#xff0c;可以在开机时按下DEL键进入bios设置U盘启动重装系统win10。 1.先将U盘插入到电脑中&#xff0c;然后我们在开机出现第一屏启动信息界面时按键盘上的DEL键&#xff0c;直接进入BIOS。 2.进入后按键盘上的右方向键找到“Advanced…

台式计算机华硕电源,美声大师+智能电源 华硕台式电脑M51AC

美声大师智能电源 华硕台式电脑M51AC 2014年04月01日 14:16作者&#xff1a;厂商投稿文章出处&#xff1a;泡泡网原创 分享 随着用户对台式电脑的性能需求日趋多元化&#xff0c;PC产品的创新之路也在向多维度的层面不断拓展。从极速运行到高清影音&#xff0c;从整机内配到技亮…

华硕计算机配置清单表,2019年8月华硕ROG系列全家桶奢华主机配置清单推荐

一直以来&#xff0c;华硕ROG系列硬件都是给人高端奢华的印象&#xff0c;让不少普通用户望而却步。然而对于土豪而言&#xff0c;性价比是不存在的&#xff0c;都是怎么高端奢华怎么来。接下来就为大家推荐一套主板、显卡、散热器、机箱、电源均采用了华硕ROG高端系列硬件的全…

台式计算机网卡型号怎么查找,怎么确定台式机无线网卡驱动版本 台式机无线网卡驱动版本查看方法...

台式机可以无线上网已经不是什么新鲜事&#xff0c;只要外接无线网卡即可实现台式机无线上网&#xff0c;台式机无线网卡大体上分为PCI无线网卡和USB无线网卡&#xff0c;因为USB借口的方便性&#xff0c;现在非常流行USB无线网卡&#xff0c;但是市面上的USB无线网卡种类繁杂&…