Escuche antes de hablar (LBT) de SI4463

0

SI4463 puede escuchar antes de hablar (LBT). Encontré esta función en 29 páginas de la hoja de datos . Creo que puedo usar LBT para hacer un escáner de banda como this . Pero no hay ningún ejemplo para mostrar cómo hacerlo.

Solo arduino Estoy familiarizado, y creo que debería usar SPI library para enviar una recomendación al SI4463 y recibir datos, por ejemplo, SPI.tansfer (recomendar). Pero no sé qué elogio puede hacer esto. De hecho, solo puedo usar RH_RF24.h para controlar SI4463. Pero no hay una función adecuada para hacer un escáner. El RSSI de RH_RF24.h es el RSSI del último mensaje recibido. No se puede utilizar para LBT.

Lo siento por mi pobre inglés. Si hay algún problema con mi pregunta, por favor dígame.

Gracias.

#include <SPI.h>
#include <RH_RF24.h>

// Singleton instance of the radio driver
RH_RF24 rf24;


uint8_t Recieve_Data[20];

uint8_t receive_buffer[RH_RF24_MAX_MESSAGE_LEN];
uint8_t receive_buffer_length = sizeof(receive_buffer);

uint8_t Rssi;

unsigned long Micro_Time;

uint8_t status[8];
uint8_t buf[RH_RF24_MAX_MESSAGE_LEN];
uint8_t len = sizeof(buf);

void setup()
{
  Serial.begin(115200);
  if (!rf24.init())
    Serial.println("init failed");
  // Defaults after init are 434.0MHz, modulation GFSK_Rb5Fd10, power 0x10
   while(!rf24.setFrequency(443));
  rf24.setModemConfig(rf24.GFSK_Rb50Fd100);  //设置成GFSK_Rb50Fd100
}


void loop()
{
  rf24.setModeRx();
  delay(100);
  rf24.setModeIdle();
  rf24.command(RH_RF24_CMD_GET_INT_STATUS, NULL, 0, status, sizeof(status));
  Serial.print("Id   ");
  for (int i = 0; i <= 8; i++)
  {
    Serial.print((uint8_t)status[i]);
    Serial.print("   ");
  }
  Serial.println();
  /*
    if (status[2])
    {
      uint8_t modem_status[6];
      rf24.command(RH_RF24_CMD_GET_MODEM_STATUS, NULL, 0, modem_status, sizeof(modem_status));
      delay(100);
      for (int i = 0; i <= 6; i++)
      {
        Serial.print(modem_status[i]);
        Serial.print("   ");
      }
      Serial.println();
    }
  */
  delay(400);
}
    
pregunta lanse7pty

1 respuesta

1

La hoja de datos dice: "Los valores RSSI bloqueados se borran al ingresar al modo RX para que puedan leerse después de recibir el paquete ... o después de volver al modo de espera ". Esto sugiere el uso de las siguientes funciones de la biblioteca RadioHead:

void RH_RF24::setModeRx()
void RH_RF24::setModeIdle()
bool RH_RF24::get_properties(...)
    
respondido por el peter

Lea otras preguntas en las etiquetas