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

24L01+ end of transmission minimum time between transmitters (TDM)?

I have a theoretical question involving 6 24L01+ devices in PTX mode and one 24L01+ device in PRX mode.

Assuming a synchronized system, when one PTX finishes transmitting how long must the "dead time" be before another PTX may transmit on the same channel so the PRX can reliably receive messages? The datasheet mentions that the 24L01+ requires 130us from the time the transmitter stops to the time the PLL can lock to the incoming signal, but in my scenario the 6 PTXs are all transmitting data to the PRX which is always listening; there is no radio turnaround time in the meaningful sense.

(I understand that after transmitting, the 24L01+ automatically flips to RX but in my application nothing is ever transmitting back to the PTX; not even an ACK.)

To add some concrete numbers to this, assume 2MBit data rate, 5 byte address, 32 byte payloads and 2 byte CRC. This would give 329 bits per packet or 165us to transmit a message.

e.g. at t=0, PTX #1 transmits its message. at t=165us, PTX #2 transmits. At t=330us, PTX #3 transmits, etc., etc.

Is this feasible? Assuming tight enough timing sync, will this work or do I need to put some dead time between PTX #1 and PTX #2? If so, how much dead time?

Thanks

Parents
  • I've been trying to send fast data with NRF24L01 for a long time. In order for the project to meet its requests, 32bytes of data must be on the Receiver side at a maximum of 400us. I'm currently seeing 424us. The content of the code is as follows:
    I init in NRF24L01 "main"
    After 10ms, the first data is gone and after that, I send data by looking at the TX_DS bit. Whenever the TX_DS bit is one, I send 32bytes of data again and the transactions are carried out in this way at regular intervals.

    I didnt use ARC to avoid delays.

    My SPI works on 10MHZ and I also see this in SCK pin of NRF24L01.

    There is not any switching between RX and TX, When I initialize one of the NRF24L01 as a TX it stays always in TX mode.

    My SPI send 1 byte to the NRF24L01 at 2.9us and wait for other 1byte at 650ns (until 32byte)

    What should I do to gain 24us? Should I focus on SPI or NRF24L01 initializatin?

  • Hi 

    In general it is not recommended to reply to an old case with a new question, even if it is somewhat related. You should open a new ticket instead. 

    I assume you are using 2Mbps mode if you are trying to get 32 bytes across in this short time?

    When do you set the CE signal on the TX side?
    It should be possible to set it the same time you start writing data over the SPI interface, in order to avoid having to wait for the TX rampup after the payload is sent to the chip. 

    What is the state of your EN_AA register?
    If you disable ACK completely then you should be able to send packets quicker. The main drawback is that you lose the ability to use dynamic payload length (and acks/retransmissions won't work obviously). 

    When you say "on the receiver side", do you mean you want to get the interrupt on the receiver, or the data needs to be read out and ready in the host MCU?

    Best regards
    Torbjørn

  • 1-Yes, I am using 2Mbps mode

    2-This is my init function that you can see above and "EN_AA" register is set to 0h. 

    3-After I send 32byte data to NRF24L01, I set the CE pin high for 10us, 

    4- I use NRF24L01 which is connected to the MCU on Receiver side.

    As a summary : I am waiting for TX_DS to be high and when TX_DS is high I send 32byte data and wait for TX_DS again. One period of this process are 424us (TX_DS High --->TX_DS High again ).

    Do I have to wait for the time on air to send new data? 

    Best regards.

  • I also opened new case about it I dont know how to share it but the issue name is "Minimum time possible to send 32byte data with NRF24L01 module ?".

  • Hi 

    Your register configuration looks OK, but there is no point writing to the FEATURE register when EN_AA = 0. 

    The FEATURE register is only active when EN_AA is enabled. Without EN_AA enabled you never send/receive ACK packets. 

    Best regards
    Torbjørn

Reply Children
No Data
Related