Wallytina 发表于 2026-1-4 09:08:00

使用nRF54L15移植LVGL驱动ST7789屏幕

nRF54L15作为Nordic新的旗舰芯片,支持最大32M的SPI和64M的sQSPI,今天分享一下使用32M的SPI添加LVGL组件驱动ST7789芯片一、使用的外设驱动是使用 nRF54L15 的高速SPI00 ,速率可以达到32M需要注意的是,使用SPI00,
第一点,GPIO一点需要是使用P2的特定引脚,具体可以看我的博客
Nordic随笔】nRF54L15的引脚说明第二点,需要使用高驱动模式&pinctrl {    spi21_default: spi21_default {      group1 {            psels = <NRF_PSEL(SPIM_MISO, 1, 14)>,                  <NRF_PSEL(SPIM_MOSI, 1, 13)>,                  <NRF_PSEL(SPIM_SCK, 1, 11)>;            nordic,drive-mode = <NRF_DRIVE_H0H1>;      };    };    spi21_sleep: spi21_sleep {      group1 {            psels = <NRF_PSEL(SPIM_MISO, 1, 14)>,                  <NRF_PSEL(SPIM_MOSI, 1, 13)>,                  <NRF_PSEL(SPIM_SCK, 1, 11)>;            low-power-enable;      };    };}二、使用的初始代码v3.1.0\zephyr\samples\subsys\display\lvgl
需要需要在这个例程添加驱动屏幕的设备树即可三、修改设备树添加spi设备添加st7789节点将display的节点改成st7789/ {      /delete-node/ leds;      /delete-node/ buttons;      /delete-node/ aliases;    chosen {      zephyr,display = &st7789v;      // nordic,pm-ext-flash = &zd26q16;      // user,ext-flash = &zd26q16;    };    mipi_dbi    {    compatible = "zephyr,mipi-dbi-spi";    // spi-dev = <&spi21>;                        /* 你的 SPI 控制器 */    spi-dev = <&spi00>;                        /* 你的 SPI 控制器 */    dc-gpios = <&gpio1 5 GPIO_ACTIVE_HIGH>;    reset-gpios = <&gpio1 6 GPIO_ACTIVE_LOW>;      #address-cells = <1>;    #size-cells = <0>;    write-only;    st7789v: st7789v@0 {      compatible = "sitronix,st7789v";      reg = <0>;      mipi-max-frequency = <32000000>;      mipi-mode = "MIPI_DBI_MODE_SPI_4WIRE";   /* 必须添加 */      width= <240>;      height = <320>;      x-offset = <0>;      y-offset = <0>;      vcom= <0x3f>;      gctrl = <0x35>;      vrhs= <0x12>;      vdvs= <0x20>;      mdac= <0x00>;      gamma = <0x01>;      colmod = <0x05>;   /* 16‑bit RGB565,对应你写的 COLMOD 0x55 */      lcm   = <0x2c>;      porch-param= 00 33 33];      cmd2en-param = [5a 69 02 01];      pwctrl1-param = ;      pvgam-param   = 0 04 0D 11 13 2B 3F 54 4C 18 0D 0B 1F 23];      nvgam-param   = 0 04 0C 11 13 2C 3F 44 51 2F 1F 1F 20 23];      ram-param   = [00 F0];      rgb-param   = 14];      };    };      control_pins {                compatible = "dev-gpios";                backlight_pin: backlight_pin {                        gpios = <&gpio1 9 GPIO_ACTIVE_LOW>;                        label = "back light pin";                };    };};SPI:&spi00 {    //cs-gpios = <&gpio2 5 GPIO_ACTIVE_LOW>;      cs-gpios = <&gpio1 12 GPIO_ACTIVE_LOW>;    pinctrl-0 = <&spi00_default>;    pinctrl-1 = <&spi00_sleep>;    max-frequency = <DT_FREQ_M(32)>;};四、测试屏幕是320*240的,刷新率有点低,大屏估计得用QSPI

页: [1]
查看完整版本: 使用nRF54L15移植LVGL驱动ST7789屏幕