STM32VLDISCOVERY ile DAC

Hafta sonunda STM firmasının üretimi olan STM32VLDISCOVERY kartı ile çalışmak ve bazı uygulamaları geliştirmek istedim. Bu çalışmada http://www.picproje.com da üye olan, işinin erbabı hocalara teşekkürü bir borç bilirim.

Çalışmamın amacı saat frekansının ayarını öğrenmek ve DAC ile çalışma yapmaktı. Epey bir datasheet ve örnek çalışmaları inceledikten sonra olayı kavramaya başladım. A5 ve A4 pinleri analog çıkış olarak kullanılacak, kodlar içerisindeki Analog IN kafanızı karıştırmasın. DAC ın çalışması için bu pinlerin analog olarak giriş tanımlanması gerekiyor.

Aşağıda STM32VLDISCOVERY kartı görülmektedir. Bu kartın üzerinde stm32F100RB işlemcisi ve STlink bulunmaktadır. 

#include "stm32f10x.c"
void SystemInit(void)
{
RCC->CR |= 0x00010000;          //HSEON=1High Speed External Osc ON
while(!(RCC->CR & 0x00020000)); //Harici osilatörün stabil olması için bekleniliyor(6 komut çevrimi)
RCC->CIR |= 0x00080000;         //HSERDYC: HSE ready interrupt cleared
RCC->CR |= 0x00080000;          //Clock security system Enabled.
RCC->CIR |= 0x00800000;         //CSSC: Clock security system interrupt cleared.
RCC->CR |= 0x00040000;          //HSE bypassed.
RCC->CFGR |= 0x00000080;       //AHB configuration -> 1000: SYSCLK divided by 2
RCC->CFGR |= 0x00002000;       //APB2 configuration -> 100: HCLK divided by 2
RCC->APB2ENR |= 0x0000001C;    //PORT C,A,B Clock Enabled.
//-------------------------------------------------------------------------------------------------
RCC->APB1ENR |=0x20000000;//DAC Enable
GPIOA->CRL &= 0x00000000;   //Aportu analog giriş
GPIOA->CRL |= 0x00000000;
GPIOA->CRH &= 0x00000000;
GPIOA->CRH |= 0x00000000;
DAC->CR |=0x00000003; //DAC Channel1 Enable, Buffer Disable
//-------------------------------------------------------------------------------------------------
GPIOC->CRL &= 0x00000000;
GPIOC->CRL |= 0x33333333;     //PC0-7 Çıkış olarak ayarlandı (Max 50MHz)
GPIOC->CRH &= 0x00000000;
GPIOC->CRH |= 0x33333333;    //PC8-15 Çıkış olarak ayarlandı (Max 50MHz)
}
void delay(int Z)
{
while(--Z);
}
main ()
{
int Deger;
while (1)  // sonsuz döngü
{
Deger++;
GPIOC->ODR=0xFFFFFFFF;
delay(0x00000FFF);
GPIOC->ODR=0x00000000;
delay(0x00000FFF);
DAC->DHR12R1=Deger;
/*
DACoutput=VREF * (dor/4095)
*/
}
}
 

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Google fotoğrafı

Google hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d blogcu bunu beğendi: