
STM32 원본을 다시 분류하기
먼저 PCB 검사 자료를 STM32 자료에서 제외했다. 새 원본의 사진 22장, 설정 슬라이드, 회로도, 코드와 CubeIDE 압축본을 하드웨어·설정·취득·필터·검출 순서로 다시 묶었다.
Engineering Study Track
NUCLEO-F411RE와 ECG·PPG 아날로그 회로를 연결한 실험 사진, CubeIDE 설정 자료, ADC·TIM1·UART 코드, CMSIS-DSP biquad와 peak·HRV 검출 흐름을 함께 정리한다.

새로 확인한 원본은 실험 사진 22장, STM 사용법 40장, 3쪽 KiCad 회로도, ADC·UART 메모, HRV 모듈, PPG 코드 2종, ECG C 코드 변형 12개와 CubeIDE 프로젝트 압축본이다. 같은 SHA-256의 중복 코드와 ST·Arm vendor 파일은 별도 결과처럼 세지 않았다. 사진과 코드로 확인되는 구성까지만 적고 측정 성능은 새로 만들지 않았다.
8 Topics

먼저 PCB 검사 자료를 STM32 자료에서 제외했다. 새 원본의 사진 22장, 설정 슬라이드, 회로도, 코드와 CubeIDE 압축본을 하드웨어·설정·취득·필터·검출 순서로 다시 묶었다.

강의 슬라이드의 project 생성 화면부터 Pinout & Configuration, Clock Configuration, ADC1·TIM1·USART2 설정을 순서대로 다시 봤다. CMSIS를 붙일 때는 include path와 source location, ARM_MATH_CM4, float printf 설정을 함께 확인했다.

KiCad MCU sheet에서 STM32F411RETx, 3.3 V rail, 8 MHz crystal, reset, SWD와 두 UART를 먼저 확인했다. ECG는 PA0, PPG는 PA1, APG는 PA4로 들어가고 USART2는 PA2·PA3에 연결된다.

sensor sheet에서는 INA128 ECG 입력단, OPA2333 기반 filter·buffer, SFH7070 PPG sensor와 Vcm 기준을 분리해 읽었다. MCU로 들어가기 전 analog gain과 bias 경로를 먼저 확인해야 ADC code의 의미를 해석할 수 있다.

ECG 코드 변형을 비교해 보니 핵심은 TIM1 update interrupt를 sample clock으로 쓰고 ADC1을 한 번 읽는 구조였다. 250 Hz 버전은 sample_index와 timestamp_us를 함께 보내며, 5-sample moving average 뒤에 filter를 적용한다.

ADC·UART 메모의 HAL_ADC_Start·PollForConversion·GetValue 순서를 기준으로 USART2 전송을 다시 정리했다. SerialChart 설정은 COM6, 115200 baud와 0~3.3 V·0~4096 field 범위를 사용한다.

ECG 250 Hz 코드는 40 Hz low-pass와 0.5 Hz high-pass 두 stage를 DF1 또는 DF2T cascade로 구현한다. PPG 코드에는 0.5 Hz high-pass와 8 Hz low-pass가 분리돼 있어 ECG coefficient를 그대로 재사용하지 않았다.

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