From 449abbab768db0af4e39083049de43f7006bb3da Mon Sep 17 00:00:00 2001 From: gaoxu Date: Wed, 21 May 2025 11:43:44 +0800 Subject: [PATCH] fix(cam): fix dvp can not get cam_buffer --- .../esp_driver_cam/dvp/src/esp_cam_ctlr_dvp_cam.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/components/esp_driver_cam/dvp/src/esp_cam_ctlr_dvp_cam.c b/components/esp_driver_cam/dvp/src/esp_cam_ctlr_dvp_cam.c index 5e53b9bab4..eaddf9a94a 100644 --- a/components/esp_driver_cam/dvp/src/esp_cam_ctlr_dvp_cam.c +++ b/components/esp_driver_cam/dvp/src/esp_cam_ctlr_dvp_cam.c @@ -146,8 +146,11 @@ static IRAM_ATTR esp_err_t esp_cam_ctlr_dvp_start_trans(esp_cam_ctlr_dvp_cam_t * ESP_RETURN_ON_ERROR_ISR(esp_cam_ctlr_dvp_dma_stop(&ctlr->dma), TAG, "failed to stop DMA"); } - if (ctlr->cbs.on_get_new_trans && ctlr->cbs.on_get_new_trans(&(ctlr->base), &trans, ctlr->cbs_user_data)) { - buffer_ready = true; + if (ctlr->cbs.on_get_new_trans) { + ctlr->cbs.on_get_new_trans(&(ctlr->base), &trans, ctlr->cbs_user_data); + if (trans.buffer) { + buffer_ready = true; + } } else if (!ctlr->bk_buffer_dis) { trans.buffer = ctlr->backup_buffer; trans.buflen = ctlr->fb_size_in_bytes; @@ -740,13 +743,14 @@ esp_err_t esp_cam_new_dvp_ctlr(const esp_cam_ctlr_dvp_config_t *config, esp_cam_ .port = config->ctlr_id, .byte_swap_en = config->byte_swap_en, }; - cam_hal_init(&ctlr->hal, &cam_hal_config); if (!config->pin_dont_init) { ESP_GOTO_ON_ERROR(esp_cam_ctlr_dvp_init(config->ctlr_id, config->clk_src, config->pin), fail5, TAG, "failed to initialize clock and GPIO"); } + cam_hal_init(&ctlr->hal, &cam_hal_config); + ctlr->ctlr_id = config->ctlr_id; ctlr->fb_size_in_bytes = fb_size_in_bytes; ctlr->dvp_fsm = ESP_CAM_CTLR_DVP_CAM_FSM_INIT;