Przeglądaj źródła

adc: fix adc digital not reset issue

Armando 3 lat temu
rodzic
commit
4ca115be98

+ 3 - 1
components/driver/adc.c

@@ -284,8 +284,10 @@ esp_err_t adc_digi_initialize(const adc_digi_init_config_t *init_config)
     };
     adc_hal_context_config(&s_adc_digi_ctx->hal, &config);
 
-    //enable SARADC module clock
+    //enable ADC digital part
     periph_module_enable(PERIPH_SARADC_MODULE);
+    //reset ADC digital part
+    periph_module_reset(PERIPH_SARADC_MODULE);
 
 #if SOC_ADC_CALIBRATION_V1_SUPPORTED
     adc_hal_calibration_init(ADC_NUM_1);

+ 9 - 13
components/hal/esp32s2/include/hal/clk_gate_ll.h

@@ -1,16 +1,8 @@
-// Copyright 2015-2020 Espressif Systems (Shanghai) PTE LTD
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
+/*
+ * SPDX-FileCopyrightText: 2015-2022 Espressif Systems (Shanghai) CO LTD
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ */
 
 #pragma once
 
@@ -29,6 +21,8 @@ extern "C" {
 static inline uint32_t periph_ll_get_clk_en_mask(periph_module_t periph)
 {
     switch (periph) {
+    case PERIPH_SARADC_MODULE:
+        return DPORT_APB_SARADC_CLK_EN;
     case PERIPH_LEDC_MODULE:
         return DPORT_LEDC_CLK_EN;
     case PERIPH_UART0_MODULE:
@@ -99,6 +93,8 @@ static inline uint32_t periph_ll_get_rst_en_mask(periph_module_t periph, bool en
     (void)enable; // unused
 
     switch (periph) {
+    case PERIPH_SARADC_MODULE:
+        return DPORT_APB_SARADC_RST;
     case PERIPH_LEDC_MODULE:
         return DPORT_LEDC_RST;
     case PERIPH_UART0_MODULE:

+ 4 - 0
components/hal/esp32s3/include/hal/clk_gate_ll.h

@@ -21,6 +21,8 @@ extern "C" {
 static inline uint32_t periph_ll_get_clk_en_mask(periph_module_t periph)
 {
     switch (periph) {
+    case PERIPH_SARADC_MODULE:
+        return SYSTEM_APB_SARADC_CLK_EN;
     case PERIPH_RMT_MODULE:
         return SYSTEM_RMT_CLK_EN;
     case PERIPH_LEDC_MODULE:
@@ -103,6 +105,8 @@ static inline uint32_t periph_ll_get_clk_en_mask(periph_module_t periph)
 static inline uint32_t periph_ll_get_rst_en_mask(periph_module_t periph, bool enable)
 {
     switch (periph) {
+    case PERIPH_SARADC_MODULE:
+        return SYSTEM_APB_SARADC_RST;
     case PERIPH_RMT_MODULE:
         return SYSTEM_RMT_RST;
     case PERIPH_LEDC_MODULE:

+ 0 - 1
tools/ci/check_copyright_ignore.txt

@@ -887,7 +887,6 @@ components/hal/esp32s2/brownout_hal.c
 components/hal/esp32s2/cp_dma_hal.c
 components/hal/esp32s2/include/hal/adc_hal_conf.h
 components/hal/esp32s2/include/hal/aes_ll.h
-components/hal/esp32s2/include/hal/clk_gate_ll.h
 components/hal/esp32s2/include/hal/cp_dma_hal.h
 components/hal/esp32s2/include/hal/cp_dma_ll.h
 components/hal/esp32s2/include/hal/cpu_ll.h