rfm69 на M0 Express ... init() не работает

Я уже успешно подключил rfm69 к своему Feather M0 Express... но я не могу сделать это снова.

Соединения следующие (в порядке rfm69):

Vin -> 3V
Gnd -> Gnd
Ru -> (ничего)
G0 -> 9
SCK -> SCK
МИСО -> МИ
MOSI -> МО
CS -> 10
RST -> 6

Код установки таков:

#include <SPI.h>
#include <RH_RF69.h>

#define RFM69_CS      10
#define RFM69_INT     9
#define RFM69_RST     6
#define LED           13

// Одноэлементный экземпляр радиодрайвера
RH_RF69 rf69(RFM69_CS, RFM69_INT);

void setup() 
{
  Serial.begin(9600);
  while (!Serial);

  Serial.println("Feather RFM69 RX Test!");
  Serial.println();

  // ручной сброс
  digitalWrite(RFM69_RST, HIGH);
  delay(10);
  digitalWrite(RFM69_RST, LOW);
  delay(10);

  if (!rf69.init())                  
    //***********************************
    Serial.println("init failed"); 
  else
    Serial.println("init ok"); 
  
  // Значения по умолчанию после инициализации - 434,0 МГц, модуляция GFSK_Rb250Fd250, +13 дБм (для модуля низкой мощности)
  // Нет шифрования
  if (!rf69.setFrequency(434.0))
    Serial.println("setFrequency failed");
  else
    Serial.println("setFrequency ok"); 

  // Если вы используете высокомощный RF69, например RFM69HW, вы * должны * установить мощность Tx с помощью
  // ishighpowermodule флаг установлен следующим образом:
  //rf69.setTxPower (14, правда);

  // Ключ шифрования должен быть таким же, как и в клиенте
  uint8_t key[] = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
                    0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08};
  rf69.setEncryptionKey(key);
  
#if 0
  // Для совместимости с RFM69 Struct_send
  rf69.setModemConfig(RH_RF69::GFSK_Rb250Fd250);
  rf69.setPreambleLength(3);
  uint8_t syncwords[] = { 0x2d, 0x64 };
  rf69.setSyncWords(syncwords, sizeof(syncwords));
  rf69.setEncryptionKey((uint8_t*)"thisIsEncryptKey");
#endif
  Serial.println("Fin du Setup"); 
}

Но во время выполнения программа останавливается на //************************** Я ничего не понимаю.

Кто-нибудь может мне помочь?

Большое спасибо и счастливого Рождества

, 👍1

Обсуждение

Чтобы было ясно, вы видите печать "init failed", а затем никакого дальнейшего вывода на последовательный монитор, это правильно?, @timemage


1 ответ


1

Сообщение "init failed" не появляется. Все останавливается на "//******". Я сравнил с другой программой RFM69. Я добавил строку "digitalWrite(RFM69_RST, LOW);" в начале "// manual reset", и теперь она работает. последовательность digitalWrite(RFM69_RST, LOW); digitalWrite (RFM69_RST, ВЫСОКИЙ); задержка (10); digitalWrite (RFM69_RST, НИЗКИЙ); кажется, это более эффективно. .. для меня это остается загадкой.

Спасибо

,

Вы должны быть в состоянии отметить свой ответ как принятый., @timemage

Извините, я не понимаю, что вы имеете в виду ... Кажется, таким образом я не в состоянии это сделать. Я почти никогда не пользуюсь форумами., @JL Ecole Decroly