NRF9161DK LVGL DISPLAY

Hi, 

I am trying to use an ST7789 display with the NRF9161DK, I was following this guide but got no luck:

https://devzone.nordicsemi.com/guides/nrf-connect-sdk-guides/b/peripherals/posts/lvgl-on-a-tft-lcd-display-with-the-nrf9160-dk.

I'm lost on the approach, I switched to a zephyr sample LVGL and configured it for the NRF9161DK and the ST7789, but have some errors configuring the diplay;

ncs\v2.6.1\zephyr\samples\subsys\display\lvgl and ncs\v2.6.1\zephyr\samples\modules\lvgl\demos. 

Wich one should I use?

And the most important question, am I on the rigth path? Can I configure one of the LVGL Zephyr samples to work with the ST7789 and the nrf9161DK?

Can you give me some guidance please?

Thank You

  • Hi, I added it but still nothing. I added a log message and it shows it correctly in the terminal.

    Thank You,

    Daniel

  • Could you add a status="okay"; for the displey in your overlay? 

    Also when you build your application. Do you build it the with the cmake argument -DSHIELD=st7789v_waveshare_240x240 ?

    When you compile your application, is there any warning during the build process? 

    Regards

    Runar

  • This is the command I'm using: 

    west build -b nrf9161dk_nrf9161_ns -- -DSHIELD=st7789v_waveshare_240x240;

    I added the status okay, is it here?

    &arduino_spi {
    	status = "okay";
    	cs-gpios = <&arduino_header 16 GPIO_ACTIVE_LOW>;	/* D10 */
    
    	st7789v_st7789v_waveshare_240x240: st7789v@0 {
    		status="okay";
    		compatible = "sitronix,st7789v";
    		spi-max-frequency = <20000000>;
    		reg = <0>;
    		cmd-data-gpios = <&arduino_header 15 GPIO_ACTIVE_LOW>;	/* D9 */
    		reset-gpios = <&arduino_header 14 GPIO_ACTIVE_LOW>;	/* D8 */
    		width = <240>;
    		height = <240>;
    		x-offset = <0>;
    		y-offset = <0>;
    		vcom = <0x19>;
    		gctrl = <0x35>;
    		vrhs = <0x12>;
    		vdvs = <0x20>;
    		mdac = <0x00>;
    		gamma = <0x01>;
    		colmod = <0x05>;
    		lcm = <0x2c>;
    		porch-param = [0c 0c 00 33 33];
    		cmd2en-param = [5a 69 02 01];
    		pwctrl1-param = [a4 a1];
    		pvgam-param = [D0 04 0D 11 13 2B 3F 54 4C 18 0D 0B 1F 23];
    		nvgam-param = [D0 04 0C 11 13 2C 3F 44 51 2F 1F 1F 20 23];
    		ram-param = [00 F0];
    		rgb-param = [CD 08 14];
    	};
    };
    

    build:

    Loading Zephyr default modules (Zephyr base (cached)).
    -- Application: C:/ncs/v2.6.1/zephyr/samples/modules/lvgl/demos
    -- CMake version: 3.21.0
    -- Using NCS Toolchain 2.6.20240304.889616714482 for building. (C:/ncs/toolchains/cf2149caf2/cmake)
    -- Cache files will be written to: C:/ncs/v2.6.1/zephyr/.cache
    -- Zephyr version: 3.5.99 (C:/ncs/v2.6.1/zephyr)
    -- Found west (found suitable version "1.2.0", minimum required is "0.14.0")
    -- Board: nrf9161dk_nrf9161_ns, Revision: 0.9.0
    -- Shield(s): st7789v_waveshare_240x240
    -- Found host-tools: zephyr 0.16.5 (C:/ncs/toolchains/cf2149caf2/opt/zephyr-sdk)
    -- Found toolchain: zephyr 0.16.5 (C:/ncs/toolchains/cf2149caf2/opt/zephyr-sdk)
    -- Found BOARD.dts: C:/ncs/v2.6.1/zephyr/boards/arm/nrf9161dk_nrf9161/nrf9161dk_nrf9161_ns.dts
    -- Found devicetree overlay: C:/ncs/v2.6.1/zephyr/boards/shields/st7789v_generic/st7789v_waveshare_240x240.overlay
    -- Generated zephyr.dts: C:/ncs/v2.6.1/zephyr/samples/modules/lvgl/demos/build/zephyr/zephyr.dts
    -- Generated devicetree_generated.h: C:/ncs/v2.6.1/zephyr/samples/modules/lvgl/demos/build/zephyr/include/generated/devicetree_generated.h
    -- Including generated dts.cmake file: C:/ncs/v2.6.1/zephyr/samples/modules/lvgl/demos/build/zephyr/dts.cmake
    Parsing C:/ncs/v2.6.1/zephyr/samples/modules/lvgl/demos/Kconfig
    Loaded configuration 'C:/ncs/v2.6.1/zephyr/samples/modules/lvgl/demos/build/zephyr/.config'
    No change to configuration in 'C:/ncs/v2.6.1/zephyr/samples/modules/lvgl/demos/build/zephyr/.config'
    No change to Kconfig header in 'C:/ncs/v2.6.1/zephyr/samples/modules/lvgl/demos/build/zephyr/include/generated/autoconf.h'
    Dropping partition 'nrf_modem_lib_trace' since its size is 0.
    Dropping partition 'nonsecure_storage' since it is empty.
    -- Configuring done
    -- Generating done
    -- Build files have been written to: C:/ncs/v2.6.1/zephyr/samples/modules/lvgl/demos/build
    -- west build: building application
    [0/242] Performing build step for 'tfm'
    [33/37] Linking C executable bin\tfm_s.axf
    Memory region         Used Size  Region Size  %age Used
               FLASH:       32096 B        32 KB     97.95%
                 RAM:       10416 B        32 KB     31.79%
    [37/37] Generating ../bin/tfm_s.hex
    [235/237] Linking C executable zephyr\zephyr.elf
    Memory region         Used Size  Region Size  %age Used
               FLASH:      640960 B       992 KB     63.10%
                 RAM:       81616 B     211608 B     38.57%
            IDT_LIST:          0 GB        32 KB      0.00%
    [237/237] Generating zephyr/merged.hex

    flash:

    -- west flash: rebuilding
    [0/16] Performing build step for 'tfm'
    ninja: no work to do.
    -- west flash: using runner nrfjprog
    -- runners.nrfjprog: reset after flashing requested
    -- runners.nrfjprog: Flashing file: C:\ncs\v2.6.1\zephyr\samples\modules\lvgl\demos\build\zephyr\merged.hex
    [ #################### ]  20.895s | Erase file - Done erasing
    [ #################### ]   4.445s | Program file - Done programming
    [ #################### ]   4.501s | Verify file - Done verifying
    Applying pin reset.-- runners.nrfjprog: Board with serial number flashed successfully.

    Thank you,

    Daniel

  • Hm I can't really see anything wrong there. 

    I compared your settings to some I found on the Zephyr discord and it looks fine

    You could try to add the Chosen part to your overlay to see if it helps(I don't think so since you don't get any devicetree errors

    Just some extra resources that might be helpful 

    https://github.com/zephyrproject-rtos/lvgl/blob/1557cb3e4d5c8dc7bb2e8610b686b5acb157903c/docs/get-started/quick-overview.md 

    https://forum.lvgl.io/

    I'm checking if we have any displays laying around so that I can test it on my end. 

    Regards

    Runar

Related