Программирование ARM Bluetooth 5: как добиться максимума пропускной способности BLE Mon, August 15 2022  

Поделиться

Нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.

Bluetooth 5: как добиться максимума пропускной способности BLE Печать
Добавил(а) microsin   

В этой статье (перевод [1]) будут рассмотрены новые возможности Bluetooth 5 для двукратного повышения скорости, а также общий обзор на пропускную способность приложения BLE. Предыдущая статья [2] рассматривала новые функции Bluetooth 5 и более конкретно увеличенную емкость оповещения (advertisement capacity).

Сначала надо уяснить для себя, что представленные скорости (1 Mbps и новая скорость 2 Mbps) это только теоретические значения, которые будут в реальном приложении значительно урезаны. Это происходит по многим причинам, которые мы рассмотрим в следующей секции.

"Двукратное" повышение скорости Bluetooth 5 требует новой аппаратуры, так что старые устройства/чипы/модули не будут это поддерживать. Также важно отметить, что для достижения более высокой пропускной способности необходимо, чтобы оба устройства BLE обменивались друг с другом данными с поддержкой на обоих сторонах нового LE 2M PHY (что делает возможным передавать данные с этой высокой скоростью).

Примечание: расшифровку незнакомых терминов и сокращений см. в Словарике [13].

И новый LE 2M PHY, и оригинальный LE 1M PHY, оба называются не кодированными PHY (LE Uncoded PHY), поскольку они используют представление 1 символ на бит данных (в сравнении с новым LE Coded PHY, который использует 2-символьное или 8-символьное представление на бит данных).

Другая важная вещь, которую стоит отметить - когда используется PHY повышенной скорости, реально достижимо пониженное потребление мощности источника питания (в пересчете на передачу того же самого объема данных). Причина в том, что время включения радиотракта уменьшается без повышения передаваемой мощности. Это в свою очередь также улучшает совместную работу в эфире с другими беспроводными технологиями, которые делят друг с другом общий спектр диапазона 2.4 ГГц (также по причине уменьшения времени радиоактивности).

В этой статье будет рассмотрено следующее:

• Какова ожидаемая практическая пропускная способность BLE?
• Новый 2M PHY стандарта Bluetooth 5 для передачи данных.
• Какие факторы влияют на пропускную способность или определяют её?
• Как вычислить пропускную способность приложения по передаче данных?
• Как добиться максимальной пропускной способности?
• Тестирование, измерение и вычисление пропускной способности с использованием двух плат разработчика на основе чипов nRF52 [3].

[Почему нельзя достичь теоретических скоростей BLE?]

Скорости передачи данных 1 Mbps (LE 1M PHY), 2 Mbps (LE 2M PHY), 125 kbps и 500 kbps (обе используют LE Coded PHY с S=8 и S=2 соответственно) это скорости, на которых радиотракт передает данные, но они недостижимы для реального приложения по следующим причинам:

• Ограниченное количество пакетов на интервал соединения.
• Задержка между кадрами (Inter Frame Space, IFS) 150 мкс.
• Необходима передача пустых пакетов от устройства, даже если нет данных для передачи.
• Наличие заголовка пакета - не все байты в пакете несут полезную нагрузку.

Чтобы лучше понять эти факторы и разобраться, что влияет на пропускную способность приложения, нужно рассмотреть формат пакета. На следующей картинке показана структура LE-пакетов данных 1M PHY и 2M PHY:

Preamble Access Address PDU (2 .. 257 байт) CRC
1 байт
(1M PHY)
или 2 байта
(2M PHY)
4 байта Заголовок LL Полезная нагрузка (0 .. 251 байт) MIC
(опция)
3 байта
2 байта Заголовок L2PCAP ATT Data (0 .. 247 байт)
4 байта Заголовок ATT Полезная
нагрузка ATT
4 байта
Op Code Attribute Handle До 244 байт
1 байт 2 байта

Рис. 1. Формат пакета BLE.

В этом пакете нас интересует полезная нагрузка, ATT Payload (именно она определяет передаваемые данные приложения). Как можно видеть, каждый уровень BLE использует некоторое количество байт заголовка.

