그라운드 임베디드 유튜브 구독

노트 / MCU 펌웨어

ADC: 단일, 연속, 타이머 동기 샘플링

STM32 ADC의 변환 모드, 샘플링 시간, 여러 채널 스캔, 타이머 트리거로 정확한 주기 샘플링을 하는 방법.

GROUND EMBEDDED · 정리 노트펌웨어 08ADC 1TIM1 PWM 중앙 → TRGO → ADC 인젝티드 변환 → 완료 인…

변환 모드

모드 동작 용도
단일 변환 명령할 때 한 번 가끔 읽는 배터리 전압
연속 변환 끝나면 바로 다시 빠르게 계속 감시
스캔 여러 채널을 차례로 센서 여러 개
외부 트리거 타이머 이벤트마다 제어용 정주기 샘플링
인젝티드 채널 정규 변환 중에 끼어들어 우선 변환 모터 상전류

샘플링 시간

채널마다 샘플링 사이클 수(3, 15, 28, 56 … 480)를 정합니다. 소스 임피던스가 크면 길게 잡습니다. 변환 시간 = 샘플링 사이클 + 12사이클(12비트).

타이머 트리거

TIM1 PWM 중앙 → TRGO → ADC 인젝티드 변환 → 완료 인터럽트에서 FOC 계산

모터 제어에서는 스위칭 노이즈를 피해 PWM 주기의 정해진 순간(로우사이드가 켜져 있는 중앙)에 상전류를 샘플링해야 합니다. 이 동기화를 하드웨어로 하는 것이 핵심입니다.

정확도 높이기

  • 내부 기준 전압 채널(VREFINT)을 읽어 실제 VDDA를 계산하고 보정
  • 칩별 보정값(캘리브레이션)을 시작 시 실행
  • 여러 번 읽어 평균, 또는 하드웨어 오버샘플링