Следуйте -Up question на Stackexchange по электротехнике
Я хочу записать значение характеристики Bluetooth с низким энергопотреблением несколько раз за короткий промежуток времени. время (в качестве возможного варианта использования представьте себе мышь ).
Я тестирую программу, отправляя пакеты, содержащие порядковые номера, с iPhone 4S. Порядковый номер увеличивается на единицу после каждого отправленного пакета.
На принимающей стороне используется программируемая макетная плата, которая включает в себя микросхему CSR1000 BLE, которая принимает пакеты и распечатывает полученные порядковые номера для последовательного соединения.
У меня следующие проблемы.:
Через некоторое время пакеты начинают отбрасываться. Первые ~100 пакетов работают нормально при 50 Гц. С этого момента пакеты начинают отбрасываться.
0x00 - 0x46 received
0x47, 0x48 missing
0x49, 0x4a, 0x4b, 0x4c received
0x4d missing
0x4e, 0x4f, 0x50, 0x51 received
0x52 missing
0x53, 0x54, 0x55, 0x56 received
0x57 missing
...
Чаще всего пачка из четырех пакетов передается нормально (редко, всего 2 пакета ). Тогда 1 -7 пакетов отсутствуют.
Когда я уменьшаю размер значения признака, проблема остается.
Когда я пишу с частотой 100 Гц вместо 50 Гц, картина такая же -, только отбрасывание начинается примерно после 35 пакетов и что 5 -7 пакетов отбрасываются между успешной передачей четырех пакетов.
При потерянных пакетах результирующая скорость передачи составляет около 5 кбит/с, независимо от частоты записи. Это явно ниже ~305 кбит/с, которые должны быть технически возможны при использовании Bluetooth Low Energy.
Проблема возникает и в обратном направлении, когда я отправляю пакеты с макетной платы на iPhone 4S. Опять же, 5 кбит/с — это максимум, который я получаю. Для этого сценария используется механизм уведомлений. Опять же, на уровне атрибутов не происходит никаких подтверждений.
Когда я пытаюсь отправить в обоих направлениях одновременно, все начинает взрываться до такой степени, что мне приходится сбрасывать и макетную плату, и iPhone 4S.
Вопросы:
Может ли это быть проблемой чипа Bluetooth Low Energy, который используется на макетной плате?
Если да, то почему проблема возникает и в противоположном направлении, где iPhone действует как приемник?
Существуют ли на рынке отладочные платы, поддерживающие высокочастотный -доступ к характеристикам?
В чем может быть причина проблемы?
Кроме предположений, попробуйте ссылаться на части спецификаций Bluetooth / слайдов презентаций / статей.
На рынке существуют мыши Bluetooth с низким энергопотреблением. Мыши имеют типичную частоту опроса 125 Гц и должны отправлять как минимум два 16-байтовых значения плюс дополнительные служебные данные HID за такт. Поэтому решение моей проблемы должно быть доступно.
Обновление
Событие LE Connection Complete описано в Спецификации Bluetooth, версия 4.0, том 2, часть E, раздел 7.7.65.1 .Я получаю следующие значения для различных параметров подключения:
Parameter Value Description
--------------------------------------------------
Conn_Interval 0x0054 Time = 105 ms
Conn_Latency 0x0000 Time = 0 ms
Supervision_Timeout 0x00fc Time = 2520 ms
Master_Clock_Accuracy 0x05 50 ppm