• Для Bluetooth 4.0 и Bluetooth 4.1 максимальная ATT Payload составляет 20 байт.
• Для Bluetooth 4.2 и Bluetooth 5.0 новая функция, называемая Data Length Extensions (DLE), позволяет ATT Payload передавать 244 байта данных.

2x скорость Bluetooth 5 при использовании нового 2M PHY. Полезно понимать ограничения в использовании LE 2M PHY в Bluetooth 5:

• Нельзя использовать для передачи primary advertisements (на primary-каналах).
• Можно использовать для secondary "auxiliary packets", отправляемых на тех же каналах, что и пакеты данных (37 каналов: 0 .. 36). Для дополнительной информации, что такое primary advertisements и secondary advertisements, см. [5].
• Поддержка для LE 1M обязательна, в то время как для LE 2M опциональна. Таким образом, не все чипы, претендующие на поддержку Bluetooth 5, смогут обрабатывать повышенные скорости.
• Advertisements и discovery могут происходить на LE 2M PHY, и затем соединения могут происходить на secondary advertisement канале с использованием LE 2M PHY.

Передача данных приложения от одного устройства к другому обычно происходит во время соединения между ними. Соединившиеся устройства могут договориться использовать разные PHY через процедуру обновления PHY (PHY Update Procedure). Эта процедура может быть инициирована либо подчиненным slave-устройством (Peripheral, сервер), либо главным master-устройством (Central, клиент) после установки соединения, однако master будет ультимативно принимать конечное решение о том, какой PHY использовать для каждого направления (основываясь на запросе slave и возможностей по поддержке PHY со стороны master).

BLE max throughput PHY Update Procedure fig02

Рис. 2. PHY Update Procedure - устройство master запрашивает поменять PHY, и PHY меняется как минимум для одного направления.

[Факторы, определяющие пропускную способность]

Есть несколько факторов, влияющих на пропускную способность BLE. В основном это:

• Какой PHY используется - LE 1M, или LE 2M, или LE Coded (S=2 или S=8).
• Интервал соединения.
• Максимальное количество пакетов на интервал соединения.
• Максимальный размер пакета атрибутов, ATT Maximum Transmission Unit (ATT MTU).
• Data Length Extension (DLE).
• Тип операции: запись с ответом (Write with response), или запись без ответа, индикации (Indications) или оповещения (Notifications).
• Интервал между кадрами, Inter Frame Space (IFS): временной промежуток между соседними передаваемыми пакетами (150 мкс).
• Передача пустых пакетов.
• Дополнительные байты в пакете (заголовок) - не все байты пакета используются для передачи полезной нагрузки.

Давайте рассмотрим каждый фактор более подробно.

PHY. В стандарте Bluetooth 5 существуют в основном 3 варианта PHY: original 1 Mbps PHY, новый 2 Mbps, и Coded PHY (S=2 или S=8). Какой PHY используется будет напрямую влиять на максимальную пропускную способность данных, так как это определяет фактическую скорость передачи сырых данных (raw data rate), при которых пакеты передаются по радио.

Интервал соединения и максимальное количество пакетов на событие соединения. Интервал соединения (connection interval) эффективно определяет, сколько пакетов можно передать за время одного события соединения (connection event). Чем больше интервал соединения, тем больше пакетов можно отправить в одном событии соединения (до определенного предела для некоторых устройств). Подробнее про интервалы соединения и события BLE см. [6].

Однако количество пакетов на соединения зависит от используемого устройства и программного стека BLE, так что это ограничение отличается для разных устройств и версий стека на определенном устройстве. Также количество пакетов зависит от выполняемых операций устройства, так что радиотракт может быть вынужден следить за другими событиями, и количество пакетов, отправляемых на одном соединении, может не достичь максимума, который допускает стек. Например, это количество различается между iOS и Android, и также меняется в зависимости от версии OS, работающей на устройстве.

Иногда полезно динамически обновлять параметры соединения, основываясь на специфике использования в каждом случае. Однако имейте в виду, что именно master (устройство Central, клиент GATT) отвечает за принятие решения по обновлению параметров.

Data Length Extensions (DLE). Эта функция позволяет пакету переносить увеличенный объем полезной нагрузки (до 251 байт против 27, когда DLE запрещена). DLE была представлена в спецификации версии Bluetooth 4.2.

