Embedded/STM32

STM32 시리즈 ADC와 DAC 이론 학습 - Nucleo-G071RB

변화의 물결1 2025. 2. 27. 00:06

 

 

안녕하세요. 

 

Uart 실습을 끝냈고, 이번에는 ADC, DAC에 대해서 간단히 알아보겠습니다.

 


1. ADC와 DAC의 개요

 

 전자기기에서 신호를 다룰 때, 아날로그(Analog) 신호와 디지털(Digital) 신호 간의 변환이 필요합니다.

ADC(Analog to Digital Converter)와 DAC(Digital to Analog Converter)는 이러한 변환을 수행하는 핵심 장치입니다.

 

ADC 기호

 

 ADC: 아날로그 신호를 디지털 신호로 변환하는 장치 (마이크, 온도센서)

 DAC: 디지털 신호를 아날로그 신호로 변환하는 장치 (오디오 플레이어, 신호발생기)

 

 이러한 변환 기술은 오디오 처리, 센서 데이터 변환, 영상 신호 처리, 통신 시스템 등 다양한 응용 분야에서 필수적입니다.

 

 

 

2. ADC(Analog to Digital Converter)의 원리

 

 ADC는 연속적인 아날로그 신호를 이산적인 디지털 데이터로 변환합니다. 이를 위해 다음과 같은 과정이 필요합니다.

  

2.1 샘플링(Sampling)

 

 신호를 일정한 시간 간격으로 측정하여 이산적인 데이터 포인트를 생성하는 과정입니다.

 

 

 샘플링 주파수(Sampling Frequency)가 중요한 요소이며, 나이퀴스트 샘플링 이론(Nyquist Sampling Theorem)에 따라 원래 신호의 최대 주파수의 최소 2배 이상으로 샘플링해야 원본을 정확히 복원할 수 있습니다.

 

 

2.2 양자화(Quantization)

 

 샘플링된 아날로그 값을 일정한 레벨(Level)로 근사하는 과정입니다.

 

 해상도(Resolution)는 ADC의 해상도는 비트 수에 의해 결정되며, 이는 변환된 디지털 신호의 정밀도를 나타냅니다.

 예를 들어, 8비트 ADC는 256(2^8) 단계, 16비트 ADC는 65,536(2^16) 단계로 신호를 표현할 수 있습니다.

 비트(Bit) 수가 많을수록 정밀도가 증가하지만, 연산량과 저장 공간도 늘어납니다.

 

 

 

2.3 부호화(Encoding)

 

 양자화된 값을 이진수(Binary) 형태로 변환하는 과정입니다.

 

 

 

<대표적인 ADC 방식>

  플래시(Flash) ADC: 매우 빠르지만 많은 비교기가 필요하여 비용이 높음

 계단식(Successive Approximation Register, SAR) ADC: 속도와 정밀도의 균형이 좋음

 

 

3. DAC(Digital to Analog Converter)의 원리

 

 DAC는 디지털 데이터를 연속적인 아날로그 신호로 변환하는 장치입니다.

 ADC의 반대과정으로 생각하면 되며 추가로 필터링 기능이 있습니다.

 

3.1 디지털 값 변환

 

 입력된 이진수 데이터를 특정 아날로그 전압이나 전류로 변환합니다.

 변환의 정밀도는 사용되는 비트 수에 따라 결정됩니다.

 

3.2 필터링(Filter)

 

 디지털-아날로그 변환 과정에서 발생하는 계단식 출력(Stepwise Output) 신호를 부드럽게 만들기 위해 저역 통과 필터(Low-Pass Filter)를 사용합니다.

 

<대표적인 DAC 방식>

 저항 스트링(Resistor String) DAC: 간단하지만 높은 해상도 구현이 어려움

 R-2R 래더(R-2R Ladder) DAC: 널리 사용되며 정밀도와 비용의 균형이 좋음

 

 

4. ADC와 DAC의 응용 분야

  오디오 시스템: 마이크 입력(ADC), 스피커 출력(DAC)

 이미지 및 영상 처리: 카메라 센서(ADC), 디스플레이(DAC)

 통신 시스템: RF 신호 변환 및 복원

 센서 데이터 처리: 온도, 압력, 습도 센서 등 다양한 물리량을 디지털 신호로 변환

 

 

5. STM32G071 ADC와 DAC 특징과 블록도

 

1) STM32G071 ADC 특징

 

 - 해상도: ADC는 12비트 해상도를 제공하여 최대 4096(2¹²) 단계로 신호를 표현가능

 - 변환 속도: 샘플링 후 디지털 데이터로 변환하는 시간이 0.4 µs(마이크로초)

 - 외부 입력 채널 지원: 최대 16개의 센서나 입력 신호를 변환 가능

 - 하드웨어 오버샘플링 지원: 내부적으로 신호를 여러 번 샘플링하여 최대 16비트 해상도까지 증가 가능

 - 변환 범위 : 입력 가능한 아날로그 전압 범위는 0~3.6V

 

2) STM32G071 DAC 특징

 

 - 해상도 : 두 개의 독립적인 12bit DAC가 내장되어 있어 듀얼 아날로그 출력 가능

 - 저전력 샘플-앤드-홀드(Sample-and-Hold) 기능: 에너지를 절약하면서도 안정적인 신호 출력을 유지

 

3) ADC 블록도

 

 - VREF+ : 최대 양의 값으로 입력되는 아날로그 신호가 VREF+ 보다 높으면 무시됨

 - VDDA : 아날로그 블록 전원

 - ADC_IN : 16개 외부 아날로그 입력 채널

 - OVRIE, EOCIE, AWDID 등 ADC 관련 인터럽트 발생을 활성화하는 레지스터

 

 

 

4) DAC 블록도

 

 DAC에는 최대 두 개의 독립적인 출력 채널이 포함되어 있습니다.

 각 출력 채널은 칩 내 주변 장치(예: 비교기, 연산 증폭기, ADC 등)에 연결할 수 있습니다. (해당 기능이 지원되는 경우)

 

 DAC 출력은 버퍼를 사용할 수도 있고, 사용하지 않을 수도 있습니다. 또한 샘플-앤드-홀드(Sample and Hold) 블록과 관련 레지스터는 LSI(clock source: dac_hold_ck)를 사용하여 Stop 모드에서도 동작할 수 있습니다.

 

 

 

6. STM32G071RB 평가보드의 ADC 포트

 

 아두이노 보드와 호환되도록 해더핀 소켓이 있습니다.

 A0~A5를 이용해도 되고 PA0, PA1, PA4, PB1, PB11, PB12 핀에 연결해서 사용할 수 있으며, 다음 글에서 A0핀으로 실습해 보겠습니다.

 

 

 

 STM32 평가보드들은 테스트용으로 나오기 때문에 비슷한 형태를 가지고 있습니다.

 위의 내용으로 다른 STM32 평가보드도 간단하게 확인할 수 있습니다.

 

 

감사합니다.

 

 

<참고 자료>

1. 임베디드 컨트롤러 기초 7차시 - STEP 교육과정

2. 아날로그-디지털 변환회로

https://en.wikipedia.org/wiki/Analog-to-digital_converter

3. 디지털

https://namu.wiki/w/%EB%94%94%EC%A7%80%ED%84%B8

4. ADC(Analog-to-Digital Converter) 기초-1

https://m.blog.naver.com/rlaghlfh/221385737830

5. rm0444-stm32g0x1-Reference Manual

 

 

반응형