Skip to main content
Visitor II
November 11, 2025
Question

ST1VAFE3BX vAFE validation against reference signals

  • November 11, 2025
  • 3 replies
  • 139 views

I'd like to validate ST1VAFE3BX vAFE measurement data against test signals as part of hardware design validation of a custom ECG sensor design based on ST1VAFE3BX.

I intend to input reference signals (differential or single ended) into the two bio channels of the ST1VAFE6BX, capture the raw ADC data, convert to mV, and then compare to the reference signals.

- Conducting this test will help validate the data processing, especially reading and interpreting vAFE data from the FIFO, which is different than if reading from registers.

Are there any documents or guides for how to do such tests?

Currently the vAFE waveforms I capture look correct except for the amplitude. 

    This topic has been closed for replies.

    3 replies

    Technical Moderator
    November 12, 2025

    Hi @bwilkins ,

    You can refer to our official examples on Github.

    bwilkinsAuthor
    Visitor II
    November 12, 2025

    Hi @Federica Bossi ,

     

    Thanks for the reply. I have seen the code. I'm after other details such as: description of test setup, input signals, ST1VAFE3BX configuration and expected results.

     

    Other information:

    - configure device in signal-ended configuration, or differential configuration?

    - should I attach a signal generator to the electrodes directly, or via ECG pads?

     

    Thank you!

    bwilkinsAuthor
    Visitor II
    December 16, 2025

    Hi @Federica Bossi 

     

    I did another test to confirm the conversion of vAFE data from the FIFO to mV value is correct.

     

    Procedure:

    1. I duplicated this conversion procedure from ST Github into my code, and added a `LOG()` statement to output the mV values to the console:

    st1vafe3bx_fifo_data_t test;
    test.ah_bio.raw = (int16_t)fifo_data[j + 1] + (int16_t)fifo_data[j + 2] * 256U;
    test.ah_bio.mv = st1vafe3bx_from_lsb_to_mv(test.ah_bio.raw);
    LOG_INF("%2i: vAFE: %0.4f", i, test.ah_bio.mv);
    which would output values at runtime like this
    [00:02:34.119,323] <inf> st1vafe3bx: 1: vAFE: 22.8871
    [00:02:34.119,384] <inf> st1vafe3bx: 2: vAFE: 22.8993
    [00:02:34.119,445] <inf> st1vafe3bx: 3: vAFE: 22.9153
    [00:02:34.119,476] <inf> st1vafe3bx: 4: vAFE: 22.9275

    I plot the vAFE mV values.

     

    2. Simultaneously I collected the ADC counts (using same method as my previous message, which does not use the console) and converted the results to mV using the scaling factor "1311 LSB/mV". I plot the ADC counts and mV values.

     

    The following graph shows all results with 150mVp-p sine waveform applied to the ECG electrodes.

    - There is a horizontal offset between the data sets, so please ignore that the individual plots are not time aligned. 

    - Left axis = ECG raw (ADC counts) (dark blue)

    - Right axis = ECG ST (red) and ECG C2G (mV) (light blue)

    vAFE_mV_C2G_ST.png

    The ECG ST and ECG C2G show the same vertical range; approx +/- 25mV or 50mVp-p.

    From this result I believe the conversion from ADC counts to mV I am doing is correct; my mV values match those exactly from ST.

     

    My issue is the input signal to the ECG electrodes was 150mVp-p, and I've found here the data shows it as approx 50mVp-p. Somehow the amplitude is 1/3 of what it should be.

     

    Could my circuit be doing this, or can vAFE ADC somehow be reducing the ADC counts in some way when the FIFO is configured based on output data rate (ODR) or bandwidth etc?

     

    Thank you for any suggestions.

    bwilkinsAuthor
    Visitor II
    December 18, 2025

    @casadeib Hope you might be able to offer some insight here.