1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/Jieli-Tech-fw-AC63_BT_SDK

 / Детали:

ЗАМЕЧАНИЕ: Метод увеличения скорости передачи данных BLE для AC63N

Предстоит сделать
Владелец
Создано  
05.03.2025

Ширина передачи данных по протоколу BLE зависит от двух основных факторов: периода связи и количества передаваемых данных в каждый момент связи.

1. Период связи:

Андроид-устройства обычно поддерживают период до 10 мс, а устройства Apple — до 15 мс.

2. Количество передаваемых данных в каждый момент связи:

Это относится к размеру каждого пакета и количеству таких пакетов, которое можно отправить.

3. Теоретический расчет пропускной способности BLE:

При периоде связи 15 миллисекунд, каждое базовое соединение может отправить 4 пакета (число пакетов зависит от устройства-источника).

Если длина PDU составляет 27 байт, то полезная нагрузка равна 20 байтам, и скорость передачи будет (1000 / 15) * 20 * 4 ≈ 5 КБ/с.

Если длина PDU составляет 251 байт, то полезная нагрузка равна 244 байтам, и скорость передачи будет (1000 / 15) * 244 * 4 ≈ 63 КБ/с. (Должны быть поддерживаемы оба устройства DLE и 2M)

--------------------------------------------------------------------------------------------

Пример использования trans_data в версии AC63_v2.1.0:## 1. Увеличение размера локального MTU ATT и размера cbuf уровня приложения.

#define ATT_LOCAL_MTU_SIZE    (517) /* Размер локального MTU, диапазон: 23–517, конфигурация через интерфейс ble_vendor_set_default_att_mtu */
#define ATT_SEND_CBUF_SIZE    (ATT_LOCAL_MTU_SIZE * 5) /* cbuf — это вторичный кэш контроллера для отправки пакетов */

Обычно клиентская сторона активирует обмен MTU; однако если клиент не активирует, сервер также может использовать интерфейс для активации обмена MTU (ble_api.h)

void att_server_set_exchange_mtu(u16 con_handle);
```/* Успешность изменения размера MTU отслеживается через событие ATT_EVENT_MTU_EXCHANGE_COMPLETE, которое включает значение нового размера MTU */

2. Уменьшение периода связи Bluetooth до минимального значения 7.5 мс (пассивная роль устройства).

/* Успешность изменения периода связи отслеживается через событие HCI_SUBEVENT_LE_CONNECTION_UPDATE_COMPLETE */
Ссылка: https://gitee.com/Jieli-Tech/fw-AC63_BT_SDK/issues/I4MEA5

static const struct conn_update_param_t trans_connection_param_table[] = {
    {6, 9, 0, 400},  /* Параметры соединения, запрошенные Android */
    {6, 12, 0, 400}, /* Параметры соединения, запрошенные iOS */
    {16, 24, 0, 400},/* Параметры соединения, запрошенные iOS */
};

3. Изменение максимального количества пакетов данных, передаваемых за один цикл связи, контроллером (рекомендовано ≤10, окончательное количество определяется основным устройством)

const int config_btctlr_le_rx_nums = 10; /* Максимальное количество пакетов данных, которые могут быть приняты за одну связь */
const int config_btctlr_le_acl_total_nums = 10; /* Максимальное количество пакетов данных, которые могут быть отправлены за одну связь */
```## 4. Включение поддержки расширения длины данных (Data Length Extension supported), сокращённо DLE, позволяющее настроить длину каждого PDU-пакета ACL в диапазоне 27–251 байт (основное устройство должно поддерживать Bluetooth версии 4.2 или выше)
```C 
/* Функциональные возможности Bluetooth */
const uint64_t config_btctler_le_features = SET_ENCRYPTION_CFG | LE_DATA_PACKET_LENGTH_EXTENSION;
const int config_btctler_le_acl_packet_length = 251; /* Длина полезной нагрузки пакета данных, диапазон: 27–251 */

Как основное, так и вспомогательное устройства могут инициировать запрос DLE для обмена данными; обычно это делает основное устройство, можно использовать соответствующий интерфейс; для вспомогательного устройства вызывать этот интерфейс по умолчанию не требуется.
Если изменения вступили в силу, то есть соответствующее событие сообщение HCI_SUBEVENT_LE_DATA_LENGTH_CHANGE.
Конкретные шаги вызова кода можно найти в SDK версии V2.2.1, где приведены примеры вызова.

int ble_comm_set_connection_data_length(u16 conn_handle, u16 tx_octets, u16 tx_time);
ble_comm_set_connection_data_length(conn_handle, config_btctler_le_acl_packet_length, 2120);

внимание: если вспомогательное устройство поддерживает характеристики DLE, размер ATT MTU, доступный обычно для смартфонов, также увеличивается. Дополнительно ATT_LOCAL_MTU_SIZE и config_btctler_le_acl_packet_length конфигурация связи, смотрите https://gitee.com/Jieli-Tech/fw-AC63_BT_SDK/issues/I599P4

5. Включение поддержки пакетов 2М для повышения скорости физического передачи данных. Настройте свойство feature LE_2M_PHY, (основное устройство должно поддерживать Bluetooth v5.0 или более новую версию)

/*Bluetooth версия features*/
const uint64_t config_btctler_le_features = SET_ENCRYPTION_CFG | LE_2M_PHY;

/*как основное, так и вспомогательное устройства могут инициировать запрос 2М пакета для обмена данными; обычно это делает основное устройство, можно использовать соответствующий интерфейс; для вспомогательного устройства вызывать этот интерфейс по умолчанию не требуется*/
/*если изменения вступили в силу, то есть соответствующее событие сообщение HCI_SUBEVENT_LE_PHY_UPDATE_COMPLETE*/
/*конкретные шаги вызова кода можно найти в SDK версии V2.2.1, где приведены примеры вызова*/
int ble_comm_set_connection_data_phy(u16 conn_handle, u8 tx_phy, u8 rx_phy, u16 phy_options);
ble_comm_set_connection_data_phy(conn_handle, CONN_SET_2M_PHY, CONN_SET_2M_PHY, CONN_SET_PHY_OPTIONS_NONE);

Комментарий (0)

GitLife Service Account Задача создана
GitLife Service Account добавлено
 
蓝牙BLE
label.
GitLife Service Account добавлено
 
feature
label.
Развернуть журнал операций

Вход Перед тем как оставить комментарий

Статус
Ответственный
Контрольная точка
Pull Requests
Связанные запросы на слияние могут быть закрыты после их объединения
Ветки
Дата начала   -   Крайний срок
-
Закрепить/Открепить
Приоритет
Участники(1)
1
https://api.gitlife.ru/oschina-mirror/Jieli-Tech-fw-AC63_BT_SDK.git
git@api.gitlife.ru:oschina-mirror/Jieli-Tech-fw-AC63_BT_SDK.git
oschina-mirror
Jieli-Tech-fw-AC63_BT_SDK
Jieli-Tech-fw-AC63_BT_SDK