Bluetooth Low Energy -повторное обновление значения характеристики

Следуйте -Up question на Stackexchange по электротехнике

Я хочу записать значение характеристики Bluetooth с низким энергопотреблением несколько раз за короткий промежуток времени. время (в качестве возможного варианта использования представьте себе мышь ).

  • Характеристика со 128-битным UUID имеет длину 20 байтов . Поэтому его можно записать в одну транзакцию с низким энергопотреблением.
  • Запись происходит с частотой 50 Гц, что эквивалентно записи каждые 20 мс .
  • Следовательно, записывается 20 *50 *8 = 8 кбит/с .
  • Я использую режим Команда / Запись без ответа для записи характеристики. Поэтому на уровне атрибутов не происходит никаких подтверждений.
  • Другие устройства Bluetooth или Bluetooth с низким энергопотреблением не подключены. Через WLAN ничего не выполняется. Никакие другие характеристики не считываются и не записываются во время испытаний.

Я тестирую программу, отправляя пакеты, содержащие порядковые номера, с 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

21
задан Community 13 April 2017 в 12:32
поделиться