STM32 ADC (작성 중)

DongHee Lim·2022년 6월 2일
0
post-thumbnail

서론


STM32 를 하다보니 정말 끔찍한 생각이 들었다.
아두이노에서는 그렇게 많이 사용한 ADC를
STM32 에서는 제대로 사용해본적이 없다니 말이다.

STM32 에서 ADC 는 기능이 다양하여 공부해야할 것이 많았다.

다른 사람들이 학습한 것을 기반으로
STM32F4 Datasheet 와 비교하여 정리할 예정이다.

  1. ADC polling

  2. ADC Interrupt

  3. ADC DMA

  4. ADC multi channel

  5. ADC TRGO with Timer

학습 계획은 대략 이정도이다.


ADC


ADC
Analog to Digital Converter
아날로그 데이터를 디지털 데이터로 변경해주는 장치이다.

세상의 모든 것은 아날로그로 되어있다.
우리가 사용하는 컴퓨터는 디지털로 되어있어서
아날로그 데이터를 정확히 판단하는 것은 힘들고
어림잡아 연속적인 데이터로 출력은 가능하다.

요약하자면,
우리가 입력받는
아날로그 파형, 센서 등의
아날로그 값도 사실 디지털이라는 것이다.

하지만,
우리는 외부의 원인에 따라 연속적으로 변하는 물리량을 아날로그라고 하고
0 과 1을 디지털로 표현한다.

ADC 는 입력받은 전압이라는 아날로그 데이터(실수)를
STM32F4의 경우 12bits 디지털 데이터(정수)로 변경해준다.
ADC의 작업이 없으면 MCU는 값을 인지하지 못한다.

12bits = 2^12 = 4096
즉, 0~4095 의 값을 표현 가능하다.

[STM32F4 Datasheet PDF 링크]

STM32F4 데이터 시트에 따르면
데이터의 개수는 Sampling, 전압 값의 해상도는 Quantization 라고 표현하는데
Quantization 이 12-bit 로 표현되는 것이다.

전압은 0 ~ 3.3 V 를 나타내고 3.6 V까지 가능하다.

참고

FETBJT
VDDVCC
VSSVEE
+ 입력전압- 입력전압

BJT 집적회로    -> 트랜지스터 (Collector, Emitter)
CMOS 집적회로 -> MOSFET (Drain, Source)
전원을 의미
V_DDA 의 A는 아날로그를 의미


CubeIDE 설정


1. Clock 설정

ADC 설정할 때 PCLK2 / 2,4,6,8 로 하기 때문에 알아둬야한다.


2. ADC 설정

CHANNEL

IN3 : Channel 3

나의 경우 ADC1_IN3 은 PA3 핀이다.


Clock Prescaler

Clock Prescaler 는 Analog 값을 얼마나 자주 측정하는지에 대한 것이다.
단위는 보통 Msps (MS/s), Ksps
Mega samples per seconds 를 의미하는 Sampling Rate 이다. (Hz로 표현해도됨)

PCLK2 는 아까 위에서 90MHz 로 설정하였다.
PCLK2 / 4 = 22.5 MHz = 22.5 MS/s 로 값을 입력받을 수 있다.

이 값이 어떤 것을 의미하는지는 시간으로 주기로 표현해보면 알 수 있다.
1/22.5 M = 44ns

한 번 측정하는데 걸리는 시간이 44ns 라는 것이다.


Resolution

해상도는 12 bits 이고
옆에 15 ADC Clock cycles 이라고 써있다.

1 bit 당 1 cycle 의 시간이고 ( <- 위에서 구한 44ns)
default Sampling Time => 3 Cycles
12 + 3 = 15 cycles 라고 표현한 것이다.


profile
하고 싶은 것, 소유하고 싶은 것, 좋아하는 것

0개의 댓글