5 Kasım 2015 Perşembe

STMF4 Dijital Analog Çeviriciler


STM32F4 Dijital Analog Çeviriciler

2(iki) adet 12-bit Dijital Analog çevirici (DAC) mevcuttur. Prensip blok diyagram Figür 1’de gösterilmiştir.(Kaynak Fig.48, RM0090, sayfa 251).

Figür 1. Tek bir DAC için blok diyagram

        Aktif DAC aşağıdaki kısımda gösterilmiştir. Mikrodenetleyicinin sol tarafına gelen tüm pinler referans sinyali ve güç kaynağı hatları ile bu çalışma desteklenir. DAC’ın çıkışı sağ taraftaki pindir. Kullanıcı programda analog sinyale çevrilecek olan veriyi DAC içinde bulunan DHR register’a yazar. Buradan veri DOR isimli register içerisine gönderilir ve aynı anda DAC ile analog sinyale çevrilir.

DAC_DHR12R1 DAC kanal 1 için sağ tarafta hizalandırılmış 12-bit register
DAC_DHR12L1 DAC kanal 1 için sol tarafa hizalandırılmış 12-bit register
DAC_DHR8R1 DAC kanal 1 sağ hizalandırılmış 8-bit register
DAC_DHR12R2 DAC kanal 2 sağ hizalandırılmış 12-bit register’dır. Bu register yapları DHR register’da yer alırlar.

        DHR register içerisine gönderilen veri otomatik olarak DOR register içerisine taşınır. Fakat bu yazılım aracılığıyla (SWTRIGx), donanım aracılığı ile (TIMx_TRGO) veya harici sinyaller ile (EXTI_9) Figür 1’de DHR register’ın üst tarafında yer alan Multiplexer’ın kontrol register’ı olan TSELx[2:0] ile tanımlanmaktadır. DHR register’ın her yarımı bir DAC için kullanılır. Böyle bir organizasyon seçilen iki DAC üzerinden sinyalleri eş zamanlı bir şekilde dışarı verir. Direkt hafıza erişimi (DMA Direct Memory Access) kullanılarak veri DAC’a gönderilebilir.

        Ek olarak donanımda “Control logicx box” adı verilen gürültü üretebilen veya üçgen dalga sinyali üretebilen bir yapı vardır.

        İki DAC içinde DAC-CR(DAC kontrol register), DAC_SWTRIGR (DAC software Trigger register) ve DAC_SR(DAC durum register’ı) bit’ler tanımlanmıştır. Detaylı bilgi için RM0090 dokümanının bölüm 12’sine bakabilirsiniz.

        Örnek programımızda 2(iki) DAC kullanılarak farklı testere dişi (saw-tooth) sinyaller oluşturulmuştur. Başlangıçta her iki DAC’ın kurulumu yapılır ve sonsuz döngüye girilir. Döngü içerisinde testere-dişi sinyali için veriler hesaplanır ve DAC_DHR12R1 ve DAC_DHR12R2 register’larına yazılır.

#include "stm32f4xx.h"
/*
PA4 & PA5 çıkışları -> bu pinler analog olmak zorundadır!
GPIOA->MODER |= 0x00000f00;
*/
int main () {
     unsigned int j;
     RCC->APB1ENR |= 0x20000000;                // DAC clock aktif edilir.
     DAC->CR |= 0x00010001;                            // DAC kontrol register her iki kanal da açık
     GPIOA->MODER |= 0x00000f00;                // MODE PortA, PA4 & PA5 analog çıkış yapılır
     while (1) {                                                      // sonsuz döngü
     DAC->DHR12R1 = j & 0xfff;                       // yükselen rampa
     DAC->DHR12R2 = 0xfff - (j & 0xfff);         // düşen rampa
     j = (j + 1) & 0x0fff;                                        // yeni değer hesapla
     };

};

Şimdilik bu kadar arkadaşlar Gülen
Sorularınız ve önerileriniz için m.hakki.kaplan@gmail.com adresinden her zaman bana ulaşabilirsiniz.
Hakkı KAPLAN

Hiç yorum yok:

Yorum Gönder