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.
Parameters:
adcADC instance.cfgConfiguration.
Returns:
SYN_OK on success.
function syn_adc_read¶
Read the ADC (oversample + filter + calibrate).
Parameters:
adcADC instance.
Returns:
Calibrated value.
function syn_adc_read_mv¶
Read and convert to millivolts.
Uses the port's reference voltage and resolution for conversion.
Parameters:
adcADC instance.
Returns:
Value in millivolts.
function syn_adc_set_calibration¶
Update calibration at runtime.
Parameters:
adcADC instance.offsetNew zero-point offset.scaleNew scale numerator.shiftNew scale shift (denominator = 1 << shift).
function syn_adc_set_stats¶
Attach a signal statistics window.
Each syn_adc_read() pushes the calibrated value into the signal window, giving you noise stats (min/max/mean/variance) for free.
Parameters:
adcADC instance.statsInitialized SYN_Signal, or NULL to detach.
Public Static Functions Documentation¶
function syn_adc_calibrated¶
Get last calibrated value.
Parameters:
adcADC instance.
Returns:
Calibrated reading.
function syn_adc_filtered¶
Get last filtered value.
Parameters:
adcADC instance.
Returns:
Filtered reading.
function syn_adc_raw¶
Get last raw value.
Parameters:
adcADC instance.
Returns:
Raw ADC reading.
The documentation for this class was generated from the following file src/syntropic/drivers/syn_adc.h