Merhaba, bu yazımda DAC (Digital to Analog Converter) (Dijital Analog Dönüştürücü) konusunu ele alacağım ve örnek kodları paylaşacağım.
Dijital Analog Çeviriciler (DAC), girişindeki sayısal değerlere karşılık analog sinyaller üretmektedir.

STM32F100RB mikrodenetleyicimizde 2 adet 12 Bitlik çözünürlüğe sahip DAC birimi bulunmaktadır.
Bu devremizde:
- PA4 pinine bağlı ledimizin parlaklığını DAC kullanarak artırıp azaltacağız.
Devre Şeması
Proje Kodu
|
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 47 48 49 50 51 52 53 54 55 56 57 58 59 |
#include "stm32f10x.h" // Device header #include "stm32f10x_rcc.h" // Keil::Device:StdPeriph Drivers:RCC #include "stm32f10x_gpio.h" // Keil::Device:StdPeriph Drivers:GPIO #include "stm32f10x_dac.h" // Keil::Device:StdPeriph Drivers:DAC void InitGPIOs(void); void InitDAC(void); void delay(uint32_t time); int main(){ InitGPIOs(); InitDAC(); while(1){ for(uint16_t i = 0; i<4095; i++){ DAC_SetChannel1Data(DAC_Align_12b_R, i); delay(5000); } for(uint16_t i = 4095; i>0; i--){ DAC_SetChannel1Data(DAC_Align_12b_R, i); delay(5000); } } } void delay(uint32_t time){ while(time--); } void InitGPIOs(void){ GPIO_InitTypeDef GPIO_InitStruct; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AIN; GPIO_InitStruct.GPIO_Pin = GPIO_Pin_4; GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStruct); } void InitDAC(void){ DAC_InitTypeDef DAC_InitStruct; RCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC, ENABLE); DAC_InitStruct.DAC_LFSRUnmask_TriangleAmplitude = DISABLE; DAC_InitStruct.DAC_OutputBuffer = DAC_OutputBuffer_Enable; DAC_InitStruct.DAC_Trigger = DAC_Trigger_None; DAC_InitStruct.DAC_WaveGeneration = DAC_WaveGeneration_None; DAC_Init(DAC_Channel_1, &DAC_InitStruct); DAC_Cmd(DAC_Channel_1, ENABLE); } |
