Page 1 of 1

Getting LVGL working on Pico Mini B

Posted: 2024-08-08 13:43
by raffy
Hi, im trying to get an ST7735 working on my Pico Mini B with framebuffer but i keep getting this:

Code: Select all

[    0.088840] rockchip-spi ff500000.spi: no high_speed pinctrl state
[    0.089798] rockchip-spi ff500000.spi: chipselect 0 already in use
[    0.089828] spi_master spi0: spi_device register error /spi@ff500000/fbtft@0
[    0.089845] spi_master spi0: Failed to create SPI device for /spi@ff500000/fbtft@0
[    0.089878] rockchip-spi ff500000.spi: chipselect 0 already in use
[    0.089895] spi_master spi0: spi_device register error /spi@ff500000/lcd@0
[    0.089918] spi_master spi0: Failed to create SPI device for /spi@ff500000/lcd@0
And no /dev/fb0 is presnet once the device is booted.
i've been trying on the buildroot variant of the image.

i followed the guide on the Luckfox wiki and also the one here: https://bbs.elecfans.com/jishu_2390267_1_1.html

is there something im missing? is it possibile at all with this variant of the Pico board?

Re: Getting LVGL working on Pico Mini B

Posted: 2024-08-09 2:11
by Crocodile
We have tested controlling the Pico LCD 1.3 using the framebuffer on the Pico Mini B. According to the information you've provided, it appears that the chip select 0 pin is occupied. Please check whether the settings in the device tree are correct.

Re: Getting LVGL working on Pico Mini B

Posted: 2024-08-09 9:00
by raffy
Hi Crocodile,
Crocodile wrote: 2024-08-09 2:11 We have tested controlling the Pico LCD 1.3 using the framebuffer on the Pico Mini B. According to the information you've provided, it appears that the chip select 0 pin is occupied. Please check whether the settings in the device tree are correct.
this is the content of my rv1103g-luckfox-pico-mini-b.dts:

Code: Select all

/dts-v1/;

#include "rv1103.dtsi"
#include "rv1106-evb.dtsi"
#include "rv1103-luckfox-pico-ipc.dtsi"

/ {
	model = "Luckfox Pico Mini B";
	compatible = "rockchip,rv1103g-38x38-ipc-v10", "rockchip,rv1103";
};

/**********SFC**********/
&sfc {
	status = "okay";
	flash@0 {
		compatible = "spi-nand";
		reg = <0>;
		spi-max-frequency = <75000000>;
		spi-rx-bus-width = <4>;
		spi-tx-bus-width = <1>;
	};
};

/**********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_dwc3 {
	status = "okay";
	dr_mode = "peripheral";
};

/**********SPI**********/
/* SPI0_M0 */
/*
&spi0 {
	status = "disabled";
	spidev@0 {
		spi-max-frequency = <50000000>;
	};
};
*/
/**********spi**********/
/{
	/*LCD_CS -- USE MISO*/
    gpio1pc3:gpio1pc3 {
        compatible = "regulator-fixed";
        pinctrl-names = "default";
        pinctrl-0 = <&gpio1_pc3>;
        regulator-name = "gpio1_pc3";
        regulator-always-on;
    };

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

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

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

&pinctrl {
	/*LCD_CS -- USE MISO*/
    gpio1-pc3 {
        gpio1_pc3:gpio1-pc3 {
            rockchip,pins = <1 RK_PC3 RK_FUNC_GPIO &pcfg_pull_none>;
        };
    };

	/*LCD_BL*/
	gpio0-pa4 {
		gpio0_pa4:gpio0-pa4 {
			rockchip,pins =	<0 RK_PA4 RK_FUNC_GPIO &pcfg_pull_none>;
		};
	};

	/*LCD_DC*/
    gpio1-pd0 {
        gpio1_pd0:gpio1-pd0 {
            rockchip,pins = <1 RK_PD0 RK_FUNC_GPIO &pcfg_pull_none>;
        };
    };

	/*LCD_RES*/
    gpio1-pd1 {
        gpio1_pd1:gpio1-pd1 {
            rockchip,pins = <1 RK_PD1 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>, */	// 先不动,还用uart4作为bl
                /* spi_mosi_m0 */
                <1 RK_PC2 6 &pcfg_pull_none>;
        };
    };
};

&spi0 {
	status = "okay";
	pinctrl-names = "default";
	pinctrl-0 = <&spi0m0_pins>;
	

	lcd: lcd@0{						
		status = "okay";
		compatible = "sitronix,st7735";
		reg = <0>;					

		spi-max-frequency = <6000000>;
		spi-cpol;
		spi-cpha;
		rotate = <0>;
		fps = <30>;
		rgb;
		buswidth = <8>;

		cs = <&gpio1 RK_PC3 GPIO_ACTIVE_LOW>;		//spi0_miso
		led = <&gpio0 RK_PA4 GPIO_ACTIVE_LOW>;		//BL
		dc = <&gpio1 RK_PD0 GPIO_ACTIVE_HIGH>;		//DC
		reset = <&gpio1 RK_PD1 GPIO_ACTIVE_LOW>;	//RES

		debug = <0x7>;
	};
};

/**********I2C**********/
/* I2C3_M1 */
&i2c3 {
	status = "disabled";
	clock-frequency = <100000>;
};

/**********UART**********/
/* UART3_M1 */
&uart3 {
	status = "disabled";
};

/* UART4_M1 */
&uart4 {
	status = "disabled";
};

/**********PWM**********/
/* PWM1_M0 */
&pwm1 {
	status = "disabled";
};
it looks correct to me unless im missing something.

Re: Getting LVGL working on Pico Mini B

Posted: 2024-08-10 2:17
by Crocodile
Hello, please try to comment out the entire spi0 node in the rv1103-luckfox-pico-ipc.dtsi file, as the settings of the two SPI interfaces are conflicting with each other.

Re: Getting LVGL working on Pico Mini B

Posted: 2024-08-10 23:07
by raffy
Crocodile wrote: 2024-08-10 2:17 Hello, please try to comment out the entire spi0 node in the rv1103-luckfox-pico-ipc.dtsi file, as the settings of the two SPI interfaces are conflicting with each other.
It worked :), thanks for the help, i got /dev/fb0 file and i get "noise" on the screen if i run: cat /dev/urandom > /dev/fb0

I just noticed that in the wiki is indicated to "Comment out the original SPI0 configuration first" but i tought it was the one in the mini B dts.