Loading...
Searching...
No Matches
debug_adcvsense.c
1/***********************************************************************************
2 * @file debug_adcvsense.c *
3 * @author Matt Ricci *
4 * @addtogroup Shell *
5 * *
6 * @{ *
7 ***********************************************************************************/
8
9#include "string.h"
10#include "stdio.h"
11
12#include "adc.h"
13#include "gpiopin.h"
14#include "rcc.h"
15#include "shell.h"
16
17static void ADCvsense_exec(UART_t *uart, char *);
18
19DEFINE_PROGRAM_HANDLE("adc_vsense", ADCvsense_exec, NULL)
20
21/* =============================================================================== */
28static void ADCvsense_exec(UART_t *uart, char *flags) {
29
30 RCC_ENABLE_PERIPHERAL(APB2, ADC1);
31 RCC_RESET_PERIPHERAL(APB2, ADC);
32
33 GPIO_Config gpioConfig = GPIO_CONFIG_DEFAULT;
34 gpioConfig.mode = GPIO_MODE_ANALOG;
35
36 GPIOpin_t pin = GPIOpin_init(GPIOF, 3, &gpioConfig);
37 uint16_t v = 0;
38
39 ADC_Config config = ADC_CONFIG_DEFAULT;
40 config.TSVREFE = true;
41 config.VBATE = false;
42 config.EOCS = false;
44 config.SQ[0] = ADC_IN17;
45 config.SMP[17] = ADC_SMP_480;
46 ADC_t vsense = ADC_init(ADC1, &config);
47
49 v = vsense.readData(&vsense);
50}
51
bool(* startConversion)(struct _ADC *adc, ADC_ConversionType type)
Function pointer to start an ADC conversion (regular or injected).
Definition adc.h:330
ADC_Prescale ADCPRE
ADC prescaler for ADCCLK (ADC_CCR.ADCPRE).
Definition adc.h:319
ADC_EocSelect EOCS
End Of Conversion Selection (CR2.EOCS).
Definition adc.h:307
bool VBATE
VBAT channel enable (ADC_CCR.VBATE).
Definition adc.h:318
uint16_t(* readData)(struct _ADC *adc)
Function pointer to read the ADC regular conversion result.
Definition adc.h:331
ADC_Channel SQ[16]
Regular channel sequence definition (SQ1 to SQ16) (SQR1, SQR2, SQR3).
Definition adc.h:314
ADC_SampleTime SMP[19]
Sampling time for each channel (0-18) (SMPR1, SMPR2).
Definition adc.h:310
bool TSVREFE
Temperature sensor and VREFINT enable (ADC_CCR.TSVREFE).
Definition adc.h:317
ADC_t ADC_init(ADC_TypeDef *adc_regs, ADC_Config *config)
Definition adc.c:23
@ ADC_SMP_480
480 ADC clock cycles
Definition adc.h:243
@ ADC_ADCPRE_PCLK2_DIV8
ADCCLK = PCLK2 divided by 8.
Definition adc.h:279
@ ADC_CONVERSION_REGULAR
Start a regular group conversion.
Definition adc.h:287
@ ADC_IN17
Analog input channel 17.
Definition adc.h:195
ADC configuration structure.
Definition adc.h:296
Struct definition for ADC interface. Provides the API handle for consumers to interact with an ADC pe...
Definition adc.h:326
GPIO_Mode mode
Pin I/O direction | (default GPIO_MODE_OUTPUT)
Definition gpiopin.h:139
GPIOpin_t GPIOpin_init(GPIO_TypeDef *, GPIO_Pin, GPIO_Config *)
Initialiser for a GPIO peripheral pin interface.
Definition gpiopin.c:28
@ GPIO_MODE_ANALOG
Analog mode.
Definition gpiopin.h:99
Struct definition for GPIO configuration.
Definition gpiopin.h:138
Struct definition for a GPIO pin.
Definition gpiopin.h:151
Struct definition for UART interface.
Definition uart.h:132