Перейти к содержанию

Обзор Bluetooth

Обзор

В этом руководстве описано, как планировать и реализовывать Bluetooth-подключение устройств SF32. Основное внимание уделено практическим решениям, влияющим на конструкцию изделия: выбору между BLE и двухрежимным Bluetooth, проектированию сервисов GATT, выбору профилей, настройке параметров соединения, сопряжению и безопасности, LE Audio, а также совместной работе Bluetooth с графикой, аудио и датчиками.

SF32 разделяет прикладную обработку и задачи Bluetooth-контроллера со строгими временными требованиями. Прикладной процессор обычно выполняет логику изделия и пользовательский интерфейс, а Bluetooth-процессор или процессор низкого энергопотребления отвечает за временные параметры канального уровня и планирование работы радиотракта. Размещение стека хоста и сервисов GATT зависит от устройства и конфигурации SDK. Не считайте, что все сервисы работают на прикладном процессоре: проверьте конфигурацию ядер и межъядерный обмен в выбранном примере.

Подробное описание подсистемы см. в статье Bluetooth-процессор.

Обращайтесь к этой странице при проектировании беспроводного взаимодействия изделия: определите необходимые роли и профили, ожидаемые пользователями скорость отклика и время автономной работы, а также распределение обязанностей между телефоном, радиотрактом и прикладной прошивкой. Это руководство по проектированию, а не замена проверке совместимости с целевыми телефонами и аксессуарами.

Определите требования изделия к подключению

До написания кода GATT определите реальные потребности изделия:

  • Достаточно BLE или нужен двухрежимный Bluetooth (классический Bluetooth + BLE)?
  • Требуется ли Bluetooth-аудио: классическое (A2DP/AVRCP/HFP) или LE Audio?
  • Каковы типичные требования к интервалу соединения, задержке и пропускной способности?
  • Как часто должен пробуждаться прикладной процессор и как долго он может оставаться в режиме сна?
  • Нужно ли изделию взаимодействовать с существующими сервисами на телефоне (уведомления, управление воспроизведением, вызовы) или достаточно собственного сопутствующего приложения?
  • Какова требуемая дальность? Какие ограничения накладывают антенна и корпус и какие цели заданы для RF-сертификации?
  • Будут ли обновления прошивки передаваться по Bluetooth?

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

Выберите BLE, классический Bluetooth или двухрежимный Bluetooth

Bluetooth Low Energy (BLE)

Для большинства подключённых носимых устройств и датчиков BLE — оптимальный вариант по умолчанию: обмен данными происходит периодически и по событиям, среднее энергопотребление невелико, а поддержка широко распространена в ОС телефонов. Типичные BLE-устройства — фитнес-браслеты, датчики здоровья, маяки и каналы настройки или управления через сопутствующее приложение.

Классический и двухрежимный Bluetooth

Классический Bluetooth нужен, если изделие должно передавать потоковое аудио (A2DP/AVRCP), поддерживать громкую связь (HFP), последовательный канал данных (SPP) или работать с существующими классическими профилями. В двухрежимном Bluetooth требования к планированию радиосвязи и совместной работе выше, чем в системе только с BLE. Выделенный Bluetooth-процессор как раз позволяет изолировать эту нагрузку от остальной системы.

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

Выберите подходящее устройство SF32

Выбирайте устройство по необходимым функциям связи, а не только по тактовой частоте.

Таблица: выбор устройства SF32
Требование Типичный выбор устройства
Носимое устройство или датчик только с BLE SF32LB55x
Экономичное устройство с двухрежимным Bluetooth (аудиоаксессуар или модуль) SF32LB52x
Двухрежимный Bluetooth и расширенные возможности дисплея/UI SF32LB56x
Двухрежимный Bluetooth и два прикладных ядра для графики и локального аудио SF32LB57x
Флагманское изделие с Bluetooth, графикой, ИИ и большим объёмом памяти SF32LB58x
Достаточно отдельного ядра низкого энергопотребления только для Bluetooth-контроллера SF32LB52x
На ядре низкого энергопотребления требуется выполнять дополнительные постоянно активные задачи, программируемые пользователем SF32LB55x / SF32LB56x / SF32LB58x

Если изделию также нужны дисплей, память или ИИ, сверьте требования со страницами Обзор графики и ИИ-ускоритель.

Сервисы GATT и платформа Sibles

SiFli-SDK предоставляет Sibles для регистрации и использования сервисов GATT. GATT определяет иерархию сервисов и характеристик, а также доступ к атрибутам; GAP отвечает за обнаружение устройств, передачу рекламных пакетов, установление соединения и соответствующие роли. Эти функции дополняют друг друга: GATT не является уровнем поверх GAP. Начните с наиболее подходящего примера SDK, а не создавайте базу GATT с нуля.

В SDK есть примеры реализации нескольких стандартных и специфичных для производителя профилей:

Таблица: сервисы GATT и платформа Sibles
Профиль/сервис Типичное применение
HRPC (клиент, собирающий измерения частоты сердечных сокращений) Получение измерений от внешнего датчика в роли клиента GATT; для устройств фитнеса и контроля здоровья.
DISS (Device Information Service) Передача телефону сведений об изготовителе, модели и версии прошивки.
CTS (Current Time Service) Синхронизация времени устройства с телефоном.
BASC / CSCPC / CPPC Клиентские профили для данных о батарее, скорости/частоте вращения педалей и мощности при езде на велосипеде.
HID over GATT Эмуляция клавиатур, пультов и других устройств ввода.
Клиент ANCS (Apple Notification Center Service) Чтение уведомлений iOS на устройстве.
Клиент AMS (Apple Media Service) Управление воспроизведением мультимедиа на iOS с устройства.
Профиль последовательной передачи данных Пользовательский двусторонний обмен по BLE, похожий на SPP, но работающий поверх GATT.

Повторно используйте регистрацию, обработку событий и проверки безопасности из наиболее подходящего примера. Для стандартного профиля сохраняйте его UUID и предписанное поведение; если модель данных изделия требует своего сервиса, используйте собственные UUID. Цель — использовать проверенную инфраструктуру, а не подгонять каждый протокол приложения под стандартный профиль.

Профили классического Bluetooth

Для изделий с двухрежимным Bluetooth в SDK предусмотрены примеры следующих профилей:

  • SPP — простой двусторонний последовательный обмен, полезный для устаревших сопутствующих приложений и приложений без GATT.
  • A2DP (приёмник и источник) — передача потокового аудио по Bluetooth.
  • AVRCP — управление воспроизведением (пуск/пауза/дорожка/громкость) вместе с соединением A2DP.
  • HFP — громкая связь с ролями HF (устройство громкой связи) и AG (аудиошлюз). Документированный пример HFP реализует HF; поддержку AG отдельно проверьте в выбранной конфигурации SDK.
  • PAN — передача сетевого трафика по Bluetooth, в том числе пример OTA-обновления через PAN.

Аудио и классические профили, как правило, предъявляют более жёсткие требования к временным параметрам и пропускной способности, чем обычное BLE-соединение. Заложите время на проверку совместной работы (см. раздел Совместная работа с другими нагрузками).

Bluetooth-аудио и LE Audio

Выбор зависит от способа передачи аудио:

  • Классическое Bluetooth-аудио — A2DP для потоковой передачи, AVRCP для управления воспроизведением, HFP для вызовов. Это зрелый вариант с широкой совместимостью с существующими телефонами и гарнитурами.
  • LE Audio — использует базовый аудиопрофиль (Basic Audio Profile, BAP), определяющий процедуры работы с потоками LE Audio в режимах unicast и broadcast. В SDK есть примеры источника и приёмника широковещательной передачи, а также пример, сочетающий источник LE Audio broadcast с классическим Bluetooth для изделий, которым в переходный период нужно поддерживать обе технологии.

Оба варианта требуют стабильных временных параметров, буферизации и надёжной передачи аудиоданных, обычно через DMA. Выбирайте SF32LB52x/56x/58x с учётом нужных ролей Bluetooth-аудио и поддерживаемых конфигураций SDK. SF32LB55x поддерживает только BLE и не обеспечивает классическое Bluetooth-аудио; это не означает отсутствия локальных аудиофункций. О DMA и буферах см. Обзор аудио и Bluetooth-процессор.

Порядок реализации сервисов Sibles

Чтобы BLE-сервис было проще сопровождать, используйте следующую схему реализации:

Таблица: порядок реализации сервисов Sibles
Шаг Обязанности прошивки Что проверить
Определить интерфейс сервиса UUID, характеристики, разрешения и поведение уведомлений. Соответствие требованиям сопутствующего приложения и безопасности.
Зарегистрировать сервис Использовать путь Sibles/GATT из наиболее близкого примера SDK. Не создавать отдельную инфраструктуру для одного сервиса.
Выбрать данные для рекламных пакетов BLE Включать только данные, нужные для обнаружения и повторного подключения. Ограничить объём рекламных пакетов BLE и сохранять их содержимое стабильным.
Проверять записи Проверять длину, состояние, разрешения и последовательность команд. Не допускать сбоев прошивки из-за некорректных данных приложения.
Ограничить уведомления необходимыми изменениями Отправлять изменения или пакетные данные, не повторять состояние без необходимости. Сократить активность радио и энергопотребление в простое.
Сохранять состояние Надёжно хранить ключи сопряжения и настройки изделия. Подписки CCCD учитывать отдельно для каждого клиента: сохранять между соединениями для связанных клиентов и сбрасывать к значению по умолчанию для несвязанных. Проверить восстановление после перезапуска и OTA; учитывать изменения базы GATT, а не восстанавливать старые идентификаторы атрибутов (handles) без проверки.

Такой порядок помогает согласовать определение сервиса, интерфейс взаимодействия с приложением телефона, политику безопасности и энергопотребление.

Параметры передачи рекламных пакетов BLE и соединения

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

Эти параметры относятся к соединениям BLE ACL, а не ко всем способам передачи Bluetooth-аудио. Классическое аудио использует временные параметры транспорта BR/EDR; LE Audio — изохронные временные параметры CIS или BIS. Не применяйте интервал соединения GATT BLE непосредственно к этим аудиоканалам. Различия описаны во вводном материале Bluetooth SIG по LE.

Таблица: параметры передачи рекламных пакетов BLE и соединения
Параметр Влияние Рекомендации
Интервал передачи рекламных пакетов BLE Скорость обнаружения и энергопотребление при передаче рекламных пакетов Используйте короткий интервал в течение ограниченного периода быстрого обнаружения, затем увеличьте его при ожидании соединения или повторного подключения. Установленное соединение само по себе не требует продолжать передачу рекламных пакетов.
Интервал соединения Время отклика BLE ACL и энергопотребление Больший интервал может снизить среднее потребление при малом объёме трафика; меньший — ускорить реакцию на действия пользователя. Проверьте согласованные параметры, пропускную способность и ток с целевым телефоном.
Периферийная задержка (slave latency в прежних SDK) Позволяет периферийному устройству пропускать события соединения Увеличивает время автономной работы при преимущественно простаивающем соединении; установите 0, если низкая задержка важнее экономии энергии.
Тайм-аут контроля соединения (supervision timeout) Максимальное время без получения корректного пакета данных канального уровня до признания соединения потерянным Слишком короткое значение приводит к разрывам при неустойчивом RF-канале; слишком длинное замедляет повторное подключение после реального обрыва.
Мощность передачи (TX power) Дальность, энергопотребление и совместная работа радиосредств Начните с минимальной настройки, обеспечивающей нужную дальность. Измерьте общие энергозатраты, повторные передачи и совместную работу радиосредств в готовом корпусе: при частых повторных передачах меньшая мощность не обязательно экономичнее.

Для маяков с рекламными пакетами BLE, совместимыми с iBeacon, и сценариев периодической передачи рекламных пакетов в SDK есть отдельные примеры. Они также охватывают синхронизацию с такой передачей при масштабном или однонаправленном вещании. Полное соединение GATT для этих сценариев не требуется.

Интервал соединения, периферийная задержка и тайм-аут контроля соединения должны образовывать допустимую комбинацию, принятую контроллером и удалённым устройством. Запрос обновления не означает, что параметры изменились. Записывайте согласованные значения и проверяйте целевой телефон или аксессуар, включая отклонённые запросы и возврат к настройкам простоя.

Наборы параметров для разных этапов работы изделия

Настраивайте Bluetooth-параметры отдельно для каждого этапа работы, а не ищите одну компромиссную конфигурацию:

Таблица: наборы параметров для разных этапов работы изделия
Этап Типичная цель Направление настройки
Первичное обнаружение Быстрый пользовательский отклик Короткий интервал передачи рекламных пакетов BLE, понятная идентификация устройства, ограниченное время обнаружения.
Повторное подключение Снизить среднее энергопотребление Увеличить интервал передачи рекламных пакетов BLE после тайм-аута; при необходимости использовать адресную передачу или фильтрацию.
Интерактивное управление Низкая задержка Уменьшить интервал соединения, задать низкую периферийную задержку или 0.
Простой при установленном соединении Увеличить время автономной работы Увеличить интервал соединения, задать ненулевую периферийную задержку и свести уведомления к минимуму.
Передача OTA по BLE Пропускная способность и надёжность Короткий интервал, нулевая периферийная задержка, консервативное значение тайм-аута контроля соединения.
Аудио Стабильные временные параметры Настраивать параметры с учётом длительности кадров кодека и глубины буферов.

Документируйте переходы между этапами. Многие «случайные» проблемы с энергопотреблением или задержкой Bluetooth на деле возникают потому, что после смены состояния изделие остаётся в неправильном режиме.

Сопряжение, bonding и безопасность

BLE может установить соединение без сопряжения. Сопряжение создаёт ключи безопасности, а bonding (сохранение ключей) позволяет использовать их при последующих соединениях. Определите, каким сервисам нужны шифрование, аутентификация и постоянное хранение ключей, вместо обязательного bonding для всех изделий:

  • Заранее выберите Just Works, ввод кода сопряжения (Passkey Entry) или числовое сравнение. Just Works не защищает от атак посредника (MITM): шифрование соединения не означает, что оно аутентифицировано. Учитывайте возможности ввода-вывода обоих устройств и требования безопасности изделия; см. требования безопасности Bluetooth GAP.
  • Для ANCS разрешение на телефоне — отдельное условие, не равнозначное шифрованию соединения или сохранению ключей сопряжения. Обрабатывайте отказ и отзыв разрешения. ANCS и AMS могут появляться и исчезать во время соединения. Отслеживайте Service Changed и повторно обнаруживайте сервис: сопряжение не гарантирует его постоянную доступность.
  • Храните данные bonding согласно рекомендованной в SDK организации хранения и разделов, чтобы сопряжение сохранялось после перезапуска и OTA-обновления.
  • Предусмотрите повторное сопряжение и сценарий «забыть устройство» как в интерфейсе изделия, так и на стороне телефона.
  • Политику безопасности (требования к шифрованию, возможностям ввода-вывода и длине ключа) нужно определить для изделия, а не оставлять без проверки по умолчанию.

Несколько соединений и роли

В SDK есть примеры одновременной работы в центральной и периферийной ролях и нескольких одновременных соединений. Изделие может подключаться к телефону как BLE-периферия и к датчику как центральное устройство либо поддерживать несколько соединений с сопутствующими устройствами. Допустимые сочетания ролей и предел числа соединений проверяйте для устройства, прошивки контроллера, конфигурации SDK, буферов и общей нагрузки радиотракта. Пример не гарантирует одинаковое число доступных соединений для всего семейства.

Если изделию нужна пропускная способность, близкая к пределу соединения, сначала используйте пример SDK по пропускной способности в качестве базового ориентира, прежде чем искать ограничение в коде приложения.

Обновление прошивки OTA по Bluetooth

Обычно используют один из двух способов доставки обновлений:

  • Обновление по BLE в стиле DFU в рамках соединения с периферийным устройством. В примере peripheral_with_ota показано, как подключить обработчики OTA к обычной роли BLE-периферии с GATT.
  • PAN OTA — передача прошивки по сетевому соединению Bluetooth PAN для изделий с двухрежимным Bluetooth, уже использующих PAN для передачи данных.

Для обоих способов до выпуска прошивки спланируйте и проверьте разметку разделов, восстановление после сбоев и откат. При OTA по BLE оцените уменьшение интервала соединения и нулевую периферийную задержку на время передачи, затем восстановите обычные энергосберегающие настройки. PAN OTA использует транспорт классического Bluetooth: пропускную способность и восстановление нужно настраивать отдельно, а не применять параметры соединения BLE.

Совместная работа с другими нагрузками

Bluetooth в SF32 редко работает изолированно: система одновременно выполняет задачи графики, аудио и датчиков, а иногда и внешнего Wi-Fi. Выделенный Bluetooth-процессор снимает большую часть рисков, связанных с временными параметрами канала, однако совместную работу на уровне приложения всё равно нужно учитывать:

  • Длительные критические секции или отключённые прерывания на прикладном процессоре могут задерживать обработку Bluetooth на стороне хоста.
  • Трафик дисплея и PSRAM конкурирует с аудиобуферами Bluetooth за пропускную способность памяти.
  • Слишком частые пробуждения прикладного процессора прерываниями от датчиков могут свести на нет экономию энергии, которую даёт его сон, пока Bluetooth-процессор обслуживает соединение.

Общий взгляд на систему приведён в разделе Совместная работа с другими нагрузками. Проверяйте реалистичные сочетания максимальных нагрузок — например, активный дисплей, аудио и интенсивный BLE-обмен, — а не каждую подсистему по отдельности.

RF, совместимость и подготовка к сертификации

Проверяйте Bluetooth-прошивку с той же тщательностью, что и RF-часть аппаратуры:

  • Проверяйте работу с телефонами разных производителей и версиями ОС, а также сценарии повторного подключения; одного телефона для разработки недостаточно.
  • Проверяйте поведение при устаревших данных bonding, после удаления устройства на телефоне, сброса изделия к заводским настройкам и OTA-обновления.
  • Проверяйте дальность и стабильность пакетов в окончательном корпусе, с аккумулятором, дисплеем и зарядным устройством, в реальных положениях ношения или удержания.
  • Сохраните доступ к RF-тестовым режимам, калибровке и журналам для производства и сертификационной поддержки.
  • Для изделий с большим числом профилей предусмотрите время на квалификационные испытания и проверку профилей. Успешная демонстрация приложения ещё не доказывает совместимость.

Диагностика проблем Bluetooth

Таблица: диагностика проблем Bluetooth
Симптом Что проверить в первую очередь
Обнаружение медленное или ненадёжное Интервал и тип рекламных пакетов BLE, разводка RF-части и согласование антенны.
Частые разрывы при внешне хорошем RF-соединении Не слишком ли короткий тайм-аут контроля соединения, согласованы ли интервалы, нет ли помех при совместной работе радиосредств.
Высокое энергопотребление при «простаивающем» соединении Задана ли ненулевая периферийная задержка, не слишком ли часто просыпается прикладной процессор, нет ли лишнего трафика GATT.
Сбои или пропуски в аудио Опустошение буфера DMA (underrun), конкуренция с трафиком дисплея/PSRAM или ошибки временных параметров и настроек транспорта (BR/EDR для классического аудио; CIS/BIS для LE Audio).
Периодические ошибки сопряжения Хранилище bonding, несовпадение возможностей ввода-вывода, устаревшие данные сопряжения на одной из сторон.
На стенде дальность хорошая, а в корпусе — плохая Расстройка антенны из-за корпуса/аккумулятора/PCB, мощность передачи и согласующая RF-цепь.

Типичные ошибки

  • Выбор устройства только с BLE, хотя изделию уже требуется классическое Bluetooth-аудио.
  • Лишняя повторная реализация инфраструктуры сервисов или подгонка собственной модели данных под неподходящий стандартный профиль.
  • Периферийная задержка, оставленная равной 0 для соединений, которые почти всё время простаивают.
  • Игнорирование проверки совместной работы вплоть до поздней интеграции, когда дисплей, аудио и Bluetooth впервые включаются одновременно.
  • Отношение к сопряжению и bonding как к второстепенной задаче вместо проектирования пользовательского сценария.
  • Пропуск первичной проверки RF-части (антенны, согласующей цепи и точности кварцевого генератора) до последних ревизий PCB.
  • Расчёт на то, что настройка одной лишь прошивки компенсирует неудачную разводку RF-части.

Контрольный список первичной проверки

  • Подтвердите, достаточно ли BLE или нужен двухрежимный Bluetooth, и выберите соответствующее устройство SF32.
  • Найдите наиболее близкие к сценарию изделия примеры сервисов/профилей в SDK.
  • Задайте целевые параметры передачи рекламных пакетов BLE и соединения для обнаружения, активной работы и простоя.
  • Спроектируйте сценарии сопряжения, bonding и «забыть устройство».
  • Проверьте разводку RF-части, согласование антенны и точность кварцевого генератора на реальном оборудовании.
  • Проверьте выбранные профили (сервисы GATT, A2DP/AVRCP/HFP или вещание LE Audio) с настоящим телефоном или эталонным хостом.
  • Проверьте совместную работу дисплея, аудио и датчиков при реалистичной комбинированной нагрузке.
  • Спланируйте и проверьте доставку OTA, если обновления будут передаваться по Bluetooth.
  • Измерьте энергопотребление при подключении в режиме простоя и убедитесь, что прикладной процессор переходит в сон как ожидалось.

Основные выводы

  • Сначала решите, нужен ли только BLE или двухрежимный Bluetooth: от этого зависят выбор устройства и большая часть дальнейшей работы с SDK.
  • В качестве основы используйте примеры сервисов GATT и профилей классического Bluetooth из SDK (HRPC, DISS, CTS, HID, ANCS/AMS, SPP, A2DP, AVRCP, HFP, PAN), а не создавайте их заново.
  • Интервал соединения, периферийная задержка, тайм-аут контроля соединения и мощность передачи — главные параметры компромисса между задержкой, пропускной способностью и энергопотреблением.
  • Для Bluetooth-аудио проверьте нужную роль классического Bluetooth или LE Audio на выбранном устройстве и в выбранной конфигурации SDK, затем спроектируйте и испытайте буферизацию и совместную работу. Утверждение о возможностях всего семейства не заменяет такую проверку.
  • Bluetooth — системная задача: разводка RF-части, тактирование, сценарий сопряжения и совместная работа с графикой, аудио и датчиками не менее важны, чем код GATT.

Список актуальных проектов SDK для классического Bluetooth, BLE и LE Audio см. в разделе Примеры Bluetooth SDK.

Практический способ определить фактическое энергопотребление Bluetooth-устройства см. в разделе Профилирование энергопотребления Bluetooth.

Последнее обновление: