임베디드 기초 6편 - 클럭 트리와 RCC: 주파수는 어디서 오는가

들어가며 UART 보드레이트를 설정할 때 115200을 입력한다. SPI 속도를 설정할 때 분주비(prescaler)를 고른다. 이 숫자들의 근거가 뭘까. 전부 클럭(Clock) 에서 나온다. MCU 안의 모든 주변장치는 클럭 신호를 기반으로 동작하고, 그 클럭이 얼마인지에 따라 통신 속도가 결정된다. 클럭 소스 (Clock Source) MCU는 기준 클럭을 어딘가에서 공급받아야 한다. STM32F4의 주요 클럭 소스는 두 가지다. HSI (High Speed Internal) MCU 내부 RC 오실레이터 16 MHz 고정 외부 부품 불필요 정밀도 낮음 — 온도와 전압에 따라 ±1% 수준의 오차 리셋 직후 기본으로 사용되는 클럭 소스 오차가 있는데도 HSI를 쓰는 이유가 있다. ...

2026년 6월 3일 · 4 min · 서보민

SPI 파형이 왜곡됐던 이유 — Digital Isolator 주파수 제한

ASUS Tinker Board 2S에서 SPI 통신 파형이 왜곡되는 문제를 겪었다. 원인은 하드웨어가 아닌 Digital Isolator의 주파수 제한이었다.

2026년 5월 30일 · 2 min · 서보민

임베디드 기초 5편 - 인터럽트와 NVIC: CPU를 기다리게 하지 마라

들어가며 4편에서 벡터 테이블을 다뤘다. [0]은 MSP, [1]은 Reset_Handler 주소였고, 나머지 항목들(NMI_Handler, HardFault_Handler, TIM2_IRQHandler…)은 그냥 지나쳤다. 이것들이 전부 인터럽트 핸들러다. 임베디드 코드의 상당 부분이 이 핸들러들 안에서 돌아간다. 폴링 vs 인터럽트 외부 이벤트(버튼 입력, 센서 데이터 도착 등)를 처리하는 방법은 두 가지다. 폴링 (Polling) 1 2 3 4 5 6 while (1) { if (HAL_GPIO_ReadPin(GPIOC, GPIO_PIN_13) == GPIO_PIN_RESET) { // 버튼 눌림 처리 } do_something_else(); } CPU가 주기적으로 상태를 직접 확인한다. CPU가 루프를 돌며 GPIO를 계속 읽어야 하고, 짧은 펄스나 빠른 이벤트를 놓칠 수 있다. 확인할 이벤트가 늘어날수록 반응 속도도 느려진다. ...

2026년 5월 28일 · 4 min · 서보민

4개의 로드셀을 동시에 측정하기 - 소프트웨어

ADS1232 4채널을 왜 Hardware SPI 대신 GPIO 인터럽트로 읽었는가. IRAM_ATTR가 필요한 이유, 4채널 동시 비트 수집 구조, 24비트 2의 보수 부호 처리까지 정리했다.

2026년 5월 27일 · 6 min · 서보민

PSRAM 버퍼링과 센서 데이터 저장 구조

40 SPS로 4채널 센서 데이터를 최대 36분간 끊김 없이 기록하기 위해 PSRAM을 버퍼로 사용했다. 구조체 설계부터 포인터 기반 저장, 분할 전송, 실시간 표시 분리까지 정리했다.

2026년 5월 23일 · 7 min · 서보민

임베디드 기초 4편 - ARM Cortex-M 부팅 과정: 전원 인가에서 main()까지

들어가며 3편에서 .c 파일이 .elf를 거쳐 플래시에 올라가는 빌드 과정을 정리했다. 이제 반대 방향을 볼 차례다. 플래시에 올라간 펌웨어를 MCU가 어떻게 실행하는가. 전원이 켜지는 순간 CPU는 어디서부터 코드를 시작할까? 내가 작성한 main()이 첫 번째로 실행되는 것일까? 그렇지 않다. main() 이전에 이미 여러 단계가 실행된다. ARM Cortex-M 메모리 맵 Cortex-M은 모든 제조사가 공통으로 따르는 표준 메모리 맵을 갖는다. STM32든 nRF52든 RP2040이든 코어 수준에서는 동일한 주소 배치를 사용한다. ...

2026년 5월 21일 · 4 min · 서보민

4개의 로드셀을 동시에 측정하기 - 하드웨어

ESP32 내장 ADC 대신 ADS1232를 4개 사용해 로드셀 4채널을 동시에 측정한 이유, 그리고 크랭크 각도를 측정하는 AS5600까지. 하드웨어 설계 과정을 정리했다.

2026년 5월 20일 · 3 min · 서보민

Advances in Hyperbaric Oxygen Therapy: Medical Benefits and Technical Perspectives

한 줄 요약: HBOT 챔버 내 유체 거동을 수학적으로 모델링하고, 축소 실험 챔버 + MCU 기반 압력 제어 시스템으로 검증한 연구 논문 정보 항목 내용 제목 Advances in Hyperbaric Oxygen Therapy: Medical Benefits and Technical Perspectives 저자 Antoanela Naaji, Monica Ciobanu, Marius Popescu 저널 / 학회 Annals of Biomedical Engineering 연도 2026 DOI / 링크 https://doi.org/10.1007/s10439-026-04027-7 분야 biomedical 문제 정의 기존 HBOT 시스템은 대부분 empirical calibration에 의존하고 있으며, gas flow 및 pressure dynamics에 대한 predictive model이 부족하다. 또한 압력·산소 제어의 자동화 수준이 낮고, control loop의 feedback delay 문제가 있어 치료 재현성이 떨어진다. 이 논문은 이러한 한계를 수학적·실험적 framework으로 해결하고자 한다. ...

2026년 5월 16일 · 3 min · 서보민

임베디드 기초 3편 - 빌드 과정: 소스 코드가 플래시에 올라가기까지

들어가며 2편에서 .text/.data/.bss 섹션과 링커 스크립트를 다뤘다. .data > RAM AT > FLASH 구문이 LMA와 VMA를 분리한다는 것까지 정리했다. 그런데 이 링커 스크립트는 누가, 언제, 어떻게 처리하는 걸까. main.c 하나를 작성하고 빌드 버튼을 누르면 어떤 일이 일어나는지 정확히 알지 못한 채로 쓰고 있었다. ARM Cortex-M 툴체인 ARM Cortex-M을 타겟으로 빌드할 때 쓰는 컴파일러는 arm-none-eabi-gcc다. 이름을 뜯어보면: arm: 타겟 아키텍처 none: 운영체제 없음 (bare-metal) eabi: Embedded ABI — 함수 호출 규약, 데이터 정렬 방식 표준 gcc: GNU Compiler Collection STM32CubeIDE나 PlatformIO 같은 IDE를 쓰면 이 툴체인이 자동으로 설정된다. 직접 Makefile이나 CMake를 구성할 때는 직접 지정해야 한다. ...

2026년 5월 14일 · 3 min · 서보민

Risk Factors Associated with Middle Ear Barotrauma in Patients Undergoing Monoplace Hyperbaric Oxygen Therapy

한 줄 요약: 1인용 HBOT 환자에서 MEB 발생의 독립적 위험 인자는 altered mental status(OR 2.50)와 응급 치료군 분류(OR 6.75)였다. 논문 정보 항목 내용 제목 Risk Factors Associated with Middle Ear Barotrauma in Patients Undergoing Monoplace Hyperbaric Oxygen Therapy 저자 Yoon Sung Lee, Sang Won Ko, Hyoung Youn Lee, Kyung Hoon Sun, Tag Heo, Sung Min Lee 저널 / 학회 Yonsei Medical Journal 연도 2025 DOI / 링크 https://doi.org/10.3349/ymj.2024.0068 분야 biomedical clinical 문제 정의 MEB(Middle Ear Barotrauma)는 HBOT에서 가장 흔한 합병증 중 하나로 알려져 있다. 그러나 기존 연구 대부분은 multiplace chamber 환자를 대상으로 하고 있어, monoplace chamber에서의 MEB 위험 인자에 대한 데이터가 부족하다. ...

2026년 5월 13일 · 4 min · 서보민