• I built a project a couple of years ago with Pico transmitter and Original board receiver using NRF24L01 radios. I upgraded firmware on both to 2v03 a few days ago and the radio link no longer works (I get TX not received XX errors). I have 10uf caps on both NRF modules. I can get the link to work by programming the Original as the transmitter and Pico as the receiver. I've tried swapping the radio modules + replacing them with some extras I have.

    I also tried using different output pins on the Pico to drive the CE and CSN signals, but still get the same results. I'm reasonably confident the SPI interface is working fine on both boards since I can read various registers on the NRF modules including the RX/TX addresses. I've tried different data rates and power levels. I'm running both boards connected to USB and the IDE. So far nothing has worked - I cannot get it to work with Pico as transmitter and Original as receiver. It always works the other way around.

    I've posted some test code below. I would really appreciate any suggestions!

    Pico Transmitter:

    SPI1.setup({sck:B3, miso:B4, mosi:B5});
    var nrf = require("NRF24L01P").connect( SPI1, B14, B13 );
    function onInit() {
      nrf.init([0,0,0,0,1], [0,0,0,0,2]);
      nrf.setDataRate(250000);
      nrf.setTXPower(1);
    }
    onInit();
    var on = false;
    var i = 0;
    setInterval(function() {
      nrf.sendString("Allen"+i);
      var s = nrf.getStatus();
      print(s.toString(16));
      digitalWrite(LED1, on);
      on = !on;
      if (i++ > 8) i = 0;
    }, 2000);
    

    Original Receiver:

    SPI1.setup({sck:A5, miso:A6, mosi:A7});
    var nrf = require("NRF24L01P").connect( SPI1, B0, B1 );
    function onInit() {
      nrf.init([0,0,0,0,2], [0,0,0,0,1]);
      nrf.setDataRate(250000);
      nrf.setTXPower(1);
    }
    onInit();
    
    dataLine = "";
    setInterval(function() {
      while (nrf.getDataPipe() !== undefined) {
        var data = nrf.getData();
        for (var i in data) {
          var ch = data[i];
          if (ch===0 && dataLine!=="") {
            print(dataLine);
            dataLine = "";
          } else if (ch!==0) {
            dataLine += String.fromCharCode(ch);
          }
        }
      }
    }, 50);
    
About

Avatar for Allen @Allen started