Problem using the driver ST7789V in TFT display

Hello,

I have a waveshare 1.69’ LCD display with the ST7789V2 driver and I'm trying to get it to work with the nRF54L15-DK board using the ST7789V driver on zephyr (docs.zephyrproject.org/.../sitronix,st7789v.html). I used the nRF54L15-DK board because it allows you to increase the spi speed up to 32 MHz.
To interact with the display, I'm trying to use the LVGL library. (https://docs.nordicsemi.com/bundle/ncs-1.8.0/page/kconfig/CONFIG_LVGL.html)

Sdk version: 2.9.1
Toolchain: 2.9.1
Board: nRF54L15 dk
Display: 1.69" LCD (240x280); ST7789V2 driver

For the overlay file, I based it on some posts on devzone:
https://devzone.nordicsemi.com/f/nordic-q-a/116909/working-devicetree-for-st7789v-display
https://devzone.nordicsemi.com/f/nordic-q-a/118566/inquiry-on-st7789v-mipi-dbi-driver-configuration-in-ncs-2-9-0/528828
https://devzone.nordicsemi.com/f/nordic-q-a/118950/define-device_name_get-dev_id-_concat-__device_-dev_id/523091
https://docs.nordicsemi.com/bundle/ncs-latest/page/zephyr/releases/migration-guide-3.7.html#display

Overlay file:

#include <zephyr/dt-bindings/mipi_dbi/mipi_dbi.h>
#include <zephyr/dt-bindings/display/panel.h>

/ {
	chosen {
		zephyr,display = &st7789v2;
	};

    mipi_dbi {
        compatible = "zephyr,mipi-dbi-spi";
        dc-gpios = <&gpio1 12 GPIO_ACTIVE_HIGH>;
        reset-gpios = <&gpio1 11 GPIO_ACTIVE_LOW>;
        spi-dev = <&spi00>;
        #address-cells = <1>;
        #size-cells = <0>;

        st7789v2: st7789v2@0 {
            status = "okay";
            compatible = "sitronix,st7789v";
            mipi-max-frequency = <8000000>;
            mipi-mode = <MIPI_DBI_MODE_SPI_4WIRE>;
            reg = <0>;
            width = <240>;
            height = <280>;
            x-offset = <0>;
            y-offset = <0>;
            vcom = <0x19>;
            gctrl = <0x35>;
            mdac = <0x00>;
            lcm = <0x2C>;
            colmod = <0x05>;
            gamma = <0x01>;
            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];
        };
    };
};



&spi00 {
    status = "okay";
    compatible = "nordic,nrf-spim";
    cs-gpios = <&gpio2 10 GPIO_ACTIVE_LOW>;         

    pinctrl-0 = <&spi00_default>;
    pinctrl-1 = <&spi00_sleep>;
    pinctrl-names = "default", "sleep";


    mx25r64: mx25r6435f@0{
        status = "disabled";
    };
};

&spi00_default {
	group1 {
		psels = <NRF_PSEL(SPIM_SCK, 2, 6)>,
				<NRF_PSEL(SPIM_MOSI, 2, 8)>,
				<NRF_PSEL_DISCONNECTED(SPIM_MISO)>;
	};
};




prj.conf file:
# Hardware config
CONFIG_SPI=y
CONFIG_SPI_NRFX=y
CONFIG_SPI_NRFX_RAM_BUFFER_SIZE=32

# Display config
CONFIG_ST7789V=y
CONFIG_ST7789V_RGB565=y
CONFIG_DISPLAY=y
CONFIG_DISPLAY_LOG_LEVEL_ERR=y

# System config
CONFIG_MAIN_STACK_SIZE=2048
CONFIG_LOG=y

# LVGL config
CONFIG_LVGL=y
CONFIG_LV_MEM_CUSTOM=y
CONFIG_LV_USE_LOG=y
CONFIG_LV_COLOR_DEPTH_16=y
CONFIG_LV_COLOR_16_SWAP=y
CONFIG_LV_Z_BITS_PER_PIXEL=16
CONFIG_LV_USE_THEME_DEFAULT=y
CONFIG_LV_THEME_DEFAULT_DARK=y
CONFIG_LV_USE_METER=y


Main file:
#include <zephyr/device.h>
#include <zephyr/drivers/display.h>
#include <lvgl.h>
#include <stdio.h>
#include <string.h>
#include <zephyr/logging/log.h>
#include <zephyr/logging/log_ctrl.h>

LOG_MODULE_REGISTER(main, LOG_LEVEL_DBG);

int main(void)
{
	LOG_INF("LCD Screen test");
	return 0;
}

With these files, the code compiles and flashes, but when I look at the terminal the following error appears:

*** Booting nRF Connect SDK v2.9.1-60d0d6c8d42d ***
*** Using Zephyr OS v3.7.99-ca954a6216c9 ***
[00:00:00.581,722] <err> os: ***** SECURE FAULT *****
[00:00:00.581,728] <err> os:   Address: 0x22
[00:00:00.581,732] <err> os:   Attribution unit violation
[00:00:00.581,741] <err> os: r0/a1:  0x00000000  r1/a2:  0x00000005  r2/a3:  0x0007467c
[00:00:00.581,748] <err> os: r3/a4:  0x00000000 r12/ip:  0x20013f8a r14/lr:  0x000689e1
[00:00:00.581,753] <err> os:  xpsr:  0x61000000
[00:00:00.581,757] <err> os: Faulting instruction address (r15/pc): 0x00069352
[00:00:00.581,775] <err> os: >>> ZEPHYR FATAL ERROR 41: Unknown error on CPU 0
[00:00:00.581,796] <err> os: Current thread: 0x20014038 (unknown)
[00:00:00.651,861] <err> os: Halting system


Could you please help me resolve this issue? 
Other question, with this overlay file configuration how I configure backlight pin of display ?

Thanks,
GoncaloS


Parents Reply Children
No Data
Related