Hello,
I am using XBee-PRO DigiMesh 900MHz modules in my application, but I can't transmit large blocks of data reliably.
I can transmit small quantity of data at once without problem (~750 bytes), but when I try to transmit a lot of data at once (more than 15 or 20 packets of 100 bytes), I begin to lose a lot of packets. When I send the packets with a delay of 100ms between them, the transmission is ok. The problem is that with this delay the transmission rate became very low to me, less than 1KB/seg.
At first I thought it was some problem with the modules transmission or reception buffer, but I have investigated it and I think that the problem isn't there. I checked the serial flow control and it appears to be working, and the serial baud rate in the modules shouldn't limit the reception (I am using 115200bps and I have tested 230400bps, but the rate that I can transmit is much less than it).
I will investigate a little more to eliminate the possibility of the problem be something with the buffers, but I found one thing that may be wrong. As I need to send large blocks of data, I want to use unicast to avoid the multicast automatic retransmission (3 retransmissions). So, I am using the API mode with escaped characters to interface with the modules. What I found is that the transmission status, which modules sends after each packet sent, says that even when I send a unicast packet, it is retransmited 3 times. It happens for every packet, even if I send only one packet. Below is one example:
Packet sent:
0x7E 0x00 0x18 0x7D 0x31 0x01 0x00 0x7D 0x33 0xA2 0x00 0x40 0x53 0x88 0xB2 0xFF 0xFE 0x01 0x01 0x00 0x7D 0x31 0xC1 0x05 0x00 0x00 …
Transmission status received (just payload):
0x8B 0x01 0xFF 0xFE 0x03 0x00 0x00
Packet received in the other module (just payload):
0x91 0x00 0x13 0xA2 0x00 0x40 0x53 0x88 0xDF 0xFF 0xFE 0x01 0x01 0x00 0x11 0xC1 0x05 0x01 …
The "Options byte", in the transmission packet, is set to zero, so the transmission should be unicast. And in the received packet, the "Options byte" is 0x01, so it should be an unicast packet. I don´t think I am losing packets on RF transmission, and I get always 3 retransmission, even when I send just one packet. If I had some problem with the RF transmission the retransmission should change, and I should lose packets, but I lose packets just when I try to send large blocks of data. Shouldn't the retransmission be zero or at least be 1 or 2 some times? It is always three, like happens in multicast transmission.
The Mesh Retries (MR) in the module is set to 1. If the module is retransmitting 3 times every packet that I send, could it cause the loses of packets that I am seeing? Someone have some tip?
Thank you.
Tiago Prado Lone