luckfox-pico-max使用framebuffer驱动ili9431芯片的LCD,使用LVGL显示

1.1内核设置

进入内核目录。

cd /SDK目录/sysdrv/source/kernel
cp ./arch/arm/configs/luckfox_rv1106_linux_defconfig .config
make ARCH=arm menuconfig

在内核中依次开启FB相关的驱动

CONFIG_VT_CONSOLE=y
CONFIG_FRAMEBUFFER_CONSOLE=y
CONFIG_FONTS=y

将编译芯片对应驱动程序选项打开:默认是打开st7735R和ST7789v,对应程序在/luckfox-pico/sysdrv/source/kernel/drivers/staging/fbtft文件夹内,如果没有对应芯片驱动程序 ,则自行添加
在这里插入图片描述

在这里插入图片描述

保存配置

make ARCH=arm savedefconfig
cp defconfig arch/arm/configs/luckfox_rv1106_linux_defconfig

1.2 设备树文件​

要驱动 LCD,除了在内核中启用 FB 相关驱动程序外,还必须确保所有与 LCD 通讯的引脚功能正常。在此之前,我们需要确定 Pico-LCD-1.3 与 Luckfox Pico Pro/Max 的连接引脚。设备树用于描述硬件资源,因此需要对设备树进行相应的修改。

在这里插入图片描述
按键相关的引脚如果没使用可以不设置
在这里插入图片描述

1.2.2设备树编写
  1. 在默认的设备树中, GPIO1_C7_d 的默认功能是 PWM 功能,在程序中,我们希望通过读取该引脚电平判断按键状态,所以我们需要将该引脚配置为普通IO。打开<SDK目录>/sysdrv/source/kernel/arch/arm/boot/dts/rv1106g-luckfox-pico-pro-max.dts
/{
   
   
    gpio1pc7:gpio1pc7 {
   
   
        compatible = "regulator-fixed";
        pinctrl-names = "default";
        pinctrl-0 = <&gpio1_pc7>;
        regulator-name = "gpio1_pc7";
        regulator-always-on;
    };
};

&pinctrl {
   
   
    gpio1-pc7 {
   
   
        gpio1_pc7:gpio1-pc7 {
   
   
            rockchip,pins = <1 RK_PC7 RK_FUNC_GPIO &pcfg_pull_up>;
        };
    };
};
  1. SPI 配置需要禁用spidev@0,否则fb无法进行初始化。
    如果是st7789v等其它芯片,则将ili9341@0改为芯片名@0,如st7789@0
    compatible改为"sitronix,st7789v"
&spi0 {
   
   
	status = "okay";
	pinctrl-names = "default";
	pinctrl-0 = <&spi0m0_cs0 &spi0m0_pins>;			
	spidev@0 {
   
   //一定要禁用
		status = "disabled";
	};
	ili9341@0{
   
   						
		status = "okay";
		compatible = "ilitek,ili9341"; 
		reg = <0>;			
		spi-max-frequency = <20000000>;			
		fps = <30>;
		buswidth = <8>;
		debug = <0x7>;
		led-gpios = <&gpio2 RK_PB0 GPIO_ACTIVE_LOW>;//BL
		dc = <&gpio2 RK_PB1 GPIO_ACTIVE_HIGH>;		//DC
		reset = <&gpio1 RK_PC3 GPIO_ACTIVE_LOW>;	//RES
	};
};

&pinctrl {
   
   
    spi0 {
   
   
        /omit-if-no-ref/
        spi0m0_pins: spi0m0-pins {
   
   
            rockchip,pins =
                /* spi0_clk_m0 */
                <1 RK_PC1 4 &pcfg_pull_none>,
                /* spie_miso_m0 */
                // <1 RK_PC3 6 &pcfg_pull_none>,
                /* spi_mosi_m0 */
                <1 RK_PC2 6 &pcfg_pull_none>;
        };
    };
};

完整dts文件如下:

// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
 * Copyright (c) 2022 Rockchip Electronics Co., Ltd.
 */

/dts-v1/;

#include "rv1106.dtsi"
#include "rv1106-evb.dtsi"
#include "rv1106-luckfox-pico-pro-max-ipc.dtsi"

/ {
   
   
	model = "Luckfox Pico Max";
	compatible = "rockchip,rv1103g-38x38-ipc-v10", "rockchip,rv1106";

	/*LCD_BL*/
	gpio2pb0:gpio2pb0 {
   
   
		compatible = "regulator-fixed";
		pinctrl-names = "default";
		pinctrl-0 = <&gpio2_pb0>;
		regulator-name = "gpio2_pb0";
		regulator-always-on;
	};

	/*LCD_DC*/
    gpio2pb1:gpio2pb1 {
   
   
		compatible = "regulator-fixed";
		pinctrl-names = "default";
		pinctrl-0 = <&gpio2_pb1>;
		regulator-name = "gpio2_pb1";
		regulator-always-on;
	};

	/*LCD_RES*/
    gpio1pc3:gpio1pc3 {
   
   
        compatible = "regulator-fixed";
        pinctrl-names = "default";
        pinctrl-0 = <&gpio1_pc3>;
        regulator-name = "gpio1_pc3";
        regulator-always-on;
    };

	/*KEY*/
	gpio2pa0:gpio2pa0 {
   
   
		compatible = "regulator-fixed";
		pinctrl-names = "default";
		pinctrl-0 = <&gpio2_pa0>;
		regulator-name = "gpio2_pa0";
		regulator-always-on;
	};

	gpio2pa1:gpio2pa1 {
   
   
		compatible = "regulator-fixed";
		pinctrl-names = "default";
		pinctrl-0 = <&gpio2_pa1>;
		regulator-name = "gpio2_pa1";
		regulator-always-on;
	};

	gpio2pa2:gpio2pa2 {
   
   
		compatible = "regulator-fixed";
		pinctrl-names = "default";
		pinctrl-0 = <&gpio2_pa2>;
		regulator-name = "gpio2_pa2";
		regulator-always-on;
	};

	gpio2pa3:gpio2pa3 {
   
   
		compatible = "regulator-fixed";
		pinctrl-names = "default";
		pinctrl-0 = <&gpio2_pa3>;
		regulator-name = "gpio2_pa3";
		regulator-always-on;
	};
	
	gpio2pa4:gpio2pa4 {
   
   
		compatible = "regulator-fixed";
		pinctrl-names = "default";
		pinctrl-0 = <&gpio2_pa4>;
		regulator-name = "gpio2_pa4";
		regulator-always-on;
	};

	gpio2pa5:gpio2pa5 {
   
   
		compatible = "regulator-fixed";
		pinctrl-names = "default";
		pinctrl-0 = <&gpio2_pa5&g
<think>好的,我需要帮助用户了解LuckFox Pico RV1106的显示屏规格、参数和适配情况。首先,根据用户提供的引用[2],LuckFox Pico Max使用framebuffer驱动ili9431芯片LCD,并通过LVGL显示。这提示我RV1106可能也采用类似的驱动方式,但需要确认具体型号的适配情况。 接下来,用户询问的是RV1106的显示屏信息,而引用中提到的Pico Pro/Max可能与RV1106相关,但需要区分具体型号。引用[2]提到需要修改设备树以适配LCD,这说明显示屏的适配涉及内核驱动和设备树配置。因此,我应该重点介绍常见的显示屏参数,如分辨率、接口类型、驱动芯片,以及适配所需的步骤,比如设备树修改和LVGL配置。 另外,用户可能关心如何连接显示屏和具体的引脚配置,引用[2]提到需要确认连接引脚,这部分需要详细说明。同时,确保内核中的FB驱动已启用,这一点也很重要。最后,可能需要提到社区资源或官方文档作为参考,帮助用户进一步解决问题。</think>关于LuckFox Pico RV1106的显示屏适配信息,以下是基于官方文档和开发实践的总结: ### 1. **显示屏规格与参数** LuckFox Pico RV1106开发板支持的显示屏型号通常为**Pico-LCD-1.3**(基于ILI9341驱动芯片),其参数如下: - **分辨率**:240x320像素 - **接口类型**:SPI或RGB并行接口(具体取决于硬件版本) - **色彩深度**:16位RGB(支持65536色) - **触控功能**:部分型号支持电阻式触控(需额外配置XPT2046芯片- **供电电压**:3.3V ### 2. **硬件连接** 显示屏与LuckFox Pico RV1106的连接需通过GPIO引脚实现,典型引脚配置如下: | LCD引脚 | LuckFox Pico GPIO功能 | 物理引脚号 | |---------|-----------------------|------------| | SCL/CLK | SPI_CLK | 15 | | SDA/MOSI| SPI_MOSI | 16 | | RESET | GPIO1_C7 | 38 | | DC | GPIO1_C6 | 36 | | CS | SPI_CS0 | 14 | ### 3. **软件适配步骤** 1. **内核配置** 需在内核中启用`CONFIG_FB`、`CONFIG_SPI`及相关LCD驱动(如`CONFIG_FB_ILI9341`),并确保SPI总线速率与显示屏匹配[^2]。 2. **设备树修改** 在设备树文件(如`luckfox-pico-common.dtsi`)中添加SPI节点和显示屏参数: ```dts &spi1 { status = "okay"; ili9341@0 { compatible = "ilitek,ili9341"; reg = <0>; spi-max-frequency = <40000000>; dc-gpios = <&gpio1 6 GPIO_ACTIVE_HIGH>; reset-gpios = <&gpio1 7 GPIO_ACTIVE_LOW>; }; }; ``` 3. **LVGL配置** 若使用LVGL图形库,需在用户层设置帧缓冲(framebuffer)接口: ```c static lv_disp_drv_t disp_drv; lv_disp_drv_init(&disp_drv); disp_drv.flush_cb = fb_flush; lv_disp_drv_register(&disp_drv); ``` ### 4. **常见问题与优化** - **显示闪烁**:调整SPI时钟频率或检查电源稳定性。 - **颜色异常**:确认RGB数据格式(如`RGB565`或`BGR565`)与驱动配置一致。 - **触控校准**:使用`tslib`库进行触控屏校准,并修改`/etc/pointercal`文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值