MAX30001G  1.2.0
Arduino library for MAX30001G ECG and BIOZ AFE
Global Variables

Global variables are updated by the driver and can be read by user application. They should not be written to.

AFE globals

Variable Unit Description
fmstr Hz Main clock frequency
tres us Timing resolution
CAL_fcal Hz Calibration source frequency
CAL_resolution us Calibration timing resolution
RCAL_freq Hz Calibration resistor modulation frequency
RBIASV_res MOhm Common-mode feedback resistance (ECG/BIOZ high-current mode)
V_ref mV ADC reference output
V_AVDD mV Analog supply voltage

BIOZ globals

Variable Unit Description
BIOZ_samplingRate sps BIOZ sample rate
BIOZ_frequency Hz BIOZ modulation frequency
BIOZ_ahpf Hz BIOZ analog HPF (before demodulator)
BIOZ_dlpf Hz BIOZ digital LPF (after demodulator)
BIOZ_dhpf Hz BIOZ digital HPF (after demodulator)
BIOZ_phase deg BIOZ demodulation phase offset
BIOZ_gain V/V BIOZ gain
BIOZ_cgmag nA BIOZ current-generator magnitude
BIOZ_cmres kOhm BIOZ common-mode resistance (low-current mode)
BIOZ_test_rnom kOhm BIOZ test resistor nominal value
BIOZ_test_rmod kOhm BIOZ test resistor modulation value
BIOZ_test_frequency Hz BIOZ test resistor modulation frequency

ECG globals

Variable Unit Description
ECG_samplingRate sps ECG sample rate
ECG_lpf Hz ECG low-pass filter
ECG_hpf Hz ECG high-pass filter
ECG_latency ms ECG signal group delay
ECG_gain V/V ECG amplifier gain
ECG_progression per second ECG progression rate
RtoR_resolution ms R-to-R timing resolution
RtoR_delay ms R-to-R detection delay

Data related globals

Variable Type Description
ECG_data RingBuffer<float,128> ECG samples buffer
BIOZ_data RingBuffer<float,128> BIOZ samples buffer
RTOR_data RingBuffer<float,16> RR interval samples buffer (ms)
ecg_available bool ECG data-ready latch
bioz_available bool BIOZ data-ready latch
rtor_available bool RRINT data-ready latch
rr_interval float Most recent RR interval (ms)
ecg_counter int Samples added by last ECG FIFO read
bioz_counter int Samples added by last BIOZ FIFO read
rtor_counter int Samples added by last RTOR read

Impedance spectroscopy

Variable Type Unit Description
impedance_magnitude[11] float[11] Ohm Fit result magnitude
impedance_phase[11] float[11] deg Fit result phase
impedance_frequency[11] float[11] Hz Frequency bins

Error & Status globals

Group Variables
Latched event/fault flags (sticky until cleared) ecg_fast_recovery_occurred, ecg_overflow_occurred, bioz_cgm_occurred, bioz_undervoltage_occurred, bioz_overvoltage_occurred, bioz_overflow_occurred, ecg_lead_off, leads_on_detected, pll_unlocked_occurred, ecg_available, bioz_available, rtor_available
Per-read result flags valid_data_detected, EOF_detected

Reset behavior:

  • Use clearLatchedStatusFlags() when your application has consumed latched events/faults.
  • valid_data_detected and EOF_detected are reset/updated inside readECG(), readBIOZ(), readECG_FIFO(), readBIOZ_FIFO().

Pending IRQ flags used by servicePendingInterrupts():

  • afe_irq_pending (INT1 or INT2 edge seen)
  • afe_irq1_pending
  • afe_irq2_pending

STATUS ownership/clearing strategy:

  • MAX30001 STATUS bits like DCLOFFINT, BOVER, BUNDR, BCGMON, LONINT, PLLINT are held until STATUS readback (datasheet).
  • The driver therefore latches software flags on every STATUS read path before those hardware bits can clear.
  • Reading BioZ range tags (BTAG=001/011) can trigger a STATUS read to disambiguate over-vs-under range; this also goes through the same latching path.
  • FIFO overflow tags (ETAG/BTAG=111) require FIFO_RST or SYNCH per datasheet, and the driver issues FIFOReset().