ATT Maximum Transmission Unit (ATT MTU). ATT MTU определяет максимальное количество данных, которое может быть обработано передатчиком и приемником, и которое может хранить их буфер.

Значение MTU влияет на объем служебных данных (в частности, к служебным дополнительным данным относится заголовок ATT, который равен 3 байтам). Минимальный допустимый MTU ATT составляет 27 байт. Это позволяет получить максимум 20 байт полезной нагрузки ATT (3 байта используются для заголовка ATT, а 4 байта - для заголовка L2CAP).

Со стороны спецификации нет ограничения, насколько большим может быть MTU, однако каждый стек может накладывать на MTU свои ограничения. Например, если разрешить DLE, то можно передать до 251 – 4 = 247 байт (после вычитания размера заголовка L2CAP). После учета заголовка ATT (3 байта) у нас останется 244 байта реальной полезной нагрузки (ATT payload data). Если MTU составляет по меньшей мере 247 байт, то MTU будет помещаться в 1 пакет. Если MTU больше 247 байт, то MTU будет охватывать несколько пакетов, что снизит пропускную способность (из-за наличия служебных данных пакета и интервалов между пакетами).

Эффективное значение MTU определяется минимальным значением ATT MTU, которое поддерживает и клиент, и сервер. Например, если клиент поддерживает ATT MTU 100 байт, и сервер отвечает, что он поддерживает ATT MTU 150 байт, то клиент примет решение, что будет использоваться MTU 100 байт.

Тип операции. Обмен данными между клиентом и сервером может осуществляться разными способами: запись с ответом (Write with Response) против записи без ответа (write without Response), индикации (Indications) против оповещений (Notifications). Если нужна высокая пропускная способность, то мы можем использовать запись без ответа (Write without Response) или оповещения (Notifications) для передачи данных от клиента к серверу и от сервера к клиенту. Эти операции устраняют необходимость для противоположного устройства подтверждать прием данных и отвечать до того, как может быть отправлен следующий блок данных.

Inter Frame Space (IFS). IFS определяет интервал времени между следующими друг за другом пакетами (150 мкс). Цитата из спецификации Bluetooth:

4.1.1 Inter Frame Space

Временной интервал между двумя соседними пакетами на одном и том же индексе канала называется Inter Frame Space. Он определяет время от конца последнего бита предыдущего пакета до начала первого бита следующего пакета. Inter Frame Space обозначается как T_IFS, и должно быть 150 мкс.

Передача пустых пакетов. Если устройство, принимающее данные, не имеет данных для обратной передачи, то согласно спецификации Bluetooth оно все еще должно передать пустой пакет.

Packet overhead (служебные данные). Как мы видели из рисунка 1, пакет переносит дополнительные (служебные) данные, которые не могут переносить полезную нагрузку приложения (ATT data). За счет этих байт теряется часть пропускной способности BLE.

[Вычисление пропускной способности приложения]

Как уже упоминалось выше, существует несколько переменных, влияющих на пропускную способность по данным:

• Используемая версия Bluetooth и используемый PHY.
• DLE: Data Length Extensions - разрешена эта функция или нет.
• Значение ATT MTU.
• Интервал соединения.
• Максимальное количество пакетов на событие соединения.
• Операция (writes with Responses против writes without Responses, и Notification против Indication).
• Inter Frame Space (IFS): 150 микросекунд.

Версия Bluetooth и PHY определяют скорость передачи сирых данных (raw data transfer rate). Например, если мы используем Bluetooth версии 4.2, и LE 1M PHY, то физическая скорость передачи составит 1 Mbps. С другой стороны, если мы используем Bluetooth 5 LE Coded PHY с S=8, то скорость снизится до 125 kbps.

DLE, ATT MTU, интервал соединения, максимальное количество пакетов на интервал соединения, тип операции и IFS - все это определяет времени радиоэфира, которая задействована для реальной передачи данных.

Формат пакета играет большую роль в том, какую часть из передаваемых данных занимают полезные данные приложения. LE 1M PHY и LE 2M PHY имеют одинаковый формат пакета. LE Coded PHY имеет сильно отличающийся формат пакета, так что мы рассмотрим его случай отдельно.

LE 1M PHY и LE 2M PHY. Рассмотрим снова формат пакета на рис. 1 в контексте используемого PHY. Объем служебных данных для каждого PHY немного отличается. Преамбула составляет 1 байт для 1M PHY и 2 байта для 2M PHY. Поле MIC опциональное, которое используется только для шифрованных соединений. Для упрощения рассмотрим только нешифрованные соединения - для случая использования шифрования добавится 4 байта служебных данных.

Для LE Coded PHY формат пакета выглядит следующим образом (информация взята из Bluetooth 5.0 spec Vol 6, Part B, Section 2.2):

BLE max LL packet for LE Coded PHY fig03

Рис. 3. Формат пакета слоя соединения (Link Layer, LL) для LE Coded PHY.

Для простоты предположим следующее:

• Шифрование не разрешено (поле MIC не включено в пакет).
• Нас интересует пропускная способность в одном направлении (например от Master к Slave), так что мы подразумеваем, что в обратном направлении передаются только пустые пакеты.
• Применена операция Writes without Responses (что поможет достичь максимальной пропускной способности при передаче большого объема данных).

Вычисление пропускной способности, по шагам:

Шаг 1. Определение используемого PHY и физической скорости передачи сырых данных (raw data transfer rate). Например, для 1M PHY это 1 Mbps, для Coded PHY и S=8 это 125 kbps.

Шаг 2. Определим время, которое займет отправка одного пакета данных и пустого пакета от получателя.

BLE max packets exchange fig04

Рис. 4. Интервалы времени, затрачиваемые на передачу пакета.

Время Data_Packet_Time, за которое может быть отправлен 1 пакет, будет включать следующие интервалы:

Data_Packet_Time = время передачи пустого пакета + IFS + время передачи пакета актуальных данных + IFS.

Время на передачу пустого пакета Time_empty_packet:

Time_empty_packet = размер пустого пакета / raw data rate

Пустой пакет содержит следующие поля:

Preamble + Access Address + LL Header + CRC

Для 1M PHY размер Preamble будет 1 байт, итого размер пустого пакета составит 1 + 4 + 2 + 3 = 10 байт, или 80 бит. Для 2M PHY размер пустого пакета будет 88 бит, потому что Preamble состоит из 2 байт.

Из всего этого получается, что время передачи пустого пакета для 1M PHY будет:

Time_transmit_empty_packet = размер пустого пакета / raw data rate = 80 бит / 1 мегабит в секунду = 80 мкс.

Пакет данных будет содержать все поля, перечисленные на диаграмме формата пакета (рис. 1), за исключением поля MIC (шифрование запрещено). Время передачи пакета данных Time_transmit_data_packet:

Time_transmit_data_packet = размер пакета данных / raw data rate

Если DLE разрешено, и ATT MTU равно максимальному количеству байт в одном пакете: 247, то мы рассчитать размер пакета данных следующим образом: 1 + 4 + 2 + 4 + 247 + 3 = 265 байт, или 265*8 = 2088 бит.

Time_transmit_data_packet = 2088 бит / 1 Mbps = 2.088 мкс

Теперь учтем интервалы IPS и рассчитаем полное время для передачи пакета Data_Packet_Time:

Data_Packet_Time = Time_transmit_empty_packet + IPS + Time_transmit_data_packet + IPS = 80 + 2*150 + 2088 = 2.468 мкс

Для сравнения рассчитаем это время для 2M PHY:

Data_Packet_Time = 88/2 + 2*150 + (2 + 4 + 2 + 4 + 247 + 3)*8/2 = 1392 мкс

Когда DLE разрешено, и ATT MTU установлено меньше 247, мы получим больше накладных расходов, и общая пропускная способность уменьшится (потому что данные, которые по размеру больше чем ATT MTU, будут для передачи делиться на большее количество пакетов). Например, если ATT MTU установлено на 158, то чтобы передать 244 байта данных приложения, нам понадобится передать два пакета вместо одного, в результате чего пропускная способность снизится, потому что на тот же объем полезных данных будет приходиться большее количество служебных данных, и увеличится время, затрачиваемое на IFS. В другом сценарии функция DLE может быть отключена (размер полезной нагрузки до 27 байт), и ATT MTU больше 27 байт. Здесь также понадобится передавать большее количество пакетов для того же самого объема данных, что снизит общую пропускную способность.

Примечание: для вычисления времени передачи пакета данных LE Coded PHY можно использовать тот же метод.

Шаг 3. Определение, сколько пакетов может быть передано во время одного интервала соединения. Этот расчет не всегда чисто математический - нужно будет учитывать ограничения используемого стека и устройства. Максимум передаваемых пакетов в одном интервале соединения для iOS и Android может меняться в зависимости от версии OS, так что это не всегда просто определить. При этом в MCU SDK поставщика обычно в документации указывает максимум. Также полезно сделать тестовую передачу, и методом проб и ошибок и выяснить, что поддерживает ваше устройство.

После того, как был определен поддерживаемый максимум, можно вычислить, сколько теоретически поместится пакетов на выбранном интервале соединения. Например, если выбран интервал соединения 7.5 мс (самый маленький интервал, разрешенный спецификацией), то для примера расчетов, приведенных выше (1M PHY, функция DLE разрешена):

MAX количество пакетов данных на интервал соединения = [connection interval / Data_Packet_Time]

Здесь значение в квадратных скобках [ ] округляется до целого числа. Получается:

[7.5*1000 мкс / 2468 мкс] = 3 пакета

Обычно это число не реалистичное, поскольку существуют задержки между пакетами, посылаемых в соседних событиях соединения. Так что для нашего примера мы возьмем 2 пакета вместо 3.

Шаг 4. Теперь, когда мы определили максимальное количество пакетов, которое может быть передано на одном интервале соединения, мы можем вычислить пропускную способность по передаче данных:

Количество данных на интервал соединения / интервал соединения = Количество пакетов на интервал соединения * размер данных на пакет / интервал соединения.

Пропускная способность:

2 * 244 * 8 бит / 7.5 мс = 520533 бит/сек ~= 508 kbps.

[Тестирование и вычисление пропускной способности между двумя nRF52 DK]

В этой секции мы запустим несколько тестов по передаче данных, вычислим пропускную способность по описанной выше процедуре, и затем сравним с измеренной пропускной способностью, которую показывает приложение, запущенное на плате разработчика nRF52 DK [3]. Тесты выполняются на основе демонстрационного приложения, предоставленного Nordic Semiconductor [7]. Исходный код этого приложения выложен на GitHub [8].

Код firmware сообщил о следующем значении пропускной способности:

Time: 36.11 seconds elapsed.
Throughput: 232.29 Kbits/s.
Sent 1048580 bytes of ATT payload.

[Вычисление пропускной способности]

При MTU 23 байта DLE реально не влияет на пропускную способность и размеры пакетов.

Time_transmit_data_packet = data packet size / raw data rate = 1 + 4 + 2 + 4 + 23 + 3 байт / 1 Mbps = 37*8 бит / 1 Mbps = 296 мкс

Data_Packet_Time = Time_transmit_empty_packet + IFS + Time_transmit_data_packet + IFS = 80 + 150 + 296 + 150 = 676 мкс

MAX количество пакетов данных на интервал соединения = [connection interval / Data_Packet_Time] = [7.5 мс / 676 мкс] = [11.09] = 11 пакетов

Общее количество данных, передаваемое за интервал соединения составит 11 * 20 байт = 11 * 20 * 8 бит = 1760 бит. Пропускная способность вычисляется как количество данных на интервал соединения / интервал соединения = Количество пакетов на интервал соединения * размер данных на пакет / интервал соединения. Получается:

1760 бит / 7.5 мс = 234.67 Kbits/s

Как можно видеть, вычисленное значение оказалось близким к измеренному реальному.

Код firmware сообщил о следующем значении пропускной способности:

Time: 27.23 seconds elapsed.
Throughput: 307.96 Kbits/s.
Sent 1048580 bytes of ATT payload.

[Вычисление пропускной способности]

Time_transmit_data_packet = data packet size / raw data rate = 2 + 4 + 2 + 4 + 23 + 3 байт / 2 Mbps = 38*8 бит / 2 Mbps = 152 мкс

Data_Packet_Time = Time_transmit_empty_packet + IFS + Time_transmit_data_packet + IFS = 44 + 150 + 152 + 150 мкс = 496 мкс

MAX количество пакетов данных на интервал соединения = [connection interval / Data_Packet_Time] = [7.5 мс / 512 мкс] = [15.12] = 15 пакетов

Общее количество данных, передаваемое за интервал соединения составит 15 * 20 байт = 15 * 20 * 8 = 2400 бит

Пропускная способность вычисляется как количество данных на интервал соединения / интервал соединения = Количество пакетов на интервал соединения * размер данных на пакет / интервал соединения. Получается:

2400 бит / 7.5 мс = 320 Kbits/s

Как можно видеть, вычисленное значение оказалось довольно близким к измеренному реальному.

Код firmware сообщил о следующем значении пропускной способности:

Time: 17.53 seconds elapsed.
Throughput: 478.36 Kbits/s.
Sent 1048730 bytes of ATT payload.

[Вычисление пропускной способности]

Time_transmit_data_packet = data packet size / raw data rate = 1 + 4 + 2 + 4 + 158 + 3 байт / 1 Mbps = 172*8 бит / 1 Mbps = 1376 мкс

Data_Packet_Time = Time_transmit_empty_packet + IFS + Time_transmit_data_packet + IFS = 80 + 150 + 1376 + 150 мкс = 1756 мкс

MAX количество пакетов данных на интервал соединения = [connection interval / Data_Packet_Time] = [7.5 мс / 1756 мкс] = [4.27] = 4 пакета

За интервал соединения будет передано:

4 * 155 байт = 4 * 155 * 8 бит = 4960 бит

Пропускная способность:

4960 бит / 7.5 мс = 661.33 Kbits/s

Код firmware сообщил о следующем значении пропускной способности:

Time: 8.45 seconds elapsed.
Throughput: 992.07 Kbits/s.
Sent 1048712 bytes of ATT payload.

[Вычисление пропускной способности]

Time_transmit_data_packet = data packet size / raw data rate = 2 + 4 + 2 + 4 + 247 + 3 байт / 2 Mbps = 262*8 бит / 2 Mbps = 1048 мкс

Data_Packet_Time = Time_transmit_empty_packet + IFS + Time_transmit_data_packet + IFS =  44 + 150 + 1048 + 150 мкс = 1392 мкс

MAX количество пакетов данных на интервал соединения = [connection interval / Data_Packet_Time] = [7.5 мс / 1392 мкс] = [5.39] = 5 пакетов

За интервал соединения будет передано:

5 * 244 байт = 5 * 244 * 8 бит = 9760 бит

Пропускная способность:

9760 бит / 7.5 мс = 1301.33 Kbits/s

Обратите внимание, что в тестах 3 и 4 количество пакетов на интервал соединения невелико, и любая разница между тем, что мы рассчитываем и что измерили, окажет значительное влияние на фактическую пропускную способность. Например, если количество пакетов на интервал соединения оказывается 4 вместо 5 (как в последнем тесте), то вычисленная пропускная способность станет 1041.1 Kbps вместо 1301.33 Kbps (что показывает большое различие, и может объяснить разницу между экспериментальными и вычисленными данными).

Код firmware сообщил о следующем значении пропускной способности:

Time: 6.34 seconds elapsed.
Throughput: 1322.33 Kbits/s.
Sent 1048712 bytes of ATT payload.

[Вычисление пропускной способности]

Time_transmit_data_packet = data packet size / raw data rate = 2 + 4 + 2 + 4 + 247 + 3 байт / 2 Mbps = 262*8 бит / 2 Mbps = 1048 мкс

Data_Packet_Time = Time_transmit_empty_packet + IFS + Time_transmit_data_packet + IFS =  44 + 150 + 1048 + 150 мкс = 1392 мкс

MAX количество пакетов данных на интервал соединения = [connection interval / Data_Packet_Time] = [50 мс / 1392 мкс] = [35.92] = 35 пакетов

За интервал соединения будет передано:

36 * 244 байт = 35 * 244 * 8 бит = 68320 бит

Пропускная способность:

70272 бит / 50 мс = 1366.4 Kbits/s

Код firmware сообщил о следующем значении пропускной способности:

Time: 6.11 seconds elapsed.
Throughput: 1371.82 Kbits/s.
Sent 1048712 bytes of ATT payload.

[Вычисление пропускной способности]

Time_transmit_data_packet = data packet size / raw data rate = 2 + 4 + 2 + 4 + 247 + 3 байт / 2 Mbps = 262*8 бит / 2 Mbps = 1048 мкс

Data_Packet_Time = Time_transmit_empty_packet + IFS + Time_transmit_data_packet + IFS =  44 + 150 + 1048 + 150 мкс = 1392 мкс

MAX количество пакетов данных на интервал соединения = [connection interval / Data_Packet_Time] = [400 мс / 1392 мкс] = [287.36] = 287 пакетов

За интервал соединения будет передано:

287 * 244 байт = 287 * 244 * 8 бит = 560224 бит

Пропускная способность:

560224 бит / 400 мс = 1400.56 Kbits/s

[Оптимизация для максимальной пропускной способности]

Исходя из факторов, которые мы рассмотрели, можно отметить следующие моменты для реализации высокой пропускной способности для передачи данных:

• Всегда разрешайте DLE.

Очевидно, что если использовать Bluetooth v4.1 или более старую версию Bluetooth, то эта опция неприменима. Однако следует убедиться в возможности использования DLE, потому что она позволяет максимально повысить эффективность передачи данных пакетами.

• Используйте LE 2M PHY.

Если Вы знаете, что устройства на обоих сторонах обмена поддерживают Bluetooth 5, то использование LE 2M PHY самый лучший способ максимально увеличить пропускную способность. Использование LE 2M PHY будет также снижать энергопотребление, и тем самым Вы убьете сразу двух зайцев!

• Используйте Notifications и Writes without Responses.

Использование этих операций поможет устранить передачу нежелательных пакетов (если сравнивать с Indications и обычными операциями записи, которые требуют от стороны приема передачи подтверждения для каждого принятого пакета).

• Выберите значение ATT MTU не менее 247 байт.

Это позволит уменьшить долю накладных расходов в байтах пакетов.

• Выберите интервал соединения так, чтобы добиться максимального количества пакетов, которое помещается в интервал соединения.

Однако имейте при этом в виду, что интервал соединения влияет на энергопотребление. Чем меньше этот интервал, тем устройство будет больше потреблять энергии, потому что увеличивается время активного состояния радиотракта по сравнению с неактивным состоянием. Также Вы можете захотеть выбрать этот интервал не слишком большим, потому что слишком большой интервал нарушит взаимодействие с пользователем в реальном времени (более длинный интервал соединения приводит к повышенной задержке). Последнее, что необходимо сделать - определить ограничения Ваших устройств в системе в касательно максимального поддерживаемого количества пакетов на интервал соединения.

[Вместо заключения]

Значения пропускной способности, вычисленные выше, все еще остаются теоретическими, и могут не соответствовать измеренной пропускной способности данных на практике и в реальных условиях. Однако они все равно дают хорошую отправную точку оценки того, что стоит ожидать (по крайней мере для максимума). Радиопомехи и ошибки приема также влияют на пропускную способность (повторные передачи, потеря данных и закрытие соединения в результате снизят пропускную способность). Это может быть вызвано наличием других устройств, использующих тот же самый диапазон 2.4 ГГц, большим расстоянием между устройствами, наличием между ними препятствий, микроволновок и т. п.

[Ссылки]

1. Bluetooth 5 speed: How to achieve maximum throughput for your BLE application site:novelbits.io.
2. Bluetooth 5 Advertisements: Everything you need to know site:novelbits.io.
3. nRF52 DK site:nordicsemi.com.
4. Пропускная способность BLE.
5. Bluetooth 5 Advertisements: Everything you need to know site:novelbits.io.
6. BLE connection intervals and events in under 5 minutes site:novelbits.io.
7. Throughput and long range demo site:devzone.nordicsemi.com.
8. NordicPlayground / nrf528xx-ble-throughput-demo site:github.com.
9. Maximizing BLE Throughput on iOS and Android site:punchthrough.com.
10. Maximizing BLE Throughput Part 2: Use Larger ATT MTU site:punchthrough.com.
11. How do I calculate throughput for a BLE link? site:devzone.nordicsemi.com.
12. How to calculate effective throughput in nRF52 site:devzone.nordicsemi.com.
13Bluetooth: аббревиатуры и термины.

 

Добавить комментарий


Защитный код
Обновить

Top of Page