STM32 · Embedded · 08
PPG peak·HRV·BPM 검출 흐름
PPG 기본 코드는 100 Hz timer에서 1·2차 차분과 peak interval을 계산한다. 별도 HRV 모듈은 최근 peak 4개로 gap 3개를 만들고 평균에서 20% 이상 벗어난 gap을 제외한 뒤 BPM을 계산한다.

먼저 확인한 것
PPG 기본 코드는 100 Hz timer에서 1·2차 차분과 peak interval을 계산한다. 별도 HRV 모듈은 최근 peak 4개로 gap 3개를 만들고 평균에서 20% 이상 벗어난 gap을 제외한 뒤 BPM을 계산한다.
원본 구성
- 새 PPG 변형은 slope sign change와 refractory interval을 함께 사용해 중복 peak를 막는다.
- HRV 모듈은 gap 평균과 margin을 계산하고 유효하지 않으면 BPM을 0으로 돌린다.
- 저장된 출력 Cell이나 정량 정확도 기록은 없어 알고리즘 구조까지만 정리했다.
코드 흐름
GapAvr = (Gap1 + Gap2 + Gap3) / 3;
margin = GapAvr / 5;
if (all_gaps_within_margin) {
bpm = 60 * 1000 / GapAvr;
}
핵심 용어
- peak interval
- refractory period
- HRV
- BPM
다시 볼 때의 순서
- peak interval
- refractory period → HRV
- BPM
공식 문서
- STM32CubeF4 Getting Started (UM1730)
- STM32 DSP with CMSIS (AN4841)
- Arm CMSIS-DSP
- STM32CubeF4 repository
새로 확인한 원본은 실험 사진 22장, STM 사용법 40장, 3쪽 KiCad 회로도, ADC·UART 메모, HRV 모듈, PPG 코드 2종, ECG C 코드 변형 12개와 CubeIDE 프로젝트 압축본이다. 같은 SHA-256의 중복 코드와 ST·Arm vendor 파일은 별도 결과처럼 세지 않았다. 사진과 코드로 확인되는 구성까지만 적고 측정 성능은 새로 만들지 않았다.