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

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions