Skip to content

PPG Basic

The PPG Basic Firmware is a lightweight reference implementation for validating the connection and communication between the DA14531 Pro Development Kit and the MAX86141 photoplethysmography (PPG) sensor.

This firmware is part of the KuoQuo Pivot Smart Ring PoC, designed for early-stage hardware bring-up and optical sensor validation before BLE streaming and biometric feature extraction.

Project Location

This project is located in the KuoQuo Pivot GitHub repository:
- URL: KuoQuo-Pivot/PoC/Firmware/PPGBasic

How to Add This Project to the Renesas SDK

Follow these steps to integrate, compile, and run the project within your local development environment.

Step 1 — Place the Project

Clone or copy the repository into your Renesas SDK directory under the projects folder at the following path:

.../DA145xx_SDK/6.0.24.1464/projects/KuoQuo-Pivot/PoC/Firmware/PPGBasic/**

Step 2 — Open in Keil uVision

  1. Launch Keil uVision (v5 or newer).
  2. Navigate to the project's IDE workspace directory: PPGBasic\Keil_5\
  3. Open the Keil project file: poc_ppg_basic.uvprojx

Step 3 — Build & Flash

  1. Compile and build the target exactly like any standard example project from the Renesas SDK
    Example build log:
Rebuild started: Project: poc_ppg_basic
*** Using Compiler 'V6.24', folder: 'A:\Keil\Keil_v5\ARM\ARMCLANG\Bin'
Rebuild target 'DA14531'
compiling exceptions.c...
compiling system_DA14531.c...
compiling uart_utils.c...
compiling startup_DA14531.c...
compiling spi_flash.c...
compiling fpga.c...
compiling syscntl.c...
compiling otp_cs.c...
compiling uart.c...
compiling systick.c...
compiling dma.c...
compiling gpio.c...
compiling user_periph_setup.c...
compiling hw_otpc_531.c...
compiling main.c...
compiling max86141.c...
compiling arch_system.c...
compiling spi_531.c...
linking...
Program Size: Code=6296 RO-data=1764 RW-data=8 ZI-data=2132  
FromELF: creating hex file...
After Build - User command #1: fromelf --bincombined --output=".\out_DA14531\Objects\poc_ppg_basic.bin"  ".\out_DA14531\Objects\poc_ppg_basic.axf"
".\out_DA14531\Objects\poc_ppg_basic.axf" - 0 Error(s), 0 Warning(s).
Build Time Elapsed:  00:00:01
  1. Connect the DA14531 Pro Development Kit to your computer.
  2. Download/Flash the compiled binary to the development board.

Step 4 — Debug & Run

  1. Start the Keil debugger by clicking the Start/Stop Debug Session button (or press Ctrl + F5).
  2. Set break points in the main.c peripheral initialization routines if you want to verify SPI handshakes step-by-step.
  3. Click the Run button (or press F5) to execute the code. The system will now read live telemetry from the LSM6DSOX sensor.

Example Output

Terminal Configuration: Connect to the development kit's virtual COM port using a serial terminal client (e.g., Tera Term, PuTTY, or Serial Studio) configured to 115200 baud, 8N1.

***********************************

* KuoQuo Pivot PoC PPG Basic DEMO *

***********************************

[MAX86141 Init] Starting hardware initialization...
[MAX86141 Init] Performing early communication check...
[MAX86141 Init] Early Check -> Part ID Read: 0x25 (SPI Status: 0)
[MAX86141 Init] Hardware detected successfully. Proceeding with configuration...
[MAX86141 Init] Soft Reset command sent successfully. Waiting 1 second...
[MAX86141 Init] Clearing power-on interrupt flags...
[MAX86141 Init] Bulk writing register configurations...
[MAX86141 Init] Verification -> Reading back register states...
[MAX86141 Init] Configuration integrity verified successfully.
[MAX86141 Init] Waking up AFE core and enabling master clock...
[MAX86141 Init] Operational State -> SYS_CTRL: 0x00
***** [SUCCESS] MAX86141 online, validated, and sampling actively *****
[App Status] Starting continuous sensor read loop...
Tag: 0x01 | ADC: 0
Tag: 0x07 | ADC: 0
Tag: 0x02 | ADC: 0
Tag: 0x08 | ADC: 0
Tag: 0x01 | ADC: 6045
Tag: 0x07 | ADC: 5273
Tag: 0x02 | ADC: 0
Tag: 0x08 | ADC: 0
Tag: 0x01 | ADC: 5146
Tag: 0x07 | ADC: 4469
Tag: 0x02 | ADC: 0
Tag: 0x08 | ADC: 0
Tag: 0x01 | ADC: 3382
Tag: 0x07 | ADC: 2564
Tag: 0x02 | ADC: 1290
Tag: 0x08 | ADC: 1399
Tag: 0x01 | ADC: 5537
Tag: 0x07 | ADC: 4990
Tag: 0x02 | ADC: 0
Tag: 0x08 | ADC: 0
Tag: 0x01 | ADC: 5660
Tag: 0x07 | ADC: 5116
Tag: 0x02 | ADC: 0
Tag: 0x08 | ADC: 0
Tag: 0x01 | ADC: 3128
Tag: 0x07 | ADC: 2633
Tag: 0x02 | ADC: 0
Tag: 0x08 | ADC: 0
Tag: 0x01 | ADC: 5388
Tag: 0x07 | ADC: 4713
...
(continuous logging)