ADC

../_images/adc.svg

Examples

#include "abov/system.h"
#include "abov/hal/gpio.h"
#include "abov/hal/adc.h"

static void myadc_gpio_init(void)
{
	struct gpio_cfg cfg = {
		.mode = GPIO_MODE_ANALOG,
		.altfunc = true,
		.altfunc_number = 3,
	};
	gpio_open(PERIPH_GPIOA, 1, &cfg);
}

static void myadc_init(void)
{
	myadc_gpio_init();

	adc_enable(PERIPH_ADC);
	adc_set_mode(PERIPH_ADC, ADC_MODE_SINGLE_CONVERSION);
#if defined(DEFAULT_CONFIGURATION)
	adc_set_clock_frequency(PERIPH_ADC, 1000000,
			clk_get_peripheral_clock_source_frequency(PERIPH_ADC));
	adc_set_trigger(PERIPH_ADC, ADC_TRIGGER_MANUAL);
#endif
	adc_select_channel(PERIPH_ADC, ADC_CHANNEL_1);
}

int main(void)
{
	myadc_init();

	adc_start(PERIPH_ADC);

	while (!adc_is_completed(PERIPH_ADC)) {
		/* waiting */
	}

	uint32_t adc_result = adc_get_measurement(PERIPH_ADC);

	adc_clear_event(PERIPH_ADC, ADC_EVENT_COMPLETE);

	return 0;
}

HAL

Functions

void adc_enable(periph_t adc)
void adc_disable(periph_t adc)

LL

Enums

enum adc_mode_t

Values:

enumerator ADC_MODE_SINGLE_CONVERSION
enumerator ADC_MODE_SINGLE_CONVERSION_MULTI_CHANNEL
enumerator ADC_MODE_CONTINUOUS_CONVERSION
enumerator ADC_MODE_CONTINUOUS_CONVERSION_MULTI_CHANNEL
enumerator ADC_MODE_IDLE
enum adc_channel_t

Values:

enumerator ADC_CHANNEL_0
enumerator ADC_CHANNEL_1
enumerator ADC_CHANNEL_2
enumerator ADC_CHANNEL_3
enumerator ADC_CHANNEL_4
enumerator ADC_CHANNEL_5
enumerator ADC_CHANNEL_6
enumerator ADC_CHANNEL_7
enumerator ADC_CHANNEL_8
enumerator ADC_CHANNEL_9
enumerator ADC_CHANNEL_10
enumerator ADC_CHANNEL_11
enumerator ADC_CHANNEL_12
enumerator ADC_CHANNEL_13
enumerator ADC_CHANNEL_14
enumerator ADC_CHANNEL_15
enumerator ADC_CHANNEL_MAX
enumerator ADC_CHANNEL_MASK
enum adc_trigger_t

Values:

enumerator ADC_TRIGGER_MANUAL
enumerator ADC_TRIGGER_TIMER0_CC0
enumerator ADC_TRIGGER_TIMER1_CC0
enumerator ADC_TRIGGER_TIMER2_CC0
enumerator ADC_TRIGGER_TIMER3_CC0
enumerator ADC_TRIGGER_TIMER4_CC0
enumerator ADC_TRIGGER_TIMER5_CC0
enumerator ADC_TRIGGER_TIMER6_CC0
enumerator ADC_TRIGGER_TIMER7_CC0
enumerator ADC_TRIGGER_TIMER1_CC1
enumerator ADC_TRIGGER_TIMER1_CC2
enumerator ADC_TRIGGER_TIMER1_CC3
enumerator ADC_TRIGGER_TIMER2_CC2
enumerator ADC_TRIGGER_TIMER3_CC1
enumerator ADC_TRIGGER_TIMER3_TRGO
enumerator ADC_TRIGGER_EXTI11
enumerator ADC_TRIGGER_MAX
enum adc_event_t

Values:

enumerator ADC_EVENT_NONE
enumerator ADC_EVENT_BUSY
enumerator ADC_EVENT_COMPLETE
enumerator ADC_EVENT_MASK

Functions

void adc_reset(periph_t adc)

Reset ADC.

This function makes the given ADC the reset default state.

Parameters

adc[in] a peripheral enumerated in periph_t

void adc_enable_clock(periph_t adc)

Activate the ADC.

Parameters

adc[in] a peripheral enumerated in periph_t

void adc_disable_clock(periph_t adc)

Deactivate the ADC.

Parameters

adc[in] a peripheral enumerated in periph_t

void adc_set_clock_frequency(periph_t adc, uint32_t hz, uint32_t pclk)
uint32_t adc_get_frequency(periph_t adc, uint32_t pclk)
void adc_set_mode(periph_t adc, adc_mode_t mode)
void adc_start(periph_t adc)

Start the ADC conversion.

Parameters

adc[in] a peripheral enumerated in periph_t

void adc_stop(periph_t adc)

Stop the ADC conversion.

Parameters

adc[in] a peripheral enumerated in periph_t

void adc_select_channel(periph_t adc, adc_channel_t channel)
void adc_set_trigger(periph_t adc, adc_trigger_t trigger)
uint32_t adc_get_measurement(periph_t adc)
void adc_enable_irq(periph_t adc)
void adc_disable_irq(periph_t adc)
adc_event_t adc_get_event(periph_t adc)
void adc_clear_event(periph_t adc, adc_event_t events)
bool adc_is_busy(periph_t adc)
bool adc_is_completed(periph_t adc)
void adc_set_sample_time(periph_t adc, adc_channel_t channel, uint32_t cycle)
void adc_calibrate(periph_t adc)