优奕视界公司旗下网站!

如何使用 ESP-IDF 开发 ESP32 Display

类别:常见问题 文章出处:http://www.chinasunyee.com/发布时间:2025-03-21 浏览人次:

使用 ESP-IDF 开发 ESP32 Display 需要结合 ESP32 的显示接口(如 SPI、I2C、RGB、I8080 等)和相应的驱动库。以下是详细步骤和说明:



1. 准备工作

(1) 硬件准备

ESP32 开发板:如 ESP32-WROOM-32、ESP32-S3 等。


显示屏:选择支持的显示屏(如 SPI TFT、I2C OLED、RGB LCD 等)。


连接线:根据显示屏接口连接 ESP32。


(2) 软件准备

ESP-IDF 环境:确保已安装并配置好 ESP-IDF 开发环境。


显示屏驱动库:根据显示屏型号,选择合适的驱动库(如 LVGL、TFT_eSPI 等)。



2. 连接显示屏

根据显示屏的接口类型,连接 ESP32 和显示屏。以下是常见接口的连接方式:


(1) SPI 接口显示屏

引脚连接:


SCK(时钟):ESP32 GPIO18


MOSI(数据):ESP32 GPIO23


CS(片选):ESP32 GPIO5


DC(数据/命令):ESP32 GPIO2


RESET(复位):ESP32 GPIO4


VCC 和 GND:连接电源和地。

(2) I2C 接口显示屏

引脚连接:


SCL(时钟):ESP32 GPIO22


SDA(数据):ESP32 GPIO21


VCC 和 GND:连接电源和地。


(3) RGB 接口显示屏

引脚连接:


根据显示屏的 RGB 接口定义,连接 ESP32 的 GPIO 引脚。


通常需要连接 HSYNC、VSYNC、PCLK、DE 等信号线。


3. 配置 ESP-IDF 项目

(1) 创建新项目

使用 ESP-IDF 创建一个新项目:


(2) 添加显示屏驱动库

如果使用 LVGL 库,可以通过以下方式添加:



如果使用其他驱动库(如 TFT_eSPI),需要手动将库文件添加到项目中。


(3) 配置显示屏接口

在 sdkconfig 中配置显示屏接口(如 SPI、I2C)。


使用 menuconfig 进行配置:



选择 Component config -> LVGL Configuration,配置 LVGL 参数。


选择 Component config -> Driver Configuration,配置显示屏接口。


4. 编写代码

以下是一个简单的示例,使用 LVGL 库驱动 SPI TFT 显示屏:


(1) 包含头文件


#include "lvgl.h"

#include "esp_lcd_panel_io.h"

#include "esp_lcd_panel_ops.h"

#include "driver/spi_master.h"


(2) 初始化 SPI 接口


void init_spi(void) {

    spi_bus_config_t buscfg = {

        .miso_io_num = -1,

        .mosi_io_num = GPIO_NUM_23,

        .sclk_io_num = GPIO_NUM_18,

        .quadwp_io_num = -1,

        .quadhd_io_num = -1,

        .max_transfer_sz = 4096,

    };

    spi_bus_initialize(SPI2_HOST, &buscfg, SPI_DMA_CH_AUTO);

}


(3) 初始化显示屏


void init_display(void) {

    esp_lcd_panel_io_spi_config_t io_config = {

        .dc_gpio_num = GPIO_NUM_2,

        .cs_gpio_num = GPIO_NUM_5,

        .pclk_hz = 40 * 1000 * 1000,

        .spi_mode = 0,

        .trans_queue_depth = 10,

    };

    esp_lcd_new_panel_st7789(io_config, &panel_handle);

    esp_lcd_panel_reset(panel_handle);

    esp_lcd_panel_init(panel_handle);

}


(4) 初始化 LVGL


void init_lvgl(void) {

    lv_init();

    lv_disp_drv_t disp_drv;

    lv_disp_drv_init(&disp_drv);

    disp_drv.flush_cb = my_flush_cb;

    lv_disp_drv_register(&disp_drv);

}


(5) 主函数


void app_main(void) {

    init_spi();

    init_display();

    init_lvgl();


    lv_obj_t *label = lv_label_create(lv_scr_act());

    lv_label_set_text(label, "Hello, ESP32!");

    lv_obj_align(label, LV_ALIGN_CENTER, 0, 0);


    while (1) {

        lv_timer_handler();

        vTaskDelay(pdMS_TO_TICKS(10));

    }

}


5. 编译和烧录

编译项目:


idf.py build


烧录到 ESP32:


idf.py -p PORT flash


(将 PORT 替换为实际的串口端口,如 /dev/ttyUSB0)。


6. 调试和优化


使用 idf.py monitor 查看调试信息。


根据显示屏性能调整 LVGL 的刷新率和缓冲区大小。以上仅提供参考,具体根据实际情况而定。


此文关键词:工业显示屏,工业触摸显示屏,工业液晶显示屏,工业触摸液晶显示器,工业显示屏品牌

© 2016 深圳市优奕视界有限公司版权所有  备案号:粤ICP备16023663号-2    

返回顶部