From 5c96c978c9582482147659c56a0f2487aee4433a Mon Sep 17 00:00:00 2001 From: gaoxu Date: Fri, 18 Jul 2025 11:32:35 +0800 Subject: [PATCH] fix(dvp): fix dvp loss frame error --- components/esp_driver_cam/dvp/src/esp_cam_ctlr_dvp_cam.c | 6 +++--- 1 file changed, 3 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 1bac8fadf4..0a530216c8 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 @@ -156,7 +156,6 @@ static IRAM_ATTR esp_err_t esp_cam_ctlr_dvp_start_trans(esp_cam_ctlr_dvp_cam_t * if (ctlr->cur_buf) { ctlr->cur_buf = NULL; - cam_hal_stop_streaming(&ctlr->hal); ESP_RETURN_ON_ERROR_ISR(esp_cam_ctlr_dvp_dma_stop(&ctlr->dma), TAG, "failed to stop DMA"); } @@ -180,8 +179,6 @@ 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_reset(&ctlr->dma), TAG, "failed to reset DMA"); ESP_RETURN_ON_ERROR_ISR(esp_cam_ctlr_dvp_dma_start(&ctlr->dma, trans.buffer, ctlr->fb_size_in_bytes), TAG, "failed to start DMA"); - cam_hal_start_streaming(&ctlr->hal); - ctlr->cur_buf = trans.buffer; return ESP_OK; @@ -481,6 +478,7 @@ static esp_err_t esp_cam_ctlr_dvp_cam_enable(esp_cam_ctlr_handle_t handle) ctlr->dvp_fsm = ESP_CAM_CTLR_DVP_CAM_FSM_ENABLED; ret = ESP_OK; } + cam_hal_start_streaming(&ctlr->hal); #if CONFIG_PM_ENABLE if (ctlr->pm_lock) { ESP_RETURN_ON_ERROR(esp_pm_lock_acquire(ctlr->pm_lock), TAG, "acquire pm_lock failed"); @@ -513,6 +511,8 @@ static esp_err_t esp_cam_ctlr_dvp_cam_disable(esp_cam_ctlr_handle_t handle) ctlr->dvp_fsm = ESP_CAM_CTLR_DVP_CAM_FSM_INIT; ret = ESP_OK; } + cam_hal_stop_streaming(&ctlr->hal); + #if CONFIG_PM_ENABLE if (ctlr->pm_lock) { ESP_RETURN_ON_ERROR(esp_pm_lock_release(ctlr->pm_lock), TAG, "release pm_lock failed");