
- ADC 사용 : 아날로그 전압을 읽어 처리하는 경우
ex) 배터리 전압 체크 및 출력 차단
ADC 블록 다이어그램
- Analog to digital Convert 블록으로 ADC 입력신호와 VREF 신호를 입력으로 받음
- 최대 4개까지 Injected 채널로 구성
- 최대 16개까지 정규 채널로 구성
: 정규채널은 16비트로 레지스터에 저장되어 데이터 버스에 연결
- NVIC 인터럽트에 연결된 신호들
: DMA 오버런, End of conversion, ENd of injected conversion, Analog watch dog event
STM32 ADC 기능
- 채널 16개
- 12비트, 10비트, 8비트 또는 6비트 resolution(분해능)으로 구성 가능
- 디지털 값으로 변환 후 인터럽트 발생, 변환 종료 이벤트, 아날로그 Watchdog(감시) 오버런 이벤트 등 지원
- 단일 혹은 연속 변환모드 지원
- 채널 0에서 n까지 자동으로 변환하는 스캔모드
- 채널별 프로그램 가능한 샘플링 시간
- 불연속 모드
- ADC 전원은 2.4 ~ 3.6V
- ADC 이력범위는 VREF- ≤ VIN ≤ VREF+
ADC 클럭
1) 아날로그 회로용 클럭 : ADCCLK, 모든 ADC에 공통
- 프로그래밍 가능한 프리스케일러로 나눈 APB2 클럭에서 생성
- ADC가 fPCLK2 /2, /4, /6 또는 /8에서 작동하도록 함
2) 디지털 인터페이스용 클럭 : 레지스터 읽기/쓰기 액세스에 사용됨
- APB2 클럭과 동일
- 디지털 인터페이스 클럭은 RCC APB2 주변 클럭을 통해 각 ADC에 대해 개별적으로 활성화/비활성화됨
- STM32F429 MCU의 APB2 클럭은 84MHz

단일변환모드
- 하나의 ADC 변환을 수행하는 모드로 CONT 비트를 0으로 하면 시작됨
- 일반 채널이 변환된 경우
: 변환된 데이터는 16비트 ADC_DR 레지스터에 저장됨
: EOC(변환 종료) 플래그 설정
: EOCIE 비트가 설정되면 인터럽트 생성
- injected(주입) 채널이 변환된 경우
: 변환된 데이터는 16비트 ADC_JDR1 레지스터에 저장
: JEOC(변환 종료) 플래그 설정
: JEOCIE 비트가 se면 인터럽트 생성
연속변환모드
- ADC 변환 완료 후 즉시 새 변환 시작
- 외부 트리거 하거나 CONT 비트를 1로 하면 시작
- 일반 채널 그룹이 변환된 경우
: 마지막으로 변환된 데이터는 16비트 ADC_DR 레지스터에 저장
: EOC(변환 종료) 플래그 설정
: EOCIE 비트 설정시 인터럽트 생성
STM32CubeMX에서의 ADC 설정
- Configuration에서 3개의 ADC 그룹 중 1개 선택
- 15개의 채널 중 1개 선택

