STM32F7-Disco ile STemWin ve NRF Kullanımı

Merhaba Arkadaşlar, Bu yazımda sizlere STemWin ve NRF haberleşmesi hakkında basit bir uygulama yapacağım.

Bunun için STM32F7-Disco ve STM32F103 kitlerini kullandım. F7 yi master yapıp, F103 den sıcaklık değerleri gönderdim. Hem STemWin ile görsel ortamda data okuma hemde RF üzerinden data aktarım uygulamaları pekiştireceksiniz. Bunun için F7 master RF tarafından anlatıma başlıyorum.

İlk önce STM32F7-Disco ile nasıl STemWin kullanılır bunun için önceki paylaştığım yazıyı inceleyiniz.

STM32F7-Disco ile STemWin Kullanımı

Oluşturacağımız projeyi yukarıda projeden türeteceğimiz için önceki projeyi komple indirmeniz gerekiyor. CubeMX dosyasını açtığımızda zaten bütün ayarlar hazır olacak biz zadece NRF24L01 için SPI iletişimini ve bunu kesme ile okuyacağımız için kesme özelliğini açacağız. Burada dikkat edilen bir konu var genellikle NRF de data okuma yöntemi olarak sürekli SPI dan data gelmiş mi diye bakıyorlar, bu tavsiye edilen bir yöntem değildir. Firma bunun için rf çipine IRQ kesme pini eklemiş yani data geldiğinde kesme palsi üretiyor ve işlemci SPI üzerinden gelen datayı okuyor. Bende NRF için kesme pini kullandım.

SPI ayar:

Kesme ve diğer SPI pinleri:

Son halini komple indirdiğinizde NRF ve ana ekrana eklediğim değişiklikleri göreceksiniz. Ana ekran 2 text box, 1 tane multi textbox ve datayı göndermek için 1 buton ekledim. Tabi text i kendimiz eklemek için birde ekran klavyesi hazırladım. Detayları kodlarda görebilirsiniz.

Ana ekran görüntüleri:

F7 nin kodunu incelediğimizde 2 adet task göreceğiz

  • StartDefaultTask : STemwin için gerekli sistem akışı
  • StartNrffTask : NRF için data gelmesini bekleyen akış.

Burada hazırladığım gönderme rutini ile text box daki değeri istenilen ID numarasına gönderme işlemi yapar. Eğer gönderme başarılı ise kesme yi okuyarak ekrana SEND OK yazdırır. Normal bekleme modunda ise kendisine data geldi ise datayı ekrana yazdırır.

Buraya kadar F7 ile RF master ı hazırladık. Sonra ise uzaktan data okuyacağımız modülü hazırlayalım.

Bunun için STM32F103 ü kullandım (gerekli ayarlar dosyanın içerisinde), siz burada istediğiniz işlemciyi kullanabilirsiniz. Test etmek için F103 e DS18B20 sıcaklık sensörünü bağladım ve F7 ile NRF üzerinden bu sensörün değerini okuyacağız.

F103 ün kodlarını incelediğimizde yine F7 de yaptığım gibi kesme ile data yı okuyup ilgili komut karşılaştırması yaptıktan sonra sıcaklık değerini gönderiyorum. Siz burada istediğiniz sensörü okuyup gönderebilirsiniz.

While kısmına baktığımızda RXBuffer ı istemiş olduğum komutlarla karşılaştırıyorum. Hangisi gelmiş ise TXData nın içeriğini doldurup cevap veriyorum. Ben test için 2 komut kullandım,

  • tds
  • tcpu

DS ve CPU nun sıcaklıklarını okuyup gönderiyorum. Eğer bunların dışında bir komut gelirse hatalı komut mesajını gönderdim.

Projenin kodlarını ve CubeMX dosyalarını bu 2 proje dosyasında bulabilirsiniz.

Bir başka projede görüşmek üzere, kolay gelsin.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.