Hello,
I am trying to determine the highest datarate possible using the CC1101 radio.
My use case is the transmission of media files.
With the following configuration I have only been able to achieve 1.24KBps:
-
modulation: 2-FSK
-
Frequency: 869,25 MHz
-
Datarate: 299.926 KBauds
-
udp as transport protocol
-
with gnrc_sixlowpan_iphc module disabled
To measure the data-rate I modified udp.c in examples/gnrc_networking
@ udp.c I am printing the time between each packet sent, the time of all packets sent and the total number of Bytes transmitted. I defined y and n:
uint32_t y = xtimer_now**();**
for (unsigned int i = 0; i < num**;** i**++)** {
uint32_t n = xtimer_now**();**
And m, before the for ends and x after it finishes
uint32_t m = xtimer_now**();**
printf**(“Time per packet (ms): %ld\n”,(m-n)/1000);**
}
uint32_t x = xtimer_now**();**
printf**(“Total Bytes sent: %u\n”,** strlen**(data__)*__num);**
printf**(“Total time (ms): %ld\n”,(x-y)/1000);**
@Terminal
Packets are sent by:
2016-07-04 14:35:27,609 - INFO # > udp send fe80::ff:fe00:66 5 01234567890123456789 100 9500
which sends through port 5 packets of 20 Bytes, 100 times with a delay of 9500 us between them.
As a result I get this:
2016-07-04 12:09:48,179 - INFO # Time per packet (ms): 13 2016-07-04 12:09:48,180 - INFO # Total Bytes sent: 2000 2016-07-04 12:09:48,180 - INFO # Total time (ms): 1612
In addition, with this configuration, I am receiving 38 packets of the 100 packets sent.
When trying to reduce the delay time between each packet to 9 000 us, the transmitter stops and does not send anymore even if I put back delay time to 9 500 us, only transmits back again when I reset it.
The more packets I try to send in that loop the larger the delay between packets needs to be.
How can I further investigate where the bottleneck comes from? Or if you have any idea on this issue?
Thanks in advance,