|
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 = [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]; }; }; 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
|