Embeded/ARM Cortex-M4

DAC(Digital-Analog Converter)

gharlic 2015. 7. 10. 19:59

DAC

ADC완 반대로 디지털신호를 아날로그신호로 변환시키는 것으로

마이크로프로세서 내부에서 처리된 값으로 엑츄에이터(Actuator)를 동작시킬 때 사용될 수 있다.

예를 들어 LED의 밝기를 조절하고 하고자 할 때 LED로 들어가는 전압의 세기를 변화시켜야 할 것이다.

이 때 DAC가 사용될 수 있다.

 

DAC 초기화 소스

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
void Init_DAC(){
 
        GPIO_InitTypeDef GPIO_InitStructure;
 
        DAC_InitTypeDef DAC_InitStructure;
 
 
 
        RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);
 
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC, ENABLE);
 
 
 
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5;
 
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN;
 
        GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
 
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
 
 
 
        GPIO_Init(GPIOA, &GPIO_InitStructure);
 
 
 
        DAC_InitStructure.DAC_Trigger = DAC_Trigger_None;
 
        DAC_InitStructure.DAC_WaveGeneration = DAC_WaveGeneration_None;
 
        DAC_InitStructure.DAC_OutputBuffer = DAC_OutputBuffer_Enable;
 
        DAC_InitStructure.DAC_LFSRUnmask_TriangleAmplitude = DAC_TriangleAmplitude_4095;
 
        DAC_Init(DAC_Channel_1, &DAC_InitStructure);
 
 
 
        DAC_SetChannel1Data(DAC_Align_12b_R, 0);
 
        DAC_Cmd(DAC_Channel_1, ENABLE);
 
}
 
cs

 DAC는 PA4,5로 사용이 가능하다.

 

어떻게 쓰는가?

1
DAC_SetChannel1Data(DAC_Align_12b_R, 변수);
cs

위와 같은 코드를 사용하면 A포트를 통해서 '변수'의 값이 전압의 형태로 출력된다.

 

반응형