Skip to content

adc_read_raw каждый раз настраивает канал #6

Description

@ag-embedded

в gpio_stm32.hpp

	inline void platform_adc_init(const PinA_t &pin)
	{
		GPIO_InitTypeDef i = {pin.pin, GPIO_MODE_ANALOG, GPIO_NOPULL, GPIO_SPEED_FREQ_HIGH};
		HAL_GPIO_Init(pin.port, &i);
		HAL_ADC_Start(pin.handle);
		
		return;
	}

	inline uint32_t platform_adc_read_raw(const PinA_t &pin, uint32_t sampling)
	{
		ADC_ChannelConfTypeDef c = {pin.channel, ADC_REGULAR_RANK_1, sampling};
		HAL_ADC_ConfigChannel(pin.handle, &c);
		HAL_ADC_Start(pin.handle);
		HAL_ADC_PollForConversion(pin.handle, 10);
		return HAL_ADC_GetValue(pin.handle);
	}

в gpio_esp32.hpp

	inline void platform_adc_init(const PinA_t &pin)
	{
		adc1_config_width(ADC_WIDTH_BIT_12);
		adc1_config_channel_atten((adc1_channel_t)pin.channel, ADC_ATTEN_DB_12);
		platform_adc_calibration(pin);
		
		return;
	}

	inline uint32_t platform_adc_read_raw(const PinA_t &pin, uint32_t sampling)
	{
		return adc1_get_raw((adc1_channel_t)pin.channel);
	}

То есть в esp32 adc_init это настройка канала а не настройка adc
в stm32 adc_init это настройка именно adc, настройка канала происходит при каждом вызове platform_adc_read_raw

Самый логичный вариант- сделать отдельно настройку АЦП и отдельно настройку каналов АЦП. Плюс убрать настройку канала при каждом вызове platform_adc_read_raw

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions