When one host and one device,the through can be 16KBps。But,when one host and two device ,the Max throughput is only 6KBps。Can you tell me Why ?????And Can you tell me the Max throughput you test??
When one host and one device,the through can be 16KBps。But,when one host and two device ,the Max throughput is only 6KBps。Can you tell me Why ?????And Can you tell me the Max throughput you test??
Can you tell me your timeslot?I testd and found the max timest is 1200us when I used 2 device. Thank you!!
@Davy: timeslot is kept at default (600us with 2Mbps) by using this and with the channel table on the device limited to half of the full table, you will see that the packet only sent every 4 timeslot (at the best scenario) this is because the device only transmit one new packet per channel (retranmission happens on all timeslot though). So on the host I configured with 2 timeslot per channel, and on the device it's 4 timeslot per channel. This will allow the host and device synchronize even though the channel table on the device is half of what on the host.
What about 1Mbps,do you have a try?? when i used 1Mbps and 900us,it just can work about1minute.After 1 minute,one device will stop working. Only by using 1200us,the two devices can work together.
Yes, I just tried for 10 mins, no problem. I guess issue could be with smth else. Have you tried to test with just the example code and no modification except for the Gazell configuration ?
Host:
static uint8_t channel_table[6]={4, 25, 42, 63, 77,33};
// Initialize Gazell.
bool result_value = nrf_gzll_init(NRF_GZLL_MODE_HOST);
GAZELLE_ERROR_CODE_CHECK(result_value);
result_value = nrf_gzll_set_channel_table(channel_table,6);
GAZELLE_ERROR_CODE_CHECK(result_value);
result_value = nrf_gzll_set_datarate(NRF_GZLL_DATARATE_1MBIT);
GAZELLE_ERROR_CODE_CHECK(result_value);
result_value = nrf_gzll_set_timeslot_period(900);
GAZELLE_ERROR_CODE_CHECK(result_value);
Device 1 (and 2 with modification for channel map)
static uint8_t channel_table[5]={ 25, 63, 33};
//static uint8_t channel_table[5]={4,42, 77};
// Initialize Gazell.
bool result_value = nrf_gzll_init(NRF_GZLL_MODE_DEVICE);
GAZELLE_ERROR_CODE_CHECK(result_value);
// Attempt sending every packet up to MAX_TX_ATTEMPTS times.
result_value = nrf_gzll_set_max_tx_attempts(MAX_TX_ATTEMPTS);
GAZELLE_ERROR_CODE_CHECK(result_value);
result_value = nrf_gzll_set_datarate(NRF_GZLL_DATARATE_1MBIT);
GAZELLE_ERROR_CODE_CHECK(result_value);
result_value = nrf_gzll_set_timeslot_period(900);
GAZELLE_ERROR_CODE_CHECK(result_value);
result_value = nrf_gzll_set_timeslots_per_channel(4);
GAZELLE_ERROR_CODE_CHECK(result_value);
result_value = nrf_gzll_set_channel_table(channel_table,3);
GAZELLE_ERROR_CODE_CHECK(result_value);