T-Dongle-S3开发笔记——移植LVGL

添加lvgl组件 

idf.py add-dependency lvgl/lvgl>=8.*

新建终端执行命令后出现了新的文件:

清除再编译后才会出现lvgl库

优化为本地组件

以上方式修改了组件文件内容重新编译后文件又会变回去。

所以我们要把lvgl变成本地组件

1、要把 idf_component.yml 文件删除

2、把managed_components\lvgl__lvgl命名更改为components/lvgl

3、项目路径下的CMakeLists.txt添加components\lvgl路径

4、进入menuconfig配置lvgl ,取消选中“Uncheck this to use custom lv_conf.h”。以lv_conf.h进行配置

添加lvgl_esp32_drivers

 git clone https://github.com/lvgl/lvgl_esp32_drivers.git

根目录CMakeLists.txt添加:

set(EXTRA_COMPONENT_DIRS 
"components/lvgl" 
"components/lvgl_esp32_drivers"
)

报错1:

IDF 5.0 及以上版本中 driver 已经不再作为 IDF 项目的基础组件,要使用这些非基础组件必须在 IDF 项目组件的 CMakeLists.txt 文件内明确指出。

解决方法:lvgl_esp32_drivers组件下的CMakeLists.txt添加driver

idf_component_register(SRCS ${SOURCES}
                       INCLUDE_DIRS ${LVGL_INCLUDE_DIRS}
                       REQUIRES lvgl driver)

报错2 

bit_num 改为 duty_resolution

报错3

myproject/components/lvgl_esp32_drivers/lvgl_tft/esp_lcd_backlight.c:67:43: error: 'SIG_GPIO_OUT_IDX' undeclared (first use in this function)

添加头文件

#include <soc/gpio_sig_map.h>

报错4

implicit declaration of function 'gpio_matrix_out'; did you mean 'gpio_iomux_out'? [-Werror=implicit-function-declaration]

添加头文件 (vscode上的提示功能还不行,报错3可以提示)

#include <rom/gpio.h>

报错5

error: 'LV_HOR_RES_MAX' undeclared (first use in this function); 
did you mean 'LV_HOR_RES'?

lvgl_helpers.h添加定义

#define LV_HOR_RES_MAX  160
#define LV_HOR_RES_MAX  80

报错6

/myproject/components/lvgl_esp32_drivers/lvgl_tft/st7735s.c:101:9: error: implicit declaration of function 'gpio_pad_select_gpi 
'; did you mean 'esp_rom_gpio_pad_select_gpio'? [-Werror=implicit-function-declaration]

disp_spi.h 添加头文件

#include <rom/gpio.h>

报错7

myproject/components/lvgl_esp32_drivers/lvgl_tft/st7735s.c:110:26: error: 'portTICK_RATE_MS' undeclared (first use in this function); did you mean 'portTICK_PERIOD_MS'?

portTICK_RATE_MS 全部换成 portTICK_PERIOD_MS

相关配置

引脚配置

参考例程

// Display (ST7735s) hardware configuration:
#define DISPLAY_RST      1
#define DISPLAY_DC       2
#define DISPLAY_MOSI     3
#define DISPLAY_CS       4
#define DISPLAY_SCLK     5
#define DISPLAY_LEDA    38
#define DISPLAY_MISO    -1
#define DISPLAY_BUSY    -1
#define DISPLAY_WIDTH  160
#define DISPLAY_HEIGHT  80

Color settings

Memory settings

显示帧率

配置demo

屏幕方向

运行测试

测试代码

main.c

#include <stdio.h>
#include "esp_log.h"
#include "esp_system.h"
#include "freertos/FreeRTOS.h"
#include "freertos/event_groups.h"
#include "lvgl.h"
#include "lvgl_helpers.h"
 
#include "demos/lv_demos.h"
#include <esp_timer.h>
 
 
#define TAG "main"
 
 
void lv_tick_task(void *arg)
{
    lv_tick_inc(1);
}
 
void app_main(void)
{
    
    /* Initialize SPI or I2C bus used by the drivers */
    lvgl_driver_init();
 
    lv_init();
    /*Create a LED and switch it OFF*/
    //lv_obj_t * led1  = lv_led_create(lv_scr_act());
    //lv_obj_align(led1, NULL, LV_ALIGN_CENTER, -80);
    // lv_led_off(led1);

    lv_color_t *buf1 = heap_caps_malloc(DISP_BUF_SIZE * sizeof(lv_color_t), MALLOC_CAP_DMA);
    assert(buf1 != NULL);
    static lv_color_t *buf2 = NULL;
 
    static lv_disp_draw_buf_t disp_buf;
 
    uint32_t size_in_px = DISP_BUF_SIZE;
    lv_disp_draw_buf_init(&disp_buf, buf1, buf2, size_in_px);
    lv_disp_drv_t disp_drv;
    lv_disp_drv_init(&disp_drv);
    disp_drv.hor_res = LV_HOR_RES_MAX;
    disp_drv.ver_res = LV_VER_RES_MAX;
    disp_drv.flush_cb = disp_driver_flush;
    disp_drv.draw_buf = &disp_buf;
    lv_disp_drv_register(&disp_drv);
 
    const esp_timer_create_args_t periodic_timer_args = {
        .callback = &lv_tick_task,
        .name = "periodic_gui"};
    esp_timer_handle_t periodic_timer;
    ESP_ERROR_CHECK(esp_timer_create(&periodic_timer_args, &periodic_timer));
    ESP_ERROR_CHECK(esp_timer_start_periodic(periodic_timer, 1 * 1000));
 
    // lvgl demo演示
    lv_demo_widgets();
    // lv_demo_stress();
   
    while (1)
    {
        /* Delay 1 tick (assumes FreeRTOS tick is 10ms */
        vTaskDelay(pdMS_TO_TICKS(10));
        lv_task_handler();
    }
 
 
}

运行报错

运行后不断重启报错

E (418) spi: spi_bus_initialize(764): invalid dma channel, chip only support spi dma channel auto-alloc

lvgl_helpers.c修改:

运行效果

T-Dongle-S3开发笔记-移植LVGL资源-CSDN文库

  • 28
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: PS176 DP-to-HDMI Dongle Reference是一种将DisplayPort信号转换为HDMI信号的接口产品。DisplayPort和HDMI都是一种用于音视频传输的数字接口标准。DP-to-HDMI Dongle可以将使用DisplayPort接口的设备(如电脑、笔记本电脑、手机等)连接到使用HDMI接口的显示设备(如电视、投影仪等)上进行视频和音频输出。 PS176 DP-to-HDMI Dongle Reference采用了PS176芯片作为控制芯片,这是一款由Cypress(赛普拉斯)公司生产的高性能芯片,用于实现DisplayPort和HDMI之间的转换。该芯片具有稳定的转换效果和优质的信号传输能力,可以确保高清视频和高质量音频的传输。同时,该芯片还支持高达4K分辨率的视频输出,可以满足用户对高清画面的需求。 使用PS176 DP-to-HDMI Dongle Reference时,只需将DisplayPort接口插入设备的DisplayPort输出端口,然后将HDMI接口插入显示设备的HDMI输入端口,接口插拔简单方便。插上后,显示设备即可通过HDMI接口接收到DisplayPort信号,并将其转换为对应的视频和音频信号进行输出,实现设备之间的连接与传输。 总结而言,PS176 DP-to-HDMI Dongle Reference是一款使用PS176芯片的DisplayPort转HDMI的转接头产品,适用于将使用DisplayPort接口的设备连接到使用HDMI接口的显示设备上进行视频和音频输出。它具有可靠的转换效果、优质的信号传输能力和高分辨率的视频输出,能够满足用户对高清画面的需求。 ### 回答2: PS176 DP到HDMI转接器参考是一种数字信号转换设备,用于将DisplayPort(DP)视频信号转换为HDMI(High-Definition Multimedia Interface)信号。它可以连接支持DP输出的计算机或其他设备与使用HDMI输入的显示器、电视或投影仪等设备进行连接。 这款转接器采用了PS176芯片作为参考设计。PS176芯片是一种高性能的数字视频处理器,具有可靠稳定的信号转换能力。它能够将DP的信号转换为HDMI的信号,并且支持高分辨率的视频输出。使用这个转接器,用户可以将高品质的DP视频信号传输到HDMI设备上,实现高清晰度的视频显示。 该转接器参考设计还可能包括其他组件,例如电路板、接口、插头等,以提供完整的功能和兼容性。它可能支持高带宽的视频传输,包括4K、60Hz的高分辨率视频输出。除了视频信号的转换,这个转接器也可以传输音频信号,使用户能够享受到高质量的音频效果。 对于使用PS176 DP到HDMI转接器参考设计的用户来说,他们只需要将转接器的DisplayPort接口连接到DP输出设备上,再将HDMI接口连接到HDMI输入设备上,就可以实现信号转换和视频传输。这款转接器设计简单易用,适用于不同场合的应用,例如办公室、家庭娱乐、教育等。 总之,PS176 DP到HDMI转接器参考是一款高性能的数字信号转换设备,基于PS176芯片设计,可以将DisplayPort信号转换为HDMI信号,实现高清晰度的视频和音频传输,满足用户的不同需求。 ### 回答3: PS176 DP到HDMI转接头是一种用于连接DisplayPort(DP)接口和HDMI接口的转接头参考设计。DisplayPort和HDMI是两种常见的视频传输接口,DisplayPort主要用于连接电脑和显示器,而HDMI则广泛应用于电视、投影仪和一些消费电子设备。 PS176是一个高性能的转接头控制器,具有很多先进的特性。它支持DisplayPort 1.4a版本和HDMI 2.0b版本的规范,可以实现高清的视频传输和音频输出。该参考设计还支持高达4K分辨率的视频传输,保证了图像的清晰度和细节,同时还能够传输高品质的音频。 此外,PS176还具备一些其他特点,比如支持多种色彩空间和色深的传输,能够处理高帧率视频和3D视频,并支持多显示器环境。它还采用了先进的视频处理技术,如动态范围扩展、色彩空间转换和降噪等,进一步提升了图像质量。 对于用户而言,使用PS176 DP到HDMI转接头可以方便地将DP接口的设备连接到HDMI接口的显示设备上,如连接笔记本电脑到电视或投影仪。这使得用户可以享受更大的屏幕空间和更高的分辨率,同时还能够通过一根线缆传输音频信号,消除了多余的接线和插拔。 总的来说,PS176 DP到HDMI转接头参考设计是一种可靠、高性能的解决方案,能够有效地连接DP和HDMI接口设备,提供高清的视频和音频传输。它为用户带来了更好的使用体验,扩展了设备的连接能力,适用于各种需求的场合。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值