Merge branch 'fix/fix_dvp_loss_isr_v5.4' into 'release/v5.4'

Cam: fixed dvp lose frame issue (v5.4)

See merge request espressif/esp-idf!40886
This commit is contained in:
morris
2025-08-01 09:58:17 +08:00

View File

@@ -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) { if (ctlr->cur_buf) {
ctlr->cur_buf = NULL; 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"); 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_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"); 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; ctlr->cur_buf = trans.buffer;
return ESP_OK; return ESP_OK;
@@ -481,6 +478,8 @@ 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; ctlr->dvp_fsm = ESP_CAM_CTLR_DVP_CAM_FSM_ENABLED;
ret = ESP_OK; ret = ESP_OK;
} }
cam_hal_start_streaming(&ctlr->hal);
portEXIT_CRITICAL(&ctlr->spinlock); portEXIT_CRITICAL(&ctlr->spinlock);
return ret; return ret;
@@ -507,6 +506,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; ctlr->dvp_fsm = ESP_CAM_CTLR_DVP_CAM_FSM_INIT;
ret = ESP_OK; ret = ESP_OK;
} }
cam_hal_stop_streaming(&ctlr->hal);
portEXIT_CRITICAL(&ctlr->spinlock); portEXIT_CRITICAL(&ctlr->spinlock);
return ret; return ret;