ADC (Analog-to-Digital Converter) Driver — MCAL I/O Drivers 중 하나. μC 내부 ADC 하드웨어 유닛을 제어해 아날로그 입력을 디지털 값으로 변환한다. 변환 트리거·변환 모드·결과 버퍼 관리 방식의 조합이 다양하다는 점이 PORT/DIO와 구별되는 복잡성.
핵심 단위
- ADC hardware unit — μC 내부의 ADC 수행에 필요한 모든 부품을 포함한 블록
- ADC channel — 하나의 아날로그 입력 핀
- ADC channel group — 같은 ADC HW unit에 연결되고 같은 trigger source로 트리거되는 channel 묶음
Acquisition Time
- Sampling time — 아날로그 값이 S&H 회로에 샘플링되는 시간
- Conversion time — 샘플된 값이 디지털로 변환되는 시간
트리거 — SW vs HW
| 트리거 종류 | 시작 방법 |
|---|---|
| Software trigger | API 호출 (Adc_StartGroupConversion 등)로 변환 개시 |
| Hardware trigger | ADC 내부 타이머 또는 trigger edge 신호로 자동 개시 |
HW trigger를 지원하지 않는 ADC는 GPT/ICU notification + SW trigger 조합으로 유사 동작을 구현 — 타이머 만료 시점마다 notification에서 SW trigger를 호출.
Conversion Mode
- One shot — 트리거(SW/HW) 1회당 변환 1회, 결과를 buffer에 기록
- Continuous — 한 번 start한 뒤 자동(HW 또는 interrupt 제어)으로 연속 변환,
stopAPI로만 중단
Buffer 모델 — 2축
Access Mode
ADC_ACCESS_MODE_SINGLE— 각 group channel당 1 sample만 유지ADC_ACCESS_MODE_STREAMING— group channel의 여러 sample을 축적
Stream Buffer Mode (STREAMING일 때 한정)
ADC_STREAM_BUFFER_LINEAR— 버퍼가 다 차면 변환 중단ADC_STREAM_BUFFER_CIRCULAR— 버퍼가 다 차면 처음으로 wrap around 하며 계속 변환
조합 예: Streaming + Circular → 일정 길이의 sliding window가 유지되어 real-time 분석에 유용.
Functions
- 초기화 / 제어 (
Adc_Init,Adc_StartGroupConversion,Adc_StopGroupConversion) - Trigger source 활성/비활성
- Notification 활성/비활성
- 변환 상태·결과 조회
의존성
- MCU Driver — trigger 주파수, conversion time, sampling time 관련 클록 설정
- PORT Driver — ADC 입력 핀·트리거 핀의 기능 설정