| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- /*
- * SPDX-FileCopyrightText: 2020-2021 Espressif Systems (Shanghai) CO LTD
- *
- * SPDX-License-Identifier: Apache-2.0
- */
- // DO NOT USE THESE APIS IN ANY APPLICATIONS
- #pragma once
- #include "esp_err.h"
- #include "hal/adc_types.h"
- #include "soc/soc_caps.h"
- #ifdef __cplusplus
- extern "C" {
- #endif
- /*------------------------------------------------------------------------------
- * For those who use APB_SARADC periph
- *----------------------------------------------------------------------------*/
- /**
- * @brief Claim the usage of the APB_SARADC periph
- *
- * Reference count inside
- */
- void adc_apb_periph_claim(void);
- /**
- * @brief Free the usage of the APB_SARADC periph
- *
- * Reference count inside
- */
- void adc_apb_periph_free(void);
- /*---------------------------------------------------------------
- ADC IOs
- ---------------------------------------------------------------*/
- /**
- * @brief Get ADC channel from the given GPIO number
- *
- * @param[in] io_num GPIO number
- * @param[out] unit_id ADC unit
- * @param[out] channel ADC channel
- *
- * @return
- * - ESP_OK: On success
- * - ESP_ERR_INVALID_ARG: Invalid argument
- * - ESP_ERR_NOT_FOUND: The IO is not a valid ADC pad
- */
- esp_err_t adc_io_to_channel(int io_num, adc_unit_t * const unit_id, adc_channel_t * const channel);
- /**
- * @brief Get GPIO number from the given ADC channel
- *
- * @param[in] unit_id ADC unit
- * @param[in] channel ADC channel
- * @param[out] io_num GPIO number
- *
- * @param
- * - ESP_OK: On success
- * - ESP_ERR_INVALID_ARG: Invalid argument
- */
- esp_err_t adc_channel_to_io(adc_unit_t unit_id, adc_channel_t channel, int * const io_num);
- /*---------------------------------------------------------------
- ADC Oneshot Read API ISR Version
- ---------------------------------------------------------------*/
- typedef struct adc_oneshot_unit_ctx_t *adc_oneshot_unit_handle_t;
- /**
- * @brief ISR version to get one ADC conversion raw result
- *
- * @note This API only provide atomic register settings, without hardware resources protection. When other drivers are using
- * SAR-ADCs, calling this API may get wrong ADC result.
- * @note This API can be called in an ISR context.
- * @note Strongly suggest using this function when there's no concurrent hardware usage to the ADC. You can refer to ADC Oneshot
- * Programming Guide to know ADC Hardware Limitations
- *
- * @param[in] handle ADC handle
- * @param[in] chan ADC channel
- * @param[out] out_raw ADC conversion raw result
- *
- * @return
- * - ESP_OK: On success
- * - ESP_ERR_INVALID_ARG: Invalid arguments
- * - ESP_ERR_INVALID_STATE: Invalid state, the ADC result is invalid
- */
- esp_err_t adc_oneshot_read_isr(adc_oneshot_unit_handle_t handle, adc_channel_t chan, int *out_raw);
- #ifdef __cplusplus
- }
- #endif
|