乐鑫技术交流
直播中

李艳

7年用户 1477经验值
私信 关注
[问答]

ESP32-S3-EYE在运行中LCD无法正常显示的原因?怎么解决?

代码如下
static QueueHandle_t xQueueAIFrame = NULL;static QueueHandle_t xQueueLCDFrame = NULL;static QueueHandle_t xQueueEventLogic = NULL;extern SemaphoreHandle_t sem_handle;extern "C" void app_main(){    esp_err_t ret;    app_wifi_main();    xQueueAIFrame = xQueueCreate(5, sizeof(camera_fb_t *));    xQueueLCDFrame = xQueueCreate(5, sizeof(camera_fb_t *));    xQueueEventLogic = xQueueCreate(1, sizeof(int *));    register_camera(PIXFORMAT_RGB565, FRAMESIZE_240X240, 2, xQueueAIFrame);    register_button_events(xQueueEventLogic);    register_human_face_recognition(xQueueAIFrame, xQueueEventLogic, NULL, xQueueLCDFrame, true);    register_lcd(xQueueLCDFrame, NULL, true);}
就是很简单的调用了官方给我们写的代码框架。
但是当我同时把摄像头、人脸识别、LCD显示、wifi任务同时开启时。
LCD就无法正常显示,只能显示一部分区域。
同时会报如下的错误
===================================================================================================
E (24560) lcd_panel.io.spi: panel_io_spi_tx_color(387): spi transmit (queue) color failed
E (24640) lcd_panel.io.spi: panel_io_spi_tx_color(387): spi transmit (queue) color failed
E (24720) lcd_panel.io.spi: panel_io_spi_tx_color(387): spi transmit (queue) color failed
E (24800) lcd_panel.io.spi: panel_io_spi_tx_color(387): spi transmit (queue) color failed
E (24880) lcd_panel.io.spi: panel_io_spi_tx_color(387): spi transmit (queue) color failed
E (24960) lcd_panel.io.spi: panel_io_spi_tx_color(387): spi transmit (queue) color failed
E (25040) lcd_panel.io.spi: panel_io_spi_tx_color(387): spi transmit (queue) color failed
=====================================================================================================
但是其他任务都是可以正常运行的。
当我把WiFi任务关掉。其他所有任务都可以正常运行。
或者我把AI任务关掉,其他任务都可以正常执行。
这种情况是可能出什么问题了
                       

回帖(1)

杨勇

2024-7-19 17:31:08
ESP32-S3-EYE在运行中LCD无法正常显示的原因可能有以下几个:

1. **硬件连接问题**:首先检查ESP32-S3-EYE的硬件连接是否正确,包括电源、数据线等。

2. **LCD初始化问题**:确保在代码中正确初始化了LCD。检查是否调用了正确的初始化函数,并传入了正确的参数。

3. **队列问题**:代码中使用了三个队列(xQueueAIFrame、xQueueLCDFrame和xQueueEventLogic),需要确保这些队列在正确的时间被创建和使用。同时,检查队列的创建参数是否合适,例如队列长度和元素大小。

4. **帧缓冲区问题**:检查是否正确地将图像数据发送到LCD。这可能涉及到将图像数据从AI处理队列(xQueueAIFrame)传输到LCD显示队列(xQueueLCDFrame)。

5. **中断和任务调度问题**:确保在代码中正确地处理中断和任务调度。这可能涉及到在适当的时间启动和停止任务,以及处理中断。

6. **电源管理问题**:检查ESP32-S3-EYE的电源管理设置,确保在运行过程中不会因电源不足而导致LCD无法正常显示。

为了解决这些问题,你可以尝试以下步骤:

1. **检查硬件连接**:确保所有连接都正确无误。

2. **检查LCD初始化代码**:确保在app_main()函数中调用了正确的LCD初始化函数,并传入了正确的参数。

3. **检查队列创建和使用**:确保在app_main()函数中正确地创建了队列,并在适当的时间使用它们。

4. **检查帧缓冲区传输**:确保图像数据从AI处理队列传输到LCD显示队列。

5. **优化中断和任务调度**:确保在代码中正确地处理中断和任务调度,以便在适当的时间启动和停止任务。

6. **调整电源管理设置**:检查ESP32-S3-EYE的电源管理设置,确保在运行过程中不会因电源不足而导致LCD无法正常显示。

7. **调试和日志**:在代码中添加调试信息和日志输出,以便更好地了解程序的运行情况和问题所在。


举报

更多回帖

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