我在使用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模式。
任何人都可以帮助我吗?也许使用我必须使用的寄存器的值或我必须做的发送和接收数据的方式。
答案 0 :(得分: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