官方sdk的fbtft驱动可以直接驱动,只需以下简单几步:
1、修改dts
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
* Copyright (c) 2023 Luckfox Electronics Co., Ltd.
*/
/dts-v1/;
#include "rv1103.dtsi"
#include "rv1106-evb.dtsi"
#include "rv1103-luckfox-pico-mini-ipc.dtsi"
/ {
model = "Luckfox Pico Mini A";
compatible = "rockchip,rv1103g-38x38-ipc-v10", "rockchip,rv1103";
/*LCD_CS*/
gpio1pc0:gpio1pc0 {
compatible = "regulator-fixed";
pinctrl-names = "default";
pinctrl-0 = <&gpio1_pc0>;
regulator-name = "gpio1_pc0";
regulator-always-on;
};
/*LCD_BL*/
gpio1pc3:gpio1pc3 {
compatible = "regulator-fixed";
pinctrl-names = "default";
pinctrl-0 = <&gpio1_pc3>;
regulator-name = "gpio1_pc3";
regulator-always-on;
};
/*LCD_DC*/
gpio1pc7:gpio1pc7 {
compatible = "regulator-fixed";
pinctrl-names = "default";
pinctrl-0 = <&gpio1_pc7>;
regulator-name = "gpio1_pc7";
regulator-always-on;
};
/*LCD_RES*/
gpio0pa4:gpio0pa4 {
compatible = "regulator-fixed";
pinctrl-names = "default";
pinctrl-0 = <&gpio0_pa4>;
regulator-name = "gpio0_pa4";
regulator-always-on;
};
};
/**********SDMMC**********/
&sdmmc {
max-frequency = <50000000>;
no-sdio;
no-mmc;
bus-width = <4>;
cap-mmc-highspeed;
cap-sd-highspeed;
disable-wp;
pinctrl-names = "default";
pinctrl-0 = <&sdmmc0_clk &sdmmc0_cmd &sdmmc0_det &sdmmc0_bus4>;
status = "okay";
};
/**********ETH**********/
&gmac {
status = "disabled";
};
/**********USB**********/
//&usbdrd {
// status = "disabled";
//};
//&usbdrd_dwc3 {
// status = "disabled";
//};
//&u2phy {
// status = "disabled";
//};
//&u2phy_otg {
// status = "disabled";
//};
// /**********I2C**********/
&i2c3 {
status = "okay";
pinctrl-0 = <&i2c3m1_xfer>;
clock-frequency = <100000>;
};
&pinctrl {
/*LCD_CS*/
gpio1-pc0 {
gpio1_pc0:gpio1-pc0 {
rockchip,pins = <1 RK_PC0 RK_FUNC_GPIO &pcfg_pull_none>;
};
};
/*LCD_BL*/
gpio1-pc3 {
gpio1_pc3:gpio1-pc3 {
rockchip,pins = <1 RK_PC3 RK_FUNC_GPIO &pcfg_pull_none>;
};
};
/*LCD_DC*/
gpio1-pc7 {
gpio1_pc7:gpio1-pc7 {
rockchip,pins = <1 RK_PC7 RK_FUNC_GPIO &pcfg_pull_none>;
};
};
/*LCD_RES*/
gpio0-pa4 {
gpio0_pa4:gpio0-pa4 {
rockchip,pins = <0 RK_PA4 RK_FUNC_GPIO &pcfg_pull_none>;
};
};
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>;
};
};
};
&spi0 {
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&spi0m0_pins>; // 包含clk,mi,mo
// cs-gpios = <&gpio1 RK_PC0 1>;// 片选,也可以用spi0m0_cs0代替,需要确认pinctrl中是否定义了,1表示高电平有效
// cs-gpios = <&gpio1 26 1>; // 26=gpio1C2=3(C)*8+2
#address-cells = <1>; // 挂载设备的描述位,比如两个设备就是0,1,设1,若四个则是00-10,设2
#size-cells = <0>; // 默认不可改
/*
spidev@0 { // 模拟出spi0设备,0对应的spi下挂载的设备号,和reg一致
compatible = "rockchip,spidev";
spi-max-frequency = <1000000000>;
reg = <0>;
};
*/
lcd: lcd@0{ // 若添加第二个lcd,这里选1
status = "okay";
compatible = "sitronix,st7789v";
reg = <0>; // 若添加第二个lcd,对应选1
spi-max-frequency = <48000000>; //
spi-cpol;
spi-cpha;
rotate = <0>; // 旋转角度,lcd驱动里会读取并设置对应寄存器
fps = <30>;
rgb;
buswidth = <8>;
cs-gpios = <&gpio1 RK_PC0 GPIO_ACTIVE_LOW>;
led-gpios = <&gpio1 RK_PC3 GPIO_ACTIVE_HIGH>;
dc-gpios = <&gpio1 RK_PC7 GPIO_ACTIVE_HIGH>;
reset-gpios = <&gpio0 RK_PA4 GPIO_ACTIVE_LOW>;
debug = <0x0>;//调试信息,打开设置为0x07
};
};
/**********UART**********/
&uart3 {
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&uart3m1_xfer>;
};
//&uart4 {
// status = "okay";
// pinctrl-names = "default";
// pinctrl-0 = <&uart4m1_xfer>;
//};
/**********PWM**********/
// &pwm0 {
// status = "okay";
// pinctrl-names = "active";
// pinctrl-0 = <&pwm0m0_pins>;
// // pinctrl-0 = <&pwm0m1_pins>;
// };
// &pwm1 {
// status = "okay";
// pinctrl-names = "active";
// pinctrl-0 = <&pwm1m0_pins>;
// // pinctrl-0 = <&pwm1m1_pins>;
// };
//&pwm2 {
// status = "okay";
// pinctrl-names = "active";
// pinctrl-0 = <&pwm2m2_pins>;
//};
//&pwm3 {
// status = "okay";
// pinctrl-names = "active";
// pinctrl-0 = <&pwm3m2_pins>;
//};
//&pwm4 {
// status = "okay";
// pinctrl-names = "active";
// pinctrl-0 = <&pwm4m2_pins>;
//};
//&pwm5 {
// status = "okay";
// pinctrl-names = "active";
// pinctrl-0 = <&pwm5m2_pins>;
//};
//&pwm6 {
// status = "okay";
// pinctrl-names = "active";
// pinctrl-0 = <&pwm6m2_pins>;
//};
//&pwm7 {
// status = "okay";
// pinctrl-names = "active";
// pinctrl-0 = <&pwm7m2_pins>;
//};
//&pwm8 {
// status = "okay";
// pinctrl-names = "active";
// // pinctrl-0 = <&pwm8m1_pins>;
// pinctrl-0 = <&pwm8m0_pins>;
//};
//&pwm9 {
// status = "okay";
// pinctrl-names = "active";
// // pinctrl-0 = <&pwm9m1_pins>;
// pinctrl-0 = <&pwm9m0_pins>;
//};
//&pwm10 {
// status = "okay";
// pinctrl-names = "active";
// pinctrl-0 = <&pwm10m1_pins>;
// // pinctrl-0 = <&pwm10m2_pins>;
// // pinctrl-0 = <&pwm10m0_pins>;
//};
//&pwm11 {
// status = "okay";
// pinctrl-names = "active";
// pinctrl-0 = <&pwm11m1_pins>;
// // pinctrl-0 = <&pwm11m2_pins>;
// // pinctrl-0 = <&pwm11m0_pins>;
//};
2、修改内核配置文件luckfox_rv1106_linux_defconfig,增加以下内容
# CONFIG SPI LCD
CONFIG_SPI_MASTER=y
CONFIG_FB_TFT=y
CONFIG_FB_TFT_ST7789V=y
3、一键编译,下载
4、登录输入以下内容填充随机像素。
cat /dev/urandom > /dev/fb0