mirror of
https://github.com/espressif/esp-idf.git
synced 2026-10-02 03:00:34 +03:00
refactor(adc): move channel count to adc LL
This commit is contained in:
@@ -222,7 +222,7 @@ static esp_err_t check_valid(const adc_cali_curve_fitting_config_t *config)
|
||||
{
|
||||
ESP_RETURN_ON_FALSE(config->unit_id < SOC_ADC_PERIPH_NUM, ESP_ERR_INVALID_ARG, TAG, "invalid ADC unit");
|
||||
ESP_RETURN_ON_FALSE(config->atten < SOC_ADC_ATTEN_NUM, ESP_ERR_INVALID_ARG, TAG, "invalid ADC attenuation");
|
||||
ESP_RETURN_ON_FALSE(config->chan < SOC_ADC_CHANNEL_NUM(config->unit_id), ESP_ERR_INVALID_ARG, TAG, "invalid ADC channel");
|
||||
ESP_RETURN_ON_FALSE(config->chan < ADC_LL_CHANNEL_NUM(config->unit_id), ESP_ERR_INVALID_ARG, TAG, "invalid ADC channel");
|
||||
|
||||
bool available_oneshot_bitwidth = (config->bitwidth >= ADC_LL_RTC_MIN_BITWIDTH && config->bitwidth <= ADC_LL_RTC_MAX_BITWIDTH);
|
||||
bool available_dma_bitwidth = (config->bitwidth >= SOC_ADC_DIGI_MIN_BITWIDTH && config->bitwidth <= SOC_ADC_DIGI_MAX_BITWIDTH);
|
||||
|
||||
@@ -45,7 +45,7 @@ esp_err_t adc_io_to_channel(int io_num, adc_unit_t * const unit_id, adc_channel_
|
||||
esp_err_t adc_channel_to_io(adc_unit_t unit_id, adc_channel_t channel, int * const io_num)
|
||||
{
|
||||
ESP_RETURN_ON_FALSE(unit_id < SOC_ADC_PERIPH_NUM, ESP_ERR_INVALID_ARG, TAG, "invalid unit");
|
||||
ESP_RETURN_ON_FALSE(channel < SOC_ADC_CHANNEL_NUM(unit_id), ESP_ERR_INVALID_ARG, TAG, "invalid channel");
|
||||
ESP_RETURN_ON_FALSE(channel < ADC_LL_CHANNEL_NUM(unit_id), ESP_ERR_INVALID_ARG, TAG, "invalid channel");
|
||||
ESP_RETURN_ON_FALSE(io_num, ESP_ERR_INVALID_ARG, TAG, "invalid argument: null pointer");
|
||||
|
||||
*io_num = adc_channel_io_map[unit_id][channel];
|
||||
@@ -74,7 +74,7 @@ static __attribute__((constructor)) void adc_hw_calibration(void)
|
||||
adc_calc_hw_calibration_code(i, j);
|
||||
#if SOC_ADC_CALIB_CHAN_COMPENS_SUPPORTED
|
||||
/* Load the channel compensation from efuse */
|
||||
for (int k = 0; k < SOC_ADC_CHANNEL_NUM(i); k++) {
|
||||
for (int k = 0; k < ADC_LL_CHANNEL_NUM(i); k++) {
|
||||
adc_load_hw_calibration_chan_compens(i, k, j);
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -617,18 +617,18 @@ esp_err_t adc_continuous_parse_data(adc_continuous_handle_t handle,
|
||||
parsed_data[i].unit = ADC_UNIT_1;
|
||||
parsed_data[i].channel = p->type1.channel;
|
||||
parsed_data[i].raw_data = p->type1.data;
|
||||
parsed_data[i].valid = (parsed_data[i].channel < SOC_ADC_CHANNEL_NUM(parsed_data[i].unit));
|
||||
parsed_data[i].valid = (parsed_data[i].channel < ADC_LL_CHANNEL_NUM(parsed_data[i].unit));
|
||||
#elif CONFIG_IDF_TARGET_ESP32S2
|
||||
if (handle->format == ADC_DIGI_OUTPUT_FORMAT_TYPE2) {
|
||||
parsed_data[i].unit = p->type2.unit ? ADC_UNIT_2 : ADC_UNIT_1;
|
||||
parsed_data[i].channel = p->type2.channel;
|
||||
parsed_data[i].raw_data = p->type2.data;
|
||||
parsed_data[i].valid = (parsed_data[i].channel < SOC_ADC_CHANNEL_NUM(parsed_data[i].unit));
|
||||
parsed_data[i].valid = (parsed_data[i].channel < ADC_LL_CHANNEL_NUM(parsed_data[i].unit));
|
||||
} else if (handle->format == ADC_DIGI_OUTPUT_FORMAT_TYPE1) {
|
||||
parsed_data[i].unit = handle->use_adc1 ? ADC_UNIT_1 : ADC_UNIT_2;
|
||||
parsed_data[i].channel = p->type1.channel;
|
||||
parsed_data[i].raw_data = p->type1.data;
|
||||
parsed_data[i].valid = (parsed_data[i].channel < SOC_ADC_CHANNEL_NUM(parsed_data[i].unit));
|
||||
parsed_data[i].valid = (parsed_data[i].channel < ADC_LL_CHANNEL_NUM(parsed_data[i].unit));
|
||||
}
|
||||
#else
|
||||
#if CONFIG_SOC_ADC_PERIPH_NUM == 1
|
||||
@@ -638,7 +638,7 @@ esp_err_t adc_continuous_parse_data(adc_continuous_handle_t handle,
|
||||
#endif
|
||||
parsed_data[i].channel = (parsed_data[i].unit == ADC_UNIT_2) ? p->type2.channel - ADC_LL_UNIT2_CHANNEL_SUBSTRATION : p->type2.channel;
|
||||
parsed_data[i].raw_data = p->type2.data;
|
||||
parsed_data[i].valid = (parsed_data[i].channel < SOC_ADC_CHANNEL_NUM(parsed_data[i].unit));
|
||||
parsed_data[i].valid = (parsed_data[i].channel < ADC_LL_CHANNEL_NUM(parsed_data[i].unit));
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
@@ -198,7 +198,7 @@ esp_err_t adc_oneshot_config_channel(adc_oneshot_unit_handle_t handle, adc_chann
|
||||
ESP_RETURN_ON_FALSE(handle && config, ESP_ERR_INVALID_ARG, TAG, "invalid argument: null pointer");
|
||||
ESP_RETURN_ON_FALSE(config->atten < SOC_ADC_ATTEN_NUM, ESP_ERR_INVALID_ARG, TAG, "invalid attenuation");
|
||||
ESP_RETURN_ON_FALSE(((config->bitwidth >= ADC_LL_RTC_MIN_BITWIDTH && config->bitwidth <= ADC_LL_RTC_MAX_BITWIDTH) || config->bitwidth == ADC_BITWIDTH_DEFAULT), ESP_ERR_INVALID_ARG, TAG, "invalid bitwidth");
|
||||
ESP_RETURN_ON_FALSE(channel < SOC_ADC_CHANNEL_NUM(handle->unit_id), ESP_ERR_INVALID_ARG, TAG, "invalid channel");
|
||||
ESP_RETURN_ON_FALSE(channel < ADC_LL_CHANNEL_NUM(handle->unit_id), ESP_ERR_INVALID_ARG, TAG, "invalid channel");
|
||||
|
||||
ESP_RETURN_ON_ERROR(s_adc_io_init(handle->unit_id, channel), TAG, "adc io init failed");
|
||||
|
||||
@@ -220,7 +220,7 @@ esp_err_t adc_oneshot_config_channel(adc_oneshot_unit_handle_t handle, adc_chann
|
||||
esp_err_t adc_oneshot_read(adc_oneshot_unit_handle_t handle, adc_channel_t chan, int *out_raw)
|
||||
{
|
||||
ESP_RETURN_ON_FALSE(handle && out_raw, ESP_ERR_INVALID_ARG, TAG, "invalid argument: null pointer");
|
||||
ESP_RETURN_ON_FALSE(chan < SOC_ADC_CHANNEL_NUM(handle->unit_id), ESP_ERR_INVALID_ARG, TAG, "invalid channel");
|
||||
ESP_RETURN_ON_FALSE(chan < ADC_LL_CHANNEL_NUM(handle->unit_id), ESP_ERR_INVALID_ARG, TAG, "invalid channel");
|
||||
|
||||
if (adc_lock_try_acquire(handle->unit_id) != ESP_OK) {
|
||||
return ESP_ERR_TIMEOUT;
|
||||
@@ -254,7 +254,7 @@ esp_err_t adc_oneshot_read_isr(adc_oneshot_unit_handle_t handle, adc_channel_t c
|
||||
{
|
||||
ESP_RETURN_ON_FALSE_ISR(handle && out_raw, ESP_ERR_INVALID_ARG, TAG, "invalid argument: null pointer");
|
||||
ESP_RETURN_ON_FALSE_ISR(out_raw, ESP_ERR_INVALID_ARG, TAG, "invalid argument: null pointer");
|
||||
ESP_RETURN_ON_FALSE_ISR(chan < SOC_ADC_CHANNEL_NUM(handle->unit_id), ESP_ERR_INVALID_ARG, TAG, "invalid channel");
|
||||
ESP_RETURN_ON_FALSE_ISR(chan < ADC_LL_CHANNEL_NUM(handle->unit_id), ESP_ERR_INVALID_ARG, TAG, "invalid channel");
|
||||
|
||||
portENTER_CRITICAL_SAFE(&rtc_spinlock);
|
||||
|
||||
@@ -344,7 +344,7 @@ esp_err_t adc_oneshot_get_calibrated_result(adc_oneshot_unit_handle_t handle, ad
|
||||
|
||||
static esp_err_t s_adc_io_init(adc_unit_t unit, adc_channel_t channel)
|
||||
{
|
||||
ESP_RETURN_ON_FALSE(channel < SOC_ADC_CHANNEL_NUM(unit), ESP_ERR_INVALID_ARG, TAG, "invalid channel");
|
||||
ESP_RETURN_ON_FALSE(channel < ADC_LL_CHANNEL_NUM(unit), ESP_ERR_INVALID_ARG, TAG, "invalid channel");
|
||||
return gpio_config_as_analog(ADC_GET_IO_NUM(unit, channel));
|
||||
}
|
||||
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
#include "esp_rom_sys.h"
|
||||
#include "esp_adc/adc_oneshot.h"
|
||||
#include "test_common_adc.h"
|
||||
#include "hal/adc_ll.h"
|
||||
#include "esp_adc/adc_continuous.h"
|
||||
#include "esp_adc/adc_filter.h"
|
||||
|
||||
@@ -295,7 +296,7 @@ TEST_CASE("ADC continuous test after restarting", "[adc_continuous][ignore]")
|
||||
for (int i = 0; i < ret_num; i += SOC_ADC_DIGI_RESULT_BYTES) {
|
||||
adc_digi_output_data_t *p = (void*)&result[i];
|
||||
uint32_t chan_num = ADC_DRIVER_TEST_GET_CHANNEL(p);
|
||||
TEST_ASSERT(chan_num < SOC_ADC_CHANNEL_NUM(ADC_UNIT_1));
|
||||
TEST_ASSERT(chan_num < ADC_LL_CHANNEL_NUM(ADC_UNIT_1));
|
||||
}
|
||||
TEST_ESP_OK(adc_continuous_stop(handle));
|
||||
}
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
#include "esp_event.h"
|
||||
#include "esp_wifi.h"
|
||||
#include "test_common_adc.h"
|
||||
#include "hal/adc_ll.h"
|
||||
#include "test_utils.h"
|
||||
|
||||
#if SOC_TEMP_SENSOR_SUPPORTED && SOC_ADC_SUPPORTED
|
||||
@@ -138,7 +139,7 @@ TEST_CASE("Test temperature sensor work with ADC continuous", "[adc]")
|
||||
for (int i = 0; i < ret_num; i += SOC_ADC_DIGI_RESULT_BYTES) {
|
||||
adc_digi_output_data_t *p = (void*)&result[i];
|
||||
uint32_t chan_num = ADC_DRIVER_TEST_GET_CHANNEL(p);
|
||||
TEST_ASSERT(chan_num < SOC_ADC_CHANNEL_NUM(ADC_UNIT_1));
|
||||
TEST_ASSERT(chan_num < ADC_LL_CHANNEL_NUM(ADC_UNIT_1));
|
||||
}
|
||||
|
||||
//Temperature sensor work after ADC continuous read
|
||||
|
||||
@@ -99,7 +99,7 @@ void test_adc_calibration_deinit(adc_cali_handle_t handle)
|
||||
|
||||
void test_adc_set_io_level(adc_unit_t unit, adc_channel_t channel, bool level)
|
||||
{
|
||||
TEST_ASSERT(channel < SOC_ADC_CHANNEL_NUM(unit) && "invalid channel");
|
||||
TEST_ASSERT(channel < ADC_LL_CHANNEL_NUM(unit) && "invalid channel");
|
||||
|
||||
uint32_t io_num = ADC_GET_IO_NUM(unit, channel);
|
||||
TEST_ESP_OK(gpio_set_pull_mode(io_num, (level ? GPIO_PULLUP_ONLY : GPIO_PULLDOWN_ONLY)));
|
||||
@@ -118,7 +118,7 @@ void test_adc_set_io_level(adc_unit_t unit, adc_channel_t channel, bool level)
|
||||
|
||||
void test_adc_set_io_middle(adc_unit_t unit, adc_channel_t channel)
|
||||
{
|
||||
TEST_ASSERT(channel < SOC_ADC_CHANNEL_NUM(unit) && "invalid channel");
|
||||
TEST_ASSERT(channel < ADC_LL_CHANNEL_NUM(unit) && "invalid channel");
|
||||
|
||||
uint32_t io_num = ADC_GET_IO_NUM(unit, channel);
|
||||
TEST_ESP_OK(gpio_set_pull_mode(io_num, GPIO_PULLUP_PULLDOWN));
|
||||
@@ -133,7 +133,7 @@ void test_adc_set_io_middle(adc_unit_t unit, adc_channel_t channel)
|
||||
|
||||
void test_assert_adc_raw(adc_unit_t unit, adc_channel_t channel, bool level, int raw, bool dma_mode, bool loose_thresh)
|
||||
{
|
||||
TEST_ASSERT(channel < SOC_ADC_CHANNEL_NUM(unit) && "invalid channel");
|
||||
TEST_ASSERT(channel < ADC_LL_CHANNEL_NUM(unit) && "invalid channel");
|
||||
|
||||
#if defined ADC_TEST_HIGH_VAL_DMA
|
||||
int expected_value = level ? (dma_mode ? ADC_TEST_HIGH_VAL_DMA : ADC_TEST_HIGH_VAL) : ADC_TEST_LOW_VAL;
|
||||
|
||||
Reference in New Issue
Block a user