This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

NRF24L01+ TX and RX address issue

Hi,

I have a project that I have product which I have produced several thousand over the last couple of years and today find an issue.

The product has a receiver that gets a 3-BYTE RX Address assigned (for now only using the 2 lowest bytes).

There transmitters that assign their local TX and RX address dependent on which receiver they need to communicate.

For some reason, if I set the RX address at Receiver and the TX and RX address at transmitter = 4290, I get no reception at the receiver at all.

Any other number is ok (even #0001 is ok, 4289, 4291 all ok, 4280 ok).

I checked the SPI data being sent to the radio module at each end and the bytes are correct.

I have tested this on multiple hardware and they all do the same, set address to 4290 = no reception, set address to any other number = OK

Any idea what could cause this or where I could start looking to find the source of the issue?

Parents
  • Do you have a change history for NRF24L01+?

    I have been using older modules with my code and they worked fine.

    Then I purchased some reels of 2017 marked devices and the tx flag was not being set after transmission so I had to add a 2ms delay after transmission rather than wait for flag to change

    I made a hundreds of devices with this code and the 2017 devices

    Now I have received 1500 devices on reels with 2018 date and none of them are working at all.

    Something must have changed in this version that affects timing or command sequence or something and I cannot determine what is happening.

    If I remove the 2018 device and place the 2017 device into the SAME hardware that does not work, it works perfectly.

    But if I replace the 2018 device with another 2018 device on the board, it does not work. Only the 2017 devices work correctly.

    I need to solve this to make these 1500 products containing the device ASAP.

    Thanks

  • Hi,

    Since you are in production let's transfer this case to QA for handling. They will contact you shortly where to send failing samples, I think we should receive both chips from 2017 and 2018 for test.

    There have been no changes occurring since it was launched about 10years(?) ago. There are however many counterfeit devices out there, so make sure to get the chips though one of our distributors, though I am not saying that is the problem here.

    Best regards,
    Kenneth

  • Is there a way we can verify whether these are genuine Nordic devices used in the RF Modules?

    I do have SPI communications working so I can read any of the registers ok.

    The IC is marked

    NRF24L01 + M

    1808 A X

    I need to verify what letter "X" is, I have placed it to show you there is a second digita but need to confirm in morning from my office what that second digit is. Doesn't this signify which production plant made the device in 8th week of 2018?

  • This is the module type we use.

    Marking on device is

    NRF   M

    24L01 +

    1808  A H

  • Hi David,

    The component is most likely a fake since we found inconsistencies in the marking. You might want to ask your supplier trough which channel they bought the part. Probably they won't disclose the information.

    Thanks

    Kind regards

    Massimo (QA department)

  • I can get the modules to work by inserting a delay between the writing of TX Address Bytes and Writing TX Payload (Step 6 below). First I tried 2ms and did not work. I increased to 10ms and it works fine now.

    Is there some delay required at this point? It is like my timing may have been borderline and if for some reason a batch of devices executed a little faster or slower and affected this? Hence why I asked if there had been any changes in the silicon between 2017 batches and 2018?

    The general algorithm of my code is below. 

    1. Power Up from sleep
    2. Write "1" to config register bit 1
    3. Pause 1.5ms
    4. Write RX address to RX_ADDR_P0
    5. Write TX address to TX_ADDR
    ******* Need delay here or no go *************
    6. Delay 10ms
    **********************************************
    7. Write Payload bytes
    Transmit
      CE = 1
      10us delay
      CE = 0
    8. Get TX Done flag  
    9. Clear all IRQ flags
    10. Flush TX
    11. Power Down
Reply
  • I can get the modules to work by inserting a delay between the writing of TX Address Bytes and Writing TX Payload (Step 6 below). First I tried 2ms and did not work. I increased to 10ms and it works fine now.

    Is there some delay required at this point? It is like my timing may have been borderline and if for some reason a batch of devices executed a little faster or slower and affected this? Hence why I asked if there had been any changes in the silicon between 2017 batches and 2018?

    The general algorithm of my code is below. 

    1. Power Up from sleep
    2. Write "1" to config register bit 1
    3. Pause 1.5ms
    4. Write RX address to RX_ADDR_P0
    5. Write TX address to TX_ADDR
    ******* Need delay here or no go *************
    6. Delay 10ms
    **********************************************
    7. Write Payload bytes
    Transmit
      CE = 1
      10us delay
      CE = 0
    8. Get TX Done flag  
    9. Clear all IRQ flags
    10. Flush TX
    11. Power Down
Children
Related