HARMcksL: ARM HAL toolbox (yet STM32 oriented) 1.6
SMFSW collection of HAL hacks for STM32
Loading...
Searching...
No Matches
ADC_ex.c File Reference

Simple extension for ADCs. More...

#include "sarmfsw.h"
#include "ADC_ex.h"
Include dependency graph for ADC_ex.c:

Data Structures

struct  ADCex_t
 ADCex structure. More...

Macros

#define Def_VBatFactor   (2.0f)
 2x factor
#define STM32_VREF_CAL   (VAL_AT(VREF_CAL_ADDR, uint16_t))
 VRef (ADC) calibration address content.
#define STM32_TS_CAL1   (VAL_AT(TS_CAL1_ADDR, uint16_t))
 Temp sensor ADC raw data acquired at Lower temperature address content.
#define STM32_TS_CAL2   (VAL_AT(TS_CAL2_ADDR, uint16_t))
 Temp sensor ADC raw data acquired at Higher temperature address content.
#define ADC_NB   1UL
 Number of ADC peripherals used.
#define ADC_NB_CHAN   2UL
 Number of ADC channels used (per peripheral).
#define TOTAL_ADC_CHANS   (ADC_NB * ADC_NB_CHAN)
 Total number of ADC channels.
#define ADC_SAMP_BUF_SIZE   4UL
#define ADC_REFRESH_PERIOD   20UL
 ADC conversions results refreshing period (default value).

Typedefs

typedef uint32_t DMA_sz_t
 Size of DMA buffer cells (1 cell per ADC value).

Functions

uint16_t ADC_GetRawVal (const eAnalogInput input)
 Get ADC channel raw value.
float ADC_GetConvertedVal (const eAnalogInput input)
 Get ADC channel converted value.
FctERR ADC_Start (void)
 Start ADC acquisitions.
FctERR ADC_Stop (void)
 Stop ADC acquisitions.
void ADC_handler (void)
 ADC_ex handler.
void ADC_SetPeriod (const uint32_t period)
 Set ADC Sampling or Conversion period.
void HAL_ADC_ConvCpltCallback (ADC_HandleTypeDef *hadc)
 Conversion complete callback in non blocking mode.

Variables

const ADC_Cfg ADCConfig [Adc_MAX]
 ADCConfig external declaration.
ADCex_t ADC_ex

Detailed Description

Simple extension for ADCs.

Author
SMFSW

ADC_ex is meant to automate ADC conversions using DMA.

  • DMA must be configured for ADC peripherals:
    • Peripheral to Memory
    • Circular Mode
    • Increment Memory
    • Data width Word for both peripheral and memory
  • ADC configuration (no need to active ADC global interrupt, DMA will handle conversion complete callback):
    • Scan conversion mode across channels enabled
    • Continuous conversion is optional (as DMA continuous request handles the behavior)
    • DMA continuous request when available (if disabled, user has to start conversions manually when needed)
    • Interrupt generated at end of sequence of conversion
      Note
      Define USE_ADC_EX symbol at project level to use ADC_ex functionalities
      Configuration done including ADC_cfg.h file

Macro Definition Documentation

◆ ADC_NB

#define ADC_NB   1UL

Number of ADC peripherals used.

◆ ADC_NB_CHAN

#define ADC_NB_CHAN   2UL

Number of ADC channels used (per peripheral).

◆ ADC_REFRESH_PERIOD

#define ADC_REFRESH_PERIOD   20UL

ADC conversions results refreshing period (default value).

Note
ADC_SAMP_BUFF_SIZE can be defined in adc_cfg.h, globals.h or at project level if higher amount of samples required

◆ ADC_SAMP_BUF_SIZE

#define ADC_SAMP_BUF_SIZE   4UL

Size of the input buffer per analog input

◆ Def_VBatFactor

#define Def_VBatFactor   (2.0f)

2x factor

◆ STM32_TS_CAL1

#define STM32_TS_CAL1   (VAL_AT(TS_CAL1_ADDR, uint16_t))

Temp sensor ADC raw data acquired at Lower temperature address content.

◆ STM32_TS_CAL2

#define STM32_TS_CAL2   (VAL_AT(TS_CAL2_ADDR, uint16_t))

Temp sensor ADC raw data acquired at Higher temperature address content.

◆ STM32_VREF_CAL

#define STM32_VREF_CAL   (VAL_AT(VREF_CAL_ADDR, uint16_t))

VRef (ADC) calibration address content.

◆ TOTAL_ADC_CHANS

#define TOTAL_ADC_CHANS   (ADC_NB * ADC_NB_CHAN)

Total number of ADC channels.

Typedef Documentation

◆ DMA_sz_t

typedef uint32_t DMA_sz_t

Size of DMA buffer cells (1 cell per ADC value).

Function Documentation

◆ ADC_GetConvertedVal()

float ADC_GetConvertedVal ( const eAnalogInput input)

Get ADC channel converted value.

Parameters
[in]input- Input index
Returns
Channel converted value

◆ ADC_GetRawVal()

uint16_t ADC_GetRawVal ( const eAnalogInput input)

Get ADC channel raw value.

Parameters
[in]input- Input index
Returns
Channel raw value

◆ ADC_handler()

void ADC_handler ( void )

ADC_ex handler.

Note
If ADC_CONTINUOUS_SAMPLING is defined and ADC_AUTO_RAW_VAL_CONV is not defined, ADC_handler is useless
Here is the call graph for this function:

◆ ADC_SetPeriod()

void ADC_SetPeriod ( const uint32_t period)

Set ADC Sampling or Conversion period.

Parameters
[in]period- Sampling or Conversion period (in ms)

◆ ADC_Start()

FctERR ADC_Start ( void )

Start ADC acquisitions.

Returns
FctERR - Error code
Here is the caller graph for this function:

◆ ADC_Stop()

FctERR ADC_Stop ( void )

Stop ADC acquisitions.

Returns
FctERR - Error code
Here is the caller graph for this function:

◆ HAL_ADC_ConvCpltCallback()

void HAL_ADC_ConvCpltCallback ( ADC_HandleTypeDef * hadc)

Conversion complete callback in non blocking mode.

!

Strong Functions
Strong implementation of HAL_ADC_ConvCpltCallback in the library (will get precedence over HAL function)
Warning
If DMA used, same number of channels to convert have to be declared between ADCs for proper handling
Parameters
[in]hadc- ADC handle
Here is the call graph for this function:

Variable Documentation

◆ ADC_ex

ADCex_t ADC_ex
Initial value:
= { 0, {{ 0 }},
0,
const ADC_Cfg ADCConfig[Adc_MAX]
ADCConfig external declaration.
#define ADC_REFRESH_PERIOD
ADC conversions results refreshing period (default value).
Definition ADC_ex.c:234

◆ ADCConfig

const ADC_Cfg ADCConfig[Adc_MAX]
extern

ADCConfig external declaration.