91#include <libopencm3/stm32/rcc.h>
92#include <libopencm3/stm32/gpio.h>
93#include <libopencm3/stm32/adc.h>
94#include <libopencm3/cm3/nvic.h>
95#include <libopencm3/stm32/timer.h>
103#ifndef NVIC_ADC_IRQ_PRIO
104#define NVIC_ADC_IRQ_PRIO 0
108#define ADC_SAMPLE_TIME ADC_SMPR_SMP_41DOT5CYC
109#elif defined(STM32F4)
110#define ADC_SAMPLE_TIME ADC_SMPR_SMP_56CYC
115#if defined(AD1_1_CHANNEL) || defined(AD1_2_CHANNEL) || defined(AD1_3_CHANNEL) || defined(AD1_4_CHANNEL)
121#if defined(AD2_1_CHANNEL) || defined(AD2_2_CHANNEL) || defined(AD2_3_CHANNEL) || defined(AD2_4_CHANNEL)
129#if defined(AD3_1_CHANNEL) || defined(AD3_2_CHANNEL) || defined(AD3_3_CHANNEL) || defined(AD3_4_CHANNEL)
135#define RST_ADC1 RST_ADC
136#define RST_ADC2 RST_ADC
137#define RST_ADC3 RST_ADC
154#if !USE_AD1 && !USE_AD2 && !USE_AD3 && !defined FBW
155#warning ALL ADC CONVERTERS INACTIVE
158#ifndef ADC_TIMER_PERIOD
159#define ADC_TIMER_PERIOD 10000
167#ifndef ADC_TIMER_FREQUENCY
168#define ADC_TIMER_FREQUENCY 2000000
200#if USE_AD1 || USE_AD2 || USE_AD3
201#define ADC_NUM_CHANNELS 4
233#if USE_AD1 || USE_AD2 || USE_AD3
395 s->av_nb_sample = av_nb_sample;
418#if defined(USE_AD_TIM4)
420#define RCC_TIM_ADC RCC_TIM4
421#elif defined(USE_AD_TIM1)
423#define RCC_TIM_ADC RCC_TIM1
426#define RCC_TIM_ADC RCC_TIM2
432#if USE_AD1 || USE_AD2 || USE_AD3
474#elif defined(STM32F4)
532#elif defined(STM32F4)
539#elif defined(STM32F4)
546#elif defined(STM32F4)
583#elif defined(STM32F4)
587#if USE_AD1 || USE_AD2 || USE_AD3
arch independent ADC (Analog to Digital Converter) API
uint16_t values[MAX_AV_NB_SAMPLE]
Generic interface for all ADC hardware drivers, independent from microcontroller architecture.
void adc_buf_channel(uint8_t adc_channel, struct adc_buf *s, uint8_t av_nb_sample)
Link between ChibiOS ADC drivers and Paparazzi adc_buffers.
void adc_init(void)
Adc init.
static const uint8_t adc_channel_map[ADC_NUM_CHANNELS]
void gpio_setup_pin_analog(ioportid_t port, uint16_t pin)
Setup a gpio for analog use.
uint32_t get_sys_time_msec(void)
Get the time in milliseconds since startup.
Some architecture independent helper functions for GPIOs.
PRINT_CONFIG_MSG("USE_INS_NAV_INIT defaulting to TRUE")
uint32_t timer_get_frequency(uint32_t timer_peripheral)
Get Timer clock frequency (before prescaling) Only valid if using the internal clock for the timer.
#define NVIC_ADC_IRQ_PRIO
static uint8_t nb_adc3_channels
#define ADC_TIMER_FREQUENCY
Timer frequency for ADC Timer will trigger an update event after reaching the period reload value.
static void adc_init_irq(void)
Configure and enable ADC interrupt.
static void adc_init_rcc(void)
Configure and enable RCC for peripherals (ADC1, ADC2, Timer)
static uint8_t nb_adc1_channels
static void adc_push_sample(struct adc_buf *buf, uint16_t sample)
static uint8_t nb_adc2_channels
static void adc_init_single(uint32_t adc, uint8_t nb_channels, uint8_t *channel_map)
Architecture independent timing functions.
unsigned short uint16_t
Typedef defining 16 bit unsigned short type.
unsigned int uint32_t
Typedef defining 32 bit unsigned int type.
unsigned char uint8_t
Typedef defining 8 bit unsigned char type.