Tool/software:
Hello TI Support Team,
We’re using the AFE4490 breakout PCB from Protocentral as our analog front-end for PPG, heart-rate, and SpO₂ measurements. Our host is an nRF52840 Development Kit. We started with the reference C++ firmware from the AFE44x0 GitHub repo (https://github.com/Protocentral/protocentral-afe4490-arduino.git) , then ported it to plain C to fit into our existing codebase. source code is shared below.
Issue Description:
• Heart-rate readings fluctuate wildly and exhibit sudden spikes—for example, jumping from ~80 BPM up to ~115 BPM within one second, then back down.
• SpO₂ readings are similarly unstable, oscillating between ~98 % and as low as ~22 % without any changes in finger placement or ambient conditions.
Hardware & Firmware Details:
• AFE4490 breakout PCB (Protocentral) wired per reference schematic; 3.3 V supply, 4 MHz clock.
• nRF52840 DK running at 64 MHz; SPI configured Mode 0, 2 MHz clock.
• Ported TI example code to C—register settings for CONTROL0, LED currents, PGA gains, and LED timing are unchanged from TI’s demo.
• No external analog filtering beyond the PCB’s onboard components.
What We’ve Tried So Far:
- Adjusted LED drive currents (50 %, 75 %, 100 %)—no improvement in stability.
- Added software averaging over 4 —masks the spikes but doesn’t prevent them.
Questions & Requests:
- Are there recommended register settings (e.g., timing, settling delays, threshold registers) to improve measurement stability on the AFE4490?
- Could there be an unhandled timing constraint (e.g., LED phase timing vs. ADC_RDY) in the reference code when ported to C?
- Any tips on debug strategies (e.g., test patterns, register dumps, PPG waveform equivalence tests) to isolate whether this is a hardware, firmware, or signal-processing issue?
We appreciate any guidance or suggestions on tuning the AFE4490 for consistent PPG, heart-rate, and SpO₂ readings. Please let us know if further details (register dumps, scope captures, code snippets) would help.
Thank you,
Savith, Octane Circuits