• Buradasın

    DMA ile UART Veri Alma ve İşleme Eğitimi

    youtube.com/watch?v=D5yJYRy-QAc

    Yapay zekadan makale özeti

    • Bu video, Onur Köse tarafından sunulan bir eğitim içeriğidir ve DMA (Direct Memory Access) yöntemi ile UART veri alma ve işleme konusunu ele almaktadır.
    • Video, DMA'nın ne olduğunu açıklayarak başlıyor ve ardından 407VGT6 denetleyicisi üzerinde UART RX veri alma işlemini adım adım gösteriyor. İlk bölümde normal modda, circular modda ve değişken boyutlu veri alma yöntemleri anlatılırken, ikinci bölümde gelen verilerin nasıl işleneceği, RX veri alanının bir dizi olarak kullanılması ve LED kontrolü için string parçalama işlemleri gösteriliyor.
    • Eğitim boyunca kod yazımı, debug modunda test edilmesi ve LED kontrolü ile veri alma işleminin nasıl gerçekleştirildiği detaylı olarak açıklanmaktadır. Video sonunda izleyicilere UART 2'yi DM olarak ayarlayarak LED kontrolü için bir ödev verilmektedir.
    00:08DMA (Direct Memory Access) Kavramı
    • DMA (Direct Memory Access), CPU'nun çevre birimlerinden aldığı veriyi CPU meşgul etmeden doğrudan hafızaya kopyaladığı bir birimdir.
    • DMA ile cihaz ilk olarak DMA isteği yapar, cihazın adresindeki veriyi kopyalar ve doğrudan hafızanın hedefteki adresine kopyalar.
    • DMA ile hafızada alınan veriyi bir cihaza da kopyalayabilir ve bu programlanarak ayarlanabilir.
    01:07Proje Oluşturma ve DMA Ayarları
    • Proje oluşturulurken 407 VGT6 denetleyici seçilir ve UART RX yemeği olarak ayarlanır.
    • Sistem core bölümünden seri açılır ve clock kaynağı 8 MHz olarak ayarlanır.
    • DMA penceresinde RX için DMA kurulur ve mod olarak circular mod seçilir, böylece her veri geldikçe veri kopyalanır.
    03:26Kod Yazımı ve Debug Modu
    • UART'ın kurulum komutu ve DMA ile veri kopyalama işlemi için kodlar yazılır.
    • Kesme oluştuğunda çalışacak fonksiyon (rx complete callback) kopyalanır ve veri geldiğinde LED'lerin toggle edilmesi sağlanır.
    • Debug modunda RX buffer izlenir ve veri gönderildiğinde kesme oluştuğu, verinin buffer'a kopyalandığı ve LED'lerin yanıp söndüğü gözlemlenir.
    08:02Değişken Boyutlu Veri Alma
    • Sabit boyutlu veri yerine değişken boyutlu veri almak için RX buffer'ın boyutu bir byte'a indirilir.
    • 100 karakterli bir dizi (arx data) oluşturulur ve her veri geldiğinde bu diziye teker teker dizilir.
    • Yeni satır karakteri (lf) gelene kadar veri alınır, yeni satır geldiğinde dizi sıfırlanır ve LED toggle edilir.
    12:47Veri Kopyalama ve Temizlik
    • Küçük veri gönderildiğinde, önceki verinin üzerine yazılması sorunu yaşanabilir.
    • Her kopyalama işleminden sonra arx data'nın içeriğinin temizlenmesi gerekir.
    • Mem set fonksiyonu kullanılarak arx data'nın içeriği mu karakteri ile doldurulur.
    14:08UART Veri İşleme Örneği
    • Program çalıştırıldığında, RX datanın içi sıfırlanıyor ve gelen veriler dizi içine alınıyor.
    • Str compre fonksiyonu kullanılarak RX datanın içeriği sorgulanıyor ve farklı uzunluklarda veriler kontrol ediliyor.
    • Eğer RX datanın içeriği sıfırsa LED bir yakılıyor, içeriği low ise LED söndürülüyor.
    16:23Debug Modu ile Test
    • Debug modunda breakpoint kullanılarak RX datanın içeriği kontrol ediliyor.
    • Farklı uzunluklarda veriler (hello, high, low) gönderildiğinde, program bu verileri sorgulayarak LED'leri kontrol ediyor.
    • Farklı uzunluklarda gelen verileri bir dizi içine alarak ve sorgulayarak, sensör veya başka bilgisayardan gelen verileri işleyebiliriz.
    18:45Veri Akışı Optimizasyonu
    • Farklı uzunluklarda verileri daha hızlı işlemek için maksimum 921.600'e kadar veri boyutu ayarlanabilir.
    • Denetleyicinin maksimum hızı (F400 cover'i 160 MHz'e kadar çıkabiliyor) kullanılarak daha hızlı veri akışı sağlanabilir.
    • Bu yöntem, verinin uzunluğu belirsiz olduğu projelerde çok kullanışlıdır.
    19:39Ödev Açıklaması
    • Ödevde UART 2'yi DM olarak ayarlamak ve D12 ve D13'teki LED'leri çıkış olarak ayarlamak isteniyor.
    • Gelen komutlarda sondaki karaktere bakarak LED'leri kontrol etmek gerekiyor.
    • "Led22x" komutunda "x" değeri kadar D13'ü toggle yapmak isteniyor, bu işlem string parçalama (substring) ile yapılabilir.

    Yanıtı değerlendir

  • Yazeka sinir ağı makaleleri veya videoları özetliyor