乐鑫技术交流
直播中

王兰

13年用户 895经验值
擅长:基础元器件
私信 关注
[问答]

ESP32-S2能否支持8位串行RGB?

乐鑫技术支持您好:

看ESP32-S2手册上写的是支持8位串口RGB的。但是在编译esp-idf master代码时出错。

我有一片LCD是8位串行RGB接口(驱动芯片HX8238D),想用手头ESP32-S2-WROOM模块来驱动显示。

利用master测试代码test_rgb_panel.c修改后编译,选择ESP32-S3芯片时编译通过,但是更改为ESP32-S2芯片时报错。

想请问ESP32-S2是否支持8位串口RGB,若支持什么时候有支持ESP32-S2的8位串口RGB的驱动代码?

另外自己改S3 RGB驱动在S2使用的话请提供些修改思路。

谢谢!

以下为测试代码,在S3上编译通过,我没有S3模块无法测试。现在需要让该代码能够在S2下运行。



#include

#include

#include "esp_lcd_panel_rgb.h"

#include "esp_lcd_panel_ops.h"

#include "soc/soc_caps.h"

#include "esp_err.h"

#include "esp_log.h"

#include "driver/gpio.h"

#include "esp_system.h"

static const char *TAG = "example";

#define TEST_LCD_H_RES         (480)

#define TEST_LCD_V_RES         (272)



#define TEST_LCD_VSYNC_GPIO    (8)

#define TEST_LCD_HSYNC_GPIO    (9)

#define TEST_LCD_DE_GPIO       (10)

#define TEST_LCD_PCLK_GPIO     (11)

#define TEST_LCD_DATA0_GPIO    (0)  // B0

#define TEST_LCD_DATA1_GPIO    (1)  // B1

#define TEST_LCD_DATA2_GPIO    (2)  // B2

#define TEST_LCD_DATA3_GPIO    (3)  // B3

#define TEST_LCD_DATA4_GPIO    (4)  // B4

#define TEST_LCD_DATA5_GPIO    (5)  // G0

#define TEST_LCD_DATA6_GPIO    (6)  // G1

#define TEST_LCD_DATA7_GPIO    (7) // G2

/*

#define TEST_LCD_DATA8_GPIO    (11) // G3

#define TEST_LCD_DATA9_GPIO    (12) // G4

#define TEST_LCD_DATA10_GP*IO   (13) // G5

#define TEST_LCD_DATA11_GPIO   (14) // R0

#define TEST_LCD_DATA12_GPIO   (15) // R1

#define TEST_LCD_DATA13_GPIO   (16) // R2

#define TEST_LCD_DATA14_GPIO   (17) // R3

#define TEST_LCD_DATA15_GPIO   (18) // R4

*/

#define TEST_LCD_DISP_EN_GPIO  (12)







// RGB driver consumes a huge memory to save frame buffer, only test it with PSRAM enabled

void app_main(void)

{

    ESP_LOGI(TAG, "lcd rgb lcd panel");

#define TEST_IMG_SIZE (100 * 100 * sizeof(uint16_t))

    uint8_t *img = malloc(TEST_IMG_SIZE);

//    TEST_ASSERT_NOT_NULL(img);



    esp_lcd_panel_handle_t panel_handle = NULL;

    esp_lcd_rgb_panel_config_t panel_config = {

        .data_width = 8,  //16

        .disp_gpio_num = TEST_LCD_DISP_EN_GPIO,

        .pclk_gpio_num = TEST_LCD_PCLK_GPIO,

        .vsync_gpio_num = TEST_LCD_VSYNC_GPIO,

        .hsync_gpio_num = TEST_LCD_HSYNC_GPIO,

        .de_gpio_num = TEST_LCD_DE_GPIO,

        .data_gpio_nums = {

            TEST_LCD_DATA0_GPIO,

            TEST_LCD_DATA1_GPIO,

            TEST_LCD_DATA2_GPIO,

            TEST_LCD_DATA3_GPIO,

            TEST_LCD_DATA4_GPIO,

            TEST_LCD_DATA5_GPIO,

            TEST_LCD_DATA6_GPIO,

            TEST_LCD_DATA7_GPIO,

/*                        

            TEST_LCD_DATA8_GPIO,

            TEST_LCD_DATA9_GPIO,

            TEST_LCD_DATA10_GPIO,

            TEST_LCD_DATA11_GPIO,

            TEST_LCD_DATA12_GPIO,

            TEST_LCD_DATA13_GPIO,

            TEST_LCD_DATA14_GPIO,

            TEST_LCD_DATA15_GPIO,

*/                        

        },

        .timings = {

            .pclk_hz = 12000000,

            .h_res = TEST_LCD_H_RES,

            .v_res = TEST_LCD_V_RES,

            .hsync_back_porch = 43,

            .hsync_front_porch = 2,

            .hsync_pulse_width = 1,

            .vsync_back_porch = 12,

            .vsync_front_porch = 1,

            .vsync_pulse_width = 1,

        },

        .flags.fb_in_psram = 1,

    };

    // Test stream mode and one-off mode

    for (int i = 0; i < 2; i++) {

        panel_config.flags.relax_on_idle = i;

        ESP_ERROR_CHECK(esp_lcd_new_rgb_panel(&panel_config, &panel_handle));

        ESP_ERROR_CHECK(esp_lcd_panel_reset(panel_handle));

        ESP_ERROR_CHECK(esp_lcd_panel_init(panel_handle));



        for (int i = 0; i < 200; i++) {

            uint8_t color_byte = esp_random() & 0xFF;

            int x_start = esp_random() % (TEST_LCD_H_RES - 100);

            int y_start = esp_random() % (TEST_LCD_V_RES - 100);

            memset(img, color_byte, TEST_IMG_SIZE);

            esp_lcd_panel_draw_bitmap(panel_handle, x_start, y_start, x_start + 100, y_start + 100, img);

        }



        ESP_ERROR_CHECK(esp_lcd_panel_del(panel_handle));

    }

    free(img);

}

更多回帖

发帖
×
20
完善资料,
赚取积分