Description
Checklist
- Checked the issue tracker for similar issues to ensure this is not a duplicate.
- Provided a clear description of your suggestion.
- Included any relevant context or examples.
Issue or Suggestion Description
W (2442) cam_hal: NO-EOI
W (3338) cam_hal: NO-EOI
W (4233) cam_hal: NO-EOI
W (5129) cam_hal: NO-EOI
W (5728) cam_hal: Failed to get the frame on time!
我需要OV5640摄像头输出一张500w像素的高质量JPG图片,设置的图片大小FRAMESIZE_QSXGA(2560x1920),xclk为6MHz情况下,我调整图片质量参数为3时,可以正常输出约600~800kb之间的图片,但调整图片质量参数为2时,有时可以输出图像,有时就会出现cam_hal: NO-EOI问题。
输出最大图片大小:
查看代码发现是在cam_hal.c文件的camera_fb_t *cam_take(TickType_t timeout)函数,分析后发现是由于找不到0xD9FF,也就是找不到帧尾标识导致错误,怀疑是图片质量参数为2情况下,输出图片大小超过申请PSRAM空间导致的,修改代码后申请空间达到4000000Byte仍无法解决问题,难道图片大小已经超过4m了?
ESP32-IDF版本:v5.0.7
esp32-camera组件版本:espressif__esp32-camera-v2.0.15
使用摄像头:OV5640
参数配置:
.pin_pwdn = CAM_PIN_PWDN,
.pin_reset = CAM_PIN_RESET,
.pin_xclk = CAM_PIN_XCLK,
.pin_sccb_sda = CAM_PIN_SIOD,
.pin_sccb_scl = CAM_PIN_SIOC,
.pin_d7 = CAM_PIN_D7,
.pin_d6 = CAM_PIN_D6,
.pin_d5 = CAM_PIN_D5,
.pin_d4 = CAM_PIN_D4,
.pin_d3 = CAM_PIN_D3,
.pin_d2 = CAM_PIN_D2,
.pin_d1 = CAM_PIN_D1,
.pin_d0 = CAM_PIN_D0,
.pin_vsync = CAM_PIN_VSYNC,
.pin_href = CAM_PIN_HREF,
.pin_pclk = CAM_PIN_PCLK,
.xclk_freq_hz = 6000000,
.ledc_timer = LEDC_TIMER_0,
.ledc_channel = LEDC_CHANNEL_0,
.pixel_format = PIXFORMAT_JPEG, //YUV422,GRAYSCALE,RGB565,JPEG
.frame_size = FRAMESIZE_QSXGA, //QQVGA-UXGA, For ESP32, do not use sizes above QVGA when not JPEG. The performance of the ESP32-S series has improved a lot, but JPEG mode always gives better frame rates.
.jpeg_quality = 2, //0-63, for OV series camera sensors, lower number means higher quality
.fb_count = 1, //When jpeg mode is used, if fb_count more than one, the driver will work in continuous mode.
.fb_location = CAMERA_FB_IN_PSRAM,
.grab_mode = CAMERA_GRAB_WHEN_EMPTY,