BLE: хост-стек - HCI - контроллер

Я новичок в программировании BLE/Bluetooth. Как известно,BLE/Bluetooth представляет собой целый модуль. Недавно я обнаружил, что NimBLE предоставляет часть стека хоста или контроллера Bluetooth. https://github.com/apache/mynewt-core. Здесь они упоминают, что он поддерживает смешивание и сопоставление любого стека хоста с любым контроллером.

  1. Итак, является ли уровень HCI (через который взаимодействует стек хостов) и реализация контроллера (нижний уровень Bluetooth) всех модулей одинаковыми или это зависит от поставщика?

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

Я предположил, что часть контроллера модуля Bluetooth /BLE имеет базовую секцию RF и связи, которая будет совместима для всех модулей. Я извиняюсь, если вопрос тривиален.

1 ответ

Решение

Любой стек хостов с интерфейсом hci должен работать с любым контроллером hci, если они оба поддерживают один и тот же метод транспорта (UART, USB и т. Д.).

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

Также хост и контроллер должны иметь общий набор функций. Например, вы не можете многое сделать с хостом, который поддерживает только Bluetooth classic, и контроллером, который поддерживает только BLE.

Некоторые контроллеры hci реализуют пользовательские команды поставщика, чтобы предлагать дополнительные функции по сравнению со стандартными командами, такие как, например, установка настраиваемого общедоступного адреса устройства Bluetooth. Хост также должен поддерживать эти команды, чтобы использовать их.

Другие вопросы по тегам