Multiple Lora modules are blocking each other

hckar
Tue, 10 Nov 2020 10:15:22 +0000
Boards

Hello,
I am using two adafruit RFM96W (Pinouts | Adafruit RFM69HCW and RFM9X LoRa Packet Radio Breakouts | Adafruit Learning System) modules connected to SPI1 and SPI2 busses of a DiscoF407 board. I worked with one radio module and I did not have any problem. Now I am working with two radio modules. They correctly initialize and transmit signals. However when I want to supress one of the radios the other one stops working as well. I tried all the ways I can try but no chance. Here is a list of what I tried:

1. Initially I tried EN pin of radio B (SPI2). EN pin completely cuts the power of the module (it is connected to Vin through a 100K res. ). When I pull this pin down either by software or by direcly connecting it to the gnd, radio A starts to invoke “.tx_timeout” function of Semtech’s SX1276 driver and none of the radios transmit signal. When I release EN pin of radio B and re initialize it, both start working as before.

2. The proper way of deselecting an SPI device is pulling its CS pin down. Also in this case the other radio starts to invoke “.tx_timeout” and when I release this pin, again both start working without re-initializing radio B.

3. I also tried to block SPI2 (bus of radio B) with lock() and select() functions of the SPI API but in any case radio A stops working while radio B is somehow blocked.

I am sure I am doing a mistake but I could not understand what I am missing. There are two SPI devices which do not share any hw resource but one blocks the other one. This is completely unexplainable! I have already lost a lot of time on this and I really do not have any idea why is this happening? What causes this problem? What is the proper way to stop one of the radios?
Thank you

2 posts - 1 participant