[STM32] 2024-01-09-STM32 5일 ADC_DAC
개념정리
ADC
아날로그 to 디지털 컨버터
ADC에서 몇볼트의 전압을 몇단개로 조개는지가 중요하다
이떄 전압을 레퍼런스 전압이라고 한다
몇 단계를 ADC Resolution이라고한다 -> ADC 성능을 좌우한다
레퍼런스 전압은 외부에서 넣어 줄 수 있는데 칩의 동작 전압을 레퍼런스 전압으로 같이 사용한다
VREF = 레퍼런스 전압 = 3.3V
ADC 1당 전압 = VREF / bit_Resolution = 3.3V / 4096 = 0.806mV
ADC에서 측정한 전압 = ADC 1당 전압[V] * ADC 결과 = 0.806 * 1500 = 1.209 V
요새는 대부분의 센서들이 디지털 출력을 지원해서 잘 사용하지 않는다
DMA
Direct Memory ACCESS
기존방식 = AD변환이 완료되면 ADC 결과를 하나씩 저장하는 코드를 작성
DMA 방식 = AD 변환이 완료되면 ADC 결과를 DMA 컨트롤러가 자동으로 원하는 변수에 저장
장점으로 CPU의 일을 줄일수가 있다 CPU 클럭 소모 없이 데이터를 복사할 수 있다.
UART
개발 환경 세팅
세부설정
- Clock Prescaler = ADC 변환을 할때 CPU 클럭이 필요한 정도이다 AHB APB 성능의 따라 달라진다
- Resolution = ADC Clock cycle 필요한 ADC 성능정도와 단계를 보여준다
- DATA Alignment = 데이터가 저장되는 저장되는 데이터를 정렬 방식을 설정한다
- SCAN Conversion Mode= ADC 채널이 여러개가 있는데 하나씩 하나씩 순차적으로 할지 선택한다
- CONTINOUS CONVERSION MODE =adc 끝나면 반복할지 선택
-
DMA Conversion mode = DMA 사용할지 선택 -> 현재 비활성화 확인 필요
- Number of Converion = 몇개 의 ADC 사용할지
7-1 랭크가 생성되는데 랭크의 사용할 순서를 결정해줘야한다 7-2. Sampling Time = 데이터 구하는데 걸리는 Cycle Clock Prescaler 에서 요구하는 숫자보다 크게 해줘야한다
DMA 설정
Mode Circular 모드 해줘해야 반복하여 데이터의 저장한다
소스코드
volatile int16_t adcval[4];
HAL_ADC_Start_DMA(&hadc1, &adcval[0],4);//첫번쨰 인자 ADC 채널, 두번쨰 인자 변수 시작위치 , 3번째 인자 저장 변수 갯수
전체 소스코드
출처
- 참고 영상강의 자료 https://www.youtube.com/watch?v=_7Ll95FITn4&list=PLUaCOzp6U-RqMo-QEJQOkVOl1Us8BNgXk&index=4&ab_channel=ChrisWonyeobPark
댓글남기기