Skip to content

File syn_adc.h

FileList > drivers > syn_adc.h

Go to the source code of this file

ADC abstraction — oversampling, calibration, unit conversion. More...

  • #include "../common/syn_defs.h"
  • #include "../dsp/syn_filter.h"
  • #include "../dsp/syn_signal.h"
  • #include "../port/syn_port_adc.h"
  • #include <stdbool.h>
  • #include <stdint.h>

Classes

Type Name
struct SYN_ADC
ADC channel instance — config + last readings.
struct SYN_ADC_Config
ADC channel configuration.

Public Types

Type Name
enum SYN_ADC_FilterType
ADC digital filter selector.

Public Functions

Type Name
SYN_Status syn_adc_init (SYN_ADC * adc, const SYN_ADC_Config * cfg)
Initialize an ADC channel with oversampling and calibration.
int32_t syn_adc_read (SYN_ADC * adc)
Read the ADC (oversample + filter + calibrate).
int32_t syn_adc_read_mv (SYN_ADC * adc)
Read and convert to millivolts.
void syn_adc_set_calibration (SYN_ADC * adc, int16_t offset, uint16_t scale, uint8_t shift)
Update calibration at runtime.
void syn_adc_set_stats (SYN_ADC * adc, SYN_Signal * stats)
Attach a signal statistics window.

Public Static Functions

Type Name
int32_t syn_adc_calibrated (const SYN_ADC * adc)
Get last calibrated value.
int32_t syn_adc_filtered (const SYN_ADC * adc)
Get last filtered value.
int32_t syn_adc_raw (const SYN_ADC * adc)
Get last raw value.

Detailed Description

Wraps the raw ADC port with oversampling, digital filtering, calibration (via LUT or linear scale/offset), and conversion to engineering units (millivolts, etc.).

** **

SYN_ADC adc;
SYN_FilterEMA adc_filter;
syn_filter_ema_init(&adc_filter, 128);

SYN_ADC_Config cfg = {
    .channel = 0,
    .oversample = 4,      // 4× oversampling (2 extra bits)
    .filter = &adc_filter,
    .filter_type = SYN_ADC_FILTER_EMA,
    .cal_offset = 0,
    .cal_scale = 1000,    // × 1.000
    .cal_scale_shift = 10, // scale denominator = 1024
};
syn_adc_init(&adc, &cfg);

int32_t mv = syn_adc_read_mv(&adc);

Public Types Documentation

enum SYN_ADC_FilterType

ADC digital filter selector.

enum SYN_ADC_FilterType {
    SYN_ADC_FILTER_NONE = 0,
    SYN_ADC_FILTER_MA = 1,
    SYN_ADC_FILTER_EMA = 2,
    SYN_ADC_FILTER_MEDIAN = 3
};


Public Functions Documentation

function syn_adc_init

Initialize an ADC channel with oversampling and calibration.

SYN_Status syn_adc_init (
    SYN_ADC * adc,
    const SYN_ADC_Config * cfg
) 

Parameters:

  • adc ADC instance.
  • cfg Configuration.

Returns:

SYN_OK on success.


function syn_adc_read

Read the ADC (oversample + filter + calibrate).

int32_t syn_adc_read (
    SYN_ADC * adc
) 

Parameters:

  • adc ADC instance.

Returns:

Calibrated value.


function syn_adc_read_mv

Read and convert to millivolts.

int32_t syn_adc_read_mv (
    SYN_ADC * adc
) 

Uses the port's reference voltage and resolution for conversion.

Parameters:

  • adc ADC instance.

Returns:

Value in millivolts.


function syn_adc_set_calibration

Update calibration at runtime.

void syn_adc_set_calibration (
    SYN_ADC * adc,
    int16_t offset,
    uint16_t scale,
    uint8_t shift
) 

Parameters:

  • adc ADC instance.
  • offset New zero-point offset.
  • scale New scale numerator.
  • shift New scale shift (denominator = 1 << shift).

function syn_adc_set_stats

Attach a signal statistics window.

void syn_adc_set_stats (
    SYN_ADC * adc,
    SYN_Signal * stats
) 

Each syn_adc_read() pushes the calibrated value into the signal window, giving you noise stats (min/max/mean/variance) for free.

Parameters:

  • adc ADC instance.
  • stats Initialized SYN_Signal, or NULL to detach.

Public Static Functions Documentation

function syn_adc_calibrated

Get last calibrated value.

static inline int32_t syn_adc_calibrated (
    const SYN_ADC * adc
) 

Parameters:

  • adc ADC instance.

Returns:

Calibrated reading.


function syn_adc_filtered

Get last filtered value.

static inline int32_t syn_adc_filtered (
    const SYN_ADC * adc
) 

Parameters:

  • adc ADC instance.

Returns:

Filtered reading.


function syn_adc_raw

Get last raw value.

static inline int32_t syn_adc_raw (
    const SYN_ADC * adc
) 

Parameters:

  • adc ADC instance.

Returns:

Raw ADC reading.



The documentation for this class was generated from the following file src/syntropic/drivers/syn_adc.h