Alalı uzun zaman olmuş fırsat bulamamıştım, denemeyi bitirdim, gayet güzel çalışıyor. nordic firmasının ürünü olan bu transceiverı denemek için iki ayrı proje iki adet STM32f4 discovery kit kullandım, her ikisini aynı anda DEBUG etme olanağımın olmadığını anlamış bulundum
böylelikle 2.4GHz üzerinden veri alışverişi yapabiliyor. Datasında 6 pipe ile iletişim kurabildiğinin den bahsetmiş, aynı anda 6 adet vericiden veri aktarabildiğini anlıyorum.
Önce TX i kitin donanımını ayarladım, bunun için SPI1 i kullandım. RX kitide aynı şekilde SPI1 i kullandım. 32Bytle lık bilgi gönderdim ve aldım. Veri gönderme ve alma durumunda Led1-2-3-4 ün blink yaptırarak gözlemledim.
Kullandığım kütüphanede systemtick i kullanmış, neden kullandığını anlayamadım, belli bir süre sonra gecikme rutininde program default_handler e düşüyor ve çalışmıyordu. systemtick in ayarlanan yeri iptal ederek bu hatadan kurtuldum.
nRF24L01+,SPI arayüzünü kullanarak iletişim sağlıyor.Sağdaki fotoda kullandığım modül görülmekte. Her zamanki gibi EBAY dan aldım.
Donanım ayarı için NRF24L01P.C dosyasının içerisindeki tanımlamalardan yaralanabilir donanımınızı buna göre ayarlayabilirsiniz.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
#define SPI SPI1 #define GPIO_CS_CE GPIOA #define GPIO_Pin_CE GPIO_Pin_3 #define GPIO_Pin_CS GPIO_Pin_4 #define RCC_AHB1Periph_GPIO_CS_CE RCC_AHB1Periph_GPIOA #define GPIO_SPI GPIOA #define GPIO_Pin_SPI_SCK GPIO_Pin_5 #define GPIO_Pin_SPI_MISO GPIO_Pin_6 #define GPIO_Pin_SPI_MOSI GPIO_Pin_7 #define RCC_APBPeriph_SPI RCC_APB2Periph_SPI1 #define GPIO_Pin_SPI_CS_SOURCE GPIO_PinSource4 #define GPIO_Pin_SPI_SCK_SOURCE GPIO_PinSource5 #define GPIO_Pin_SPI_MISO_SOURCE GPIO_PinSource6 #define GPIO_Pin_SPI_MOSI_SOURCE GPIO_PinSource7 #define RCC_AHB1Periph_GPIO_SPI RCC_AHB1Periph_GPIOA |
ayrıca yukarıdaki tanımlamalar aynı dosyanın nRF24L01_HW_Init fonksiyonunu etkilemekte, dolayısıyla tanımlamaların ne iş yaptığı hakkında bilgi vermektedir.
iki ayrı projeyi ayrı ayrı debug etme ve çalıştırmak zorunda kaldım. TX i çalıştırıp emin olduktan sonra RX i debug ettim. Onun çalışmasından da emin olduktan sonra TX i başka bir güç kaynağı ile besleyerek RX e gelen bilgilerin doğruluğu için CoIDE ile debug ettim. Şükür ki veriler düzgün geliyordu.
Programın çalışması ise 32lik bir dizi tanımlayarak ( unsigned char tx_buff[32]; )TX buffer a doldurdum ve bunları RX den aldım. Alıcı ve vericinin tüm kodları için tıklayınız
Esenlikler.