What's highest data rate on the nRF2401(actual data received

What’s the highest that anybody got?

I seem to only be able to send about 1667 packets a second.

That’s 1667 x 4 (bytes of payload) x 8 (bits in a byte) = 53kbps. (payload)

I seem to only receive about 570 packets (of 4 byte payloads) a second.

That’s 570x4x8 = 18kbps. (payload)

Did anybody achieve any better?

I really need to increase this and I’m not sure if the nRf2401 is capable of it.

Thanks

If I am not mistaken the speed of the nrf2401 is dictated by the speed of the MCU. If you need more speed on the receiver side you could always overclock your MCU. How are you measuring the amount of data received?

Ive been abusing my mirf’s with 20 byte payloads hundreds of times per second.

I had a 19.2k LCD hooked to the (RX) MCU and I was missing a lot of data. So I decide to use hyperterminal at 115.2 and all was well.

I’m not sure what chip or language you are using?

Overclocking does have it’s side effects. All time sensitive commands i.e. PAUSE, SEROUT, etc are all effected. For instance over clocking (2x) would make a PAUSE of 2000 = 1000. And baud rates are equally changed. I.E. you would use the baud rate for 4800kbps for 9600kbps.

But your clockin clockout would jump from ~50khz to ~100khz at (2x).

I’m using PIC programming in C using CC5X compiler.

PIC 16F88 with internal 8MHz clock.

See the problem is more on the sending side I think.

All I do is send a 4byte packet.

so,

pseudocode:

countsmall = 0;

countbig = 0;

while(1){

countsmall++

if(countsmall == 1000){

countsmall = 0;

countbig++;

}

packet1: b1[AA], b2[bb], b3[countbig], b4[CC]

delay_us(90); //delay 90microseconds

}

the receiver now displays every 1000 packets.

so my output shows something like:

send: 5 x 1000 packets

received: 2 x 1000 packets


And if I don’t have that delay then I won’t receive anything on the receiver side.

The datasheet talks about timing for the clocking in data and stuff… So I think I’m taking care of that with that delay.

If you could calculate somewhat what your data rate is…so I could compare.

you said hundreds of packets a second (how many hundreds)

.

I really need this to be faster if possible.

I know the uMIRF has a 16MHz clock inside. but the datasheet talks about usec delays and stuff.

Thanks.

My applications are based on 29.97 frames per second. Each frame has two fields.

which makes 59.94 fields per second. Each field is transmitted to a receiver ~10 times. And 20 bytes are contained in each field.

So that makes:

59.94 x 10 = 599.4 transmissions per second

599.4 x 20 = 11988 bytes per second

11988 x 8 = ~96kbps

And I’m sure the nordic could do even more.

interesting.

can you please tell me the setup that you have exactly?

the config for the nordic.

I’m starting to have hope in this since you say so .

btw. we’re talking about the nRF2401 not nRF24L01 (with retransmission).

Any particular reason why you think i can’t transmit if I don’t put that delay?

I wish I had my hands on a 24l01. :? my configuration is 250kb, 1 channel, 16b crc nothing special at all. my PIC is actually overclocked 5x. ( Had to open the box) I use PIC BASIC so I dont define OSC so it’ll default to 4mhz, and then I use an 20mhz OSC and set ICPROG for HS. I also use usart for sending out data to rest of my circuit. That way I can grab data before its over written. This level of over clocking is fairly extreme and well out of spec. But I need it to handle some other stuff.

As i said I use PICBASIC. C makes my eyes hurt. So I cant fully grab what your doing with your program. Sorry cant be of more help there.

What I was trying to say in my first post was that perhaps your MCU on the RX side was busy doing something else like sending data to an LCD and wasn’t getting the data before it was overwritten.

Hopefully one of these guys proficent in C can give ya a hand.

well the Receiver is only receiving data from nRF and once every 1000 packets sends it to the UART at 56kbps.

So I don’t think its the receiver.

Also I know how many packets the Sender sends.

Because I keep count of both, sent and received.

And if I try to send fast, the sender will simply not send anything.

I’m confused now, how you can get such a high speed and I can’t even get half that.