1

我在 STM32F103 的 LoRa 模式下使用 RFM95。我的代码很简单,我只是将控制器用作串行和 SPI 之间的“桥梁”。

if (Serial.available()>0) {
  inByte = Serial.read();
  if(fifao==0) {
    if (inByte=='R') {
      //if we send R to the serial port it will print all registers values --- it is all working here
      imprimeregist();
    } else if (inByte=='r') {
      //if we send r to the serial port it will read all fifo addres from 0 to 0x80 and print it in the screen --- it is all working here
      lefifo();
    } else if(inByte=='F') {
      //if we send F to the serial port it will read the fifo address and return the value--- it is all working here
      Serial.println(F("type fifo address please: "));
      fifao=1;
    } else {
      //if we type any other thing it will write the next typed value to the address specified 
      entrada[contser]=inByte;
      contser++;
    }
  } else {
    fifu=inByte; 
    Serial.println(spiRcv(fifu),HEX);
    fifao=0;
  }
  if(contser==2) {
    //writing the value ---------------- it is working here too
    writeSPI(entrada[0],entrada[1]);
    Serial.println( spiRead(entrada[0]),HEX);
    contser=0;
  }

我正在使用 Arduino IDE(我使用了很多软件并且到了同一个地方)。我就是不能传送。

我将其中一个寄存器写入 RX LoRa 模式,另一个写入 TX LoRa 模式。

有谁能够帮我?也许是我必须使用的寄存器的值,或者我必须使用传输和接收数据的方式。

4

1 回答 1

0

为了减少干扰,Lora 节点无线电在接收时使用 I/Q 反转,以便只听到网关而不听到对方。

为了让两个 Lora 节点直接相互通信,它们的反向 IQ 标志需要被清除(如此处所示https://github.com/things-nyc/arduino-lmic/blob/master/src/lmic/radio .c#L590 )

#define LORARegInvertIQ 0x33
writeReg(LORARegInvertIQ, readReg(LORARegInvertIQ) & ~(1<<6));

一旦你这样做,他们应该能够听到对方的声音。这是执行此操作的示例 Arduino 草图:https ://github.com/things-nyc/arduino-lmic/blob/master/examples/raw/raw.ino

于 2017-10-18T14:02:11.337 回答