Максимальная скорость ESP32 Bluetooth SPP
Я пытаюсь понять максимальную скорость передачи BT SPP, которая может быть достигнута с помощью ESP32.
Мой проект требует отправки 2 байтов данных каждые 200 мс (5 кГц) И дополнительных 15 байтов данных каждые 50 мс (20 Гц) через BT.
Я пытаюсь добиться этого с помощью BT SPP, однако я не мог понять скорость BluetoothSerial::write И BluetoothSerial::print.
Основываясь на моем тестировании на 5 кГц, BluetoothSerial::write зависает после 2-3 секунд подключения.
Функция BluetoothSerial::println, похоже, не замерзает, однако время, необходимое для завершения функции, не является постоянным. Пожалуйста, обратитесь к приведенному ниже коду о том, как я измеряю время, необходимое для завершения функции.
На рисунке ниже показано время в микросекундах при каждом выполнении функции (DataFormat()). Если вы посмотрите, есть 2 случая, когда продолжительность времени больше, чем в среднем 0f 80us.
Я хотел бы знать, ESP32 BT SPP может достичь такой скорости или есть другой способ добиться этого.
Спасибо вам за ваше время и помощь в этом вопросе. Я задал тот же вопрос и на форуме ESP32 здесь.
void dataFormat(record r){
serialBtPrint_dur = micros();
char msg[20];
sprintf(msg,"%04d%05d%05d%05",r.e, r.r, r.p, r.y);
SerialBT.println(msg);
serialBtPrint_dur = micros() - serialBtPrint_dur;
}
}
void loop() {
char msg[20];
uint8_t testMsg[20] = "abcdefghijklmnop\n";
if(!structs.isEmpty()){
dataset[local_rd_ptr].yawData);
data::dataFormat(structs.shift());
Serial.println(serialBtPrint_dur);
}
}
@karunanj, 👍1
1 ответ
Это больше похоже на проблему переполнения с чем-то, чем на фактическую задержку. Если вы посмотрите на время в журнале, то увидите, что вы не пропускаете секунды в журнале (иначе говоря, 19:12:32.234 в двух последовательных записях журнала, когда вы заявляете о задержке). Я думаю, что это ошибка работы с данными размером больше 8 бит. Я знаю, что это старый вопрос, но я искал информацию, наткнулся на нее и решил спросить.
- Пример кода для ESP32 в качестве медиа-контроллера для Android/iPhone Media Apps
- Библиотека ардуино или код для ESP32 для сканирования устройств Bluetooth?
- Имена синтаксического анализа обнаружения Bluetooth ESP32
- Веб-страница с использованием Bluetooth?
- Можно ли использовать WiFi и Bluetooth/BLE в одном проекте ESP32?
- ESP32 запускает BLE после глубокого сна
- ESP32 Arduino Bluetooth Serial не подключается повторно после отключения
- ESP32 nodemcu сериализует отправку данных
На самом деле спасибо, что подумали об этом. Она не была решена, что привело меня к использованию другого механизма. Для этого конкретного сценария переполнение произойдет только в том случае, если разница микронов больше 8-битного размера данных, чего теоретически не должно произойти., @karunanj