STAR
Cal STAR — firmware, DAQ server, and engine design
Loading...
Searching...
No Matches
board_adc.c
Go to the documentation of this file.
1#include "board_adc.h"
2
3#include "main.h"
4
6
16
17static bool calibrated;
18
27
28bool board_adc_read(board_adc_input_t input, uint16_t* counts,
29 uint32_t timeout_ms) {
30 if ((unsigned)input >= BOARD_ADC_COUNT || !counts) {
31 return false;
32 }
33 /* Same as MX_ADC1_Init's channel setup, only the channel differs. */
35 config.Channel = channels[input];
38 config.SingleDiff = ADC_SINGLE_ENDED;
39 config.OffsetNumber = ADC_OFFSET_NONE;
40 config.Offset = 0;
41 config.OffsetSignedSaturation = DISABLE;
44 return false;
45 }
46 bool ok = HAL_ADC_PollForConversion(&hadc1, timeout_ms) == HAL_OK;
47 if (ok) {
48 *counts = (uint16_t)HAL_ADC_GetValue(&hadc1);
49 }
51 return ok;
52}
53
54void board_adc_snapshot(board_adc_snapshot_t* snapshot, uint32_t timeout_ms) {
55 for (int i = 0; i < BOARD_ADC_COUNT; ++i) {
56 snapshot->counts[i] = 0;
57 snapshot->valid[i] = board_adc_read((board_adc_input_t)i,
58 &snapshot->counts[i], timeout_ms);
59 }
60}
static bool calibrated
Definition board_adc.c:17
bool board_adc_read(board_adc_input_t input, uint16_t *counts, uint32_t timeout_ms)
Definition board_adc.c:28
static const uint32_t channels[BOARD_ADC_COUNT]
Definition board_adc.c:7
void board_adc_snapshot(board_adc_snapshot_t *snapshot, uint32_t timeout_ms)
Definition board_adc.c:54
bool board_adc_init(void)
Definition board_adc.c:19
board_adc_input_t
Definition board_adc.h:18
@ BOARD_ADC_VBAT
Definition board_adc.h:19
@ BOARD_ADC_CURR
Definition board_adc.h:25
@ BOARD_ADC_ALT_CURR
Definition board_adc.h:24
@ BOARD_ADC_COUNT
Definition board_adc.h:26
@ BOARD_ADC_EXT_SENSE_1
Definition board_adc.h:20
@ BOARD_ADC_PYRO_2_CONT
Definition board_adc.h:22
@ BOARD_ADC_PYRO_1_CONT
Definition board_adc.h:21
@ BOARD_ADC_EXT_SENSE_2
Definition board_adc.h:23
static bool ok
Definition flight_e2e.c:435
#define ADC_CALIB_OFFSET_LINEARITY
HAL_StatusTypeDef HAL_ADCEx_Calibration_Start(ADC_HandleTypeDef *hadc, uint32_t CalibrationMode, uint32_t SingleDiff)
HAL_StatusTypeDef HAL_ADC_Start(ADC_HandleTypeDef *hadc)
HAL_StatusTypeDef HAL_ADC_Stop(ADC_HandleTypeDef *hadc)
uint32_t HAL_ADC_GetValue(const ADC_HandleTypeDef *hadc)
HAL_StatusTypeDef HAL_ADC_PollForConversion(ADC_HandleTypeDef *hadc, uint32_t Timeout)
HAL_StatusTypeDef HAL_ADC_ConfigChannel(ADC_HandleTypeDef *hadc, ADC_ChannelConfTypeDef *sConfig)
#define ADC_SAMPLETIME_387CYCLES_5
Sampling time 387.5 ADC clock cycles, On devices STM32H72xx and STM32H73xx, parameter available only ...
#define ADC_SINGLE_ENDED
ADC channel ending set to single ended (literal also used to set calibration mode).
#define ADC_CHANNEL_18
ADC external channel (channel connected to GPIO pin) ADCx_IN18.
#define ADC_CHANNEL_15
ADC external channel (channel connected to GPIO pin) ADCx_IN15.
#define ADC_CHANNEL_16
ADC external channel (channel connected to GPIO pin) ADCx_IN16.
#define ADC_CHANNEL_14
ADC external channel (channel connected to GPIO pin) ADCx_IN14.
#define ADC_CHANNEL_10
ADC external channel (channel connected to GPIO pin) ADCx_IN10.
#define ADC_CHANNEL_11
ADC external channel (channel connected to GPIO pin) ADCx_IN11.
#define ADC_CHANNEL_17
ADC external channel (channel connected to GPIO pin) ADCx_IN17.
#define ADC_OFFSET_NONE
ADC offset disabled: no offset correction for the selected ADC channel.
#define ADC_REGULAR_RANK_1
ADC group regular sequencer rank 1.
@ DISABLE
Definition stm32h7xx.h:188
static const idle_config_t config
Definition idle_task.c:17
ADC_HandleTypeDef hadc1
Definition main.c:48
@ HAL_OK
Structure definition of ADC channel for regular group.
ADC handle Structure definition.