Birden Fazla SPI Cihaz

Merhaba, NRF24L01+ ve RC522 RFID okuyucu modüllerini birlikte kullanmak istiyorum. MISO, MOSI ve SCK pinlerini 11,12,13 olarak ortak bağladım. NRFF24L01+ için CE: 7 CSN: 8 seçtim. RC522 için ise RST: 9 SDA: 10 olarak seçtim. Bu pinlere HIGH LOW değerleri yazarak modül seçip çeşitli denemeler yaptım. Ancak verici Arduino’da RFID ile NRF24L01+'ı birlikte çalıştıramadım bir türlü. 2 modül ayrı ayrı çalışıyor. Aşağıdaki kodlarda RFID çalışmıyor. Bunu başarabilirsem bir sonraki aşamada da alıcı tarafında W5100 Ethernet Shield ile NRF24L01+'ı birlikte çalıştırmayı deneyeceğm.. Bağlantı şeması aşağıdaki gibi. https://hizliresim.com/X0QAd6 ------------------ Alıcı arduino kodu ------------------ include SPI.h include nRF24L01.h include RF24.h RF24 radio(7, 8); // CNS, CE const byte address[6] = “00001”; void setup() { Serial.begin(9600); radio.begin(); radio.openReadingPipe(0, address); radio.setPALevel(RF24_PA_LOW); radio.startListening(); } void loop() { if (radio.available()) { char text[32] = “”; short say = 0; radio.read(&text, sizeof(text)); radio.read(&say, sizeof(say)); Serial.println(text); Serial.println(say); Serial.println(millis()); } } ------------------ Verici arduino kodu ------------------ include SPI.h include nRF24L01.h include RF24.h include RFID.h define NRF_CE_PIN 7 define NRF_CSN_PIN 8 RF24 radio(7, 8); short say = 1; const byte address[6] = “00001”; define RFID_RST_PIN 9 define RFID_SS_PIN 10 RFID rfid(RFID_SS_PIN, RFID_RST_PIN); int serNum0; int serNum1; int serNum2; int serNum3; int serNum4; void setup() { Serial.begin(9600); pinMode(RFID_RST_PIN, OUTPUT); pinMode(RFID_SS_PIN, OUTPUT); pinMode(NRF_CE_PIN, OUTPUT); pinMode(NRF_CSN_PIN, OUTPUT); digitalWrite(RFID_SS_PIN, HIGH); //close RFID SPI.begin(); radio.begin(); radio.openWritingPipe(address); radio.setPALevel(RF24_PA_LOW); radio.stopListening(); } void loop() { Serial.println(millis()); //rfid digitalWrite(NRF_CSN_PIN, HIGH); digitalWrite(RFID_SS_PIN, LOW); //open RFID rfid.init(); if (rfid.isCard()) { Serial.println(“KART BULUNDU”); if (rfid.readCardSerial()) { Serial.println(“KART OKUNDU”); serNum0 = rfid.serNum[0]; serNum1 = rfid.serNum[1]; serNum2 = rfid.serNum[2]; serNum3 = rfid.serNum[3]; serNum4 = rfid.serNum[4]; Serial.print(rfid.serNum[0],DEC); Serial.print(", “); Serial.print(rfid.serNum[1],DEC); Serial.print(”, “); Serial.print(rfid.serNum[2],DEC); Serial.print(”, “); Serial.print(rfid.serNum[3],DEC); Serial.print(”, “); Serial.print(rfid.serNum[4],DEC); Serial.println(” "); } } rfid.halt(); say = rfid.serNum[0]; //radio digitalWrite(RFID_SS_PIN, HIGH); //close RFID digitalWrite(NRF_CSN_PIN, LOW); const char text = “rfid plus nrf24l01 test”; radio.write(&text, sizeof(text)); radio.write(&say, sizeof(say)); //say = say + 1; delay(1000); }

Birden fazla spi cihaz kullanırken ss pinlerini kullanman lazım hangi cihazı kullanacaksan onun ss pinini LOW a çekiceksin

Ben de onu yapmaya çalıştım. Rfid için SS 10. Nrf için CSN pin 8 ile işlem yapmaya çalıştım. Ama rfid çalışmıyor. Bi sıkıntı var ama çözemedim.

rfid entegrenın datasheeti inceleyin bazı spi cihazlarda ss pini low iken çalışır bazılarında high iken çalışır başka bir spi cihazla çakışıyordur. birde rfid yi eneble yaptıgınızda diğerini disable yapın

diyelim ki SS pine HIGH verince pasif oluyor. aktif etmek için LOW vermek yeterli mi? yani aşağıdaki komutlar void setup’ta olsa yeterli mi? yoksa loop’ta LOW ile birlikte kullanmalı mıyım acaba? rfid.init(); radio.begin();

rfid nin ss pininde bir led bağlayın dirençle beraber bu komutları verdiğinizde duruma bakın. kutuphaneyi de ıncelemek gerek bu pinler nasıl kullanılıyor hemen cevap veremem.