Запускаем новый BLE 5.2-чип BlueNRG-LP от STMicroelectronics

15 февраля

автомобильная электроникасветотехникапотребительская электроникаинтернет вещейST Microelectronicsстатьяинтегральные микросхемыбеспроводные технологиисредства разработки и материалыBLEBluetooth2400 МГцIoTинтернет вещей

Олег Пушкарев (КОМПЭЛ)

Новый чип BlueNRG-LP производства STMicroelectronics идеально подходит для новой разработки устройств с Bluetooth благодаря малому потреблению, отличной дальности связи и невысокой стоимости.

Любая разработка начинается с чтения документации и изучения доступных средств разработки. Для знакомства с основными возможностями BlueNRG-LP можно воспользоваться статьей «Новый чип BlueNRG-LP с поддержкой Bluetooth 5.2 и Long Range – идеальное решение для IoT», а данный материал будет целиком посвящен средствам разработки, включая детальные инструкции по запуску вашего первого приложения.

BlueNRG-LP является обобщенным названием для серии микросхем BlueNRG-3xxx производства компании STMIcroelectronics, которые выпускаются в разных корпусах и различаются размером памяти и количеством выводов (таблица 1). Система-на-Кристалле BlueNRG-LP имеет на борту процессорное ядро Cortex®-M0+ с набором периферийных устройств, таких как АЦП, порты GPIO, I²C, SPI, I²S, таймеры, UART, WDG и RTC, а также радиочасть Bluetooth Low Energy (BLE). Микросхема сертифицирована как устройство BLE 5.2 с поддержкой режима повышенной дальности LongRange (Compliant with Bluetooth® Low Energy SIG core specification version 5.2).

Таблица 1. Микросхемы BlueNRG-LP в корпусах QFN*

Наименование Количество выводов Размер, ДШВ, мм Корпус Память Температурный
диапазон, ºC
BlueNRG-355AC 32 5x5x1 QFN 256 кбайт Flash, 64 кбайт RAM -40…85
BlueNRG-355MC 48 6x6x0,9
BlueNRG-355MT 48 -40…105
BlueNRG-345AC 32 5x5x1 QFN 256 кбайт Flash, 32 кбайт RAM -40…85
BlueNRG-345MC 48 6x6x0,9
BlueNRG-345MT 48 -40…105
* Планируются к выпуску также микросхемы в миниатюрных корпусах WCSP.

Для разработки приложений на базе BlueNRG-LP рекомендуется использовать отладочную плату STEVAL-IDB011V1 (рисунок 1), которая, кроме, собственно, микросхемы BlueNRG-355MC (256 кбайт Flash-памяти, 64 кбайт ОЗУ), содержит программатор-отладчик CMSIS-DAP (на STM32F103xx), держатель батарей, кнопки-светодиоды и несколько датчиков.

Рис. 1. Оценочная плата STEVAL-IDB011V1

Рис. 1. Оценочная плата STEVAL-IDB011V1

Набор датчиков состоит из нескольких микросхем:

  • LPS22HH для измерения атмосферного давления и температуры;
  • LSM6DSOX для контроля механического движения платы (3D-акселерометр и 3D-гироскоп);
  • MP34DT05-A – цифровой микрофон, который можно использовать для приложений передачи голоса через Bluetooth.

Все детали реализации можно посмотреть на принципиальной схеме STEVAL-IDB011V1, перейдя по ссылке. Комплект поставки включает в себя плату, антенну с SMA-разъемом и кабель микро USB.

Из аппаратных особенностей платы стоит выделить:

  • возможность отладки/программирования через CMSIS-DAP;
  • USB-мост последовательного порта для связи между BlueNRG-LP и хостом в виде ПК;
  • возможность программирования BlueNRG-LP путем перетаскивания bin-файла прошивки в папку платы (этот механизм известен по платам STM32 NUCLEO).

При подключении платы к ПК с Windows 10 драйвера COM-порта устанавливаются автоматически.

При необходимости с платой можно использовать внешний SWD-программатор, в этом случае он подключается к контактам JP4 pin1, JP3 pin1, JP5 pin1, GND и VBAT. Установленный на плате программатор CMSIS-DAP может использоваться для программирования внешней микросхемы BlueNRG-LP, например, установленной на пользовательской плате. Для этого необходимо удалить перемычки JP3, JP4, JP5 и подключить линии SWDIO (JP4 pin2), SWCLK (JP3 pin2), NRST (JP5 pin2) и GND и VBAT к целевой плате. Для измерения тока, потребляемого чипом BlueNRG-LP, предусмотрен джампер JP1.

Перечень полезных ресурсов для разработки приложений на базе BlueNRG-LP приведен в таблице 2.

Таблица 2. Ресурсы для разработки

Тип Наименование Описание
Отладочная плата STEVAL-IDB011V1 Набор аппаратных средств для разработки приложений на базе микросхемы BlueNRG-355MC
Основной набор программного обеспечения (SDK) STSW-BNRGLP-DK Стек в бинарном виде, библиотеки периферии и примеры BLE-приложений
Приложение для ПК STSW-BNRGUI Управление отладочной платой STEVAL-IDB011V1 через ПК без необходимости написания кода
Приложение для ПК STSW-BNRGFLASHER Программирование BlueNRG-LP через графический интерфейс или с помощью командной строки
Приложение для ПК STSW-BNRG001 Расчет энергопотребления для разных режимов работы
Дополнительное программное обеспечение STSW-LP-PROFILES Набор примеров стандартных профилей BLE
Дополнительное программное обеспечение STSW-BNRGLP-MESH Сетевой стек для построения ячеистой сети (Bluetooth MESH)
Документация DS13282 Техническая документация на BlueNRG-LP
Документация RM0479 Справочное руководство по BlueNRG-LP ARM Cortex-M0+
Документация UM2735 Инструкция по работе с BlueNRG-LP
Документация UM2726 Описание собственного (проприетарного) радиодрайвера 2,4 ГГц для BlueNRG-LP
Документация PM0269 Инструкция по программированиюBluetooth LE stack v3.x
Документация AN5463 Описание механизма обновления прошивки по воздуху OTA (Over-the-Air) firmware upgrade
Документация AN5466 Инструкция по управлению режимами пониженного энергопотребления
Документация AN5469 Инструкция по работе с малопотребляющим таймером BlueNRG-LP
Документация AN5471 Описание протокола загрузчика BlueNRG-LP UART bootloader
Документация AN5503 Инструкция по конфигурации и тестированию продукции с BlueNRG-LP
Документация AN5526 Рекомендации по разработке печатной платы для BlueNRG-LP
Документация DB4266 Краткое описание платы STEVAL-IDB011V1 (с принципиальной схемой)
Документация DB4257 Краткое описание набора программного обеспечения STSW-BNRGLP-DK
Документация UM2058 Описание программы BlueNRG GUI SW package
Рекламная брошюра BlueNRG-LP flyer1.0 Описание основных возможностей и преимуществ BlueNRG-LP

Оценочная плата STEVAL-IDB011V1 поставляется с предварительно запрограммированным демонстрационным примером Bluetooth LE Sensor, который позволяет установить соединение со смартфоном (iOS или Android). На смартфоне должно быть запущено приложение «ST BLE Sensor» (ранее называвшееся «ST BlueMS»). Таким образом, оценить работу платы можно прямо «из коробки». Для этого следует лишь подсоединить антенну и убедиться, что сделан правильный выбор положения джампера JP2,в зависимости от варианта подачи питания – через USB-разъем или от двух батарей ААА (в комплект не входят).

После подключения устройство BlueNRG-LP отправляет данные, собранные с акселерометра/гироскопа и датчиков параметров окружающей среды (давление и температуру) на смартфон, где приложение ST BLE Sensor отображает эту информацию (рисунок 2).

Рис. 2. Приложение ST BLE Sensor отображает данные с датчиков платы STEVAL-IDB011V1

Рис. 2. Приложение ST BLE Sensor отображает данные с датчиков платы STEVAL-IDB011V1

Программа BlueNRG-LP Navigator

Приложение для ПК BlueNRG-LP Navigator входит в состав пакета STSW-BNRGLP-DK. Программа позволяет в интерактивном режиме познакомиться с расположением элементов на плате STEVAL-IDB011V1, просматривать плату в 3D-проекциях и главное – загружать и запускать на плате различные примеры кода путем нажатия пары кнопок, без установки компилятора и среды разработки. С помощью BlueNRG-LP DK Navigator вы можете напрямую загрузить и запустить на платформе BlueNRG-LP без интерфейса JTAG предварительно созданный бинарный образ приложения (BLE-приложения или примеров для работы с периферией). Всего в программу включены несколько десятков примеров. Разумеется, все эти примеры с их исходным кодом доступны и через обычные системы – IDE EWARM и Keil.

На рисунке 3 показано окно программы BlueNRG-LP Navigator в процессе загрузки примера Beacon.

Рис. 3. Загрузка примера Beaconв программе BlueNRG-LPNavigator

Рис. 3. Загрузка примера Beacon в программе BlueNRG-LPNavigator

Важно! Если в плату загружен пример, который использует режимы глубокого сна BlueNRGLP, то встроенный программатор CMSISDAP может не иметь доступа к процессору. Для вывода микросхемы из этого режима достаточно нажать кнопку PUSH1 и, удерживая ее, нажать и отпустить кнопку RESET. При сбросе процессора с удерживаемой кнопкой PUSH1 он принудительно переходит в режим бутлоадера с полной доступностью для CMSISDAP. При этом загруженная ранее прошивка с глубоким режимом сна сохраняется, не запускается и не препятствует работе CMSISDAP (подробнее об этом читайте в разделе «Отладка BLE-приложения на BlueNRG-LP»). 

Важно! Программа BlueNRGLP Navigator загружает дефолтный бинарный файла приложения из папки BlueNRG-LP DK 1.0.0\Firmware\BLE_Examples\BLE_Beacon\STEVAL-IDB011V1. То есть если вы изменили исходный код примера, работая в IAR/Keil, то при загрузке бинарного файла из BlueNRGLP Navigator будет запущена оригинальная прошивка от STMicroelectronics, а не ваш модернизированный код.

Программа BlueNRG GUI

Приложение для ПК BlueNRG GUI (STSW-BNRGUI) представляет собой графический пользовательский интерфейс, который можно использовать для взаимодействия и оценки возможностей микросхемы BlueNRG-LP. В программе можно запустить микросхему в режиме маячка, в качестве центрального или периферийного устройства. В BlueNRG GUI предусмотрены закладки для проведения тестов пропускной способности и запуска сценариев работы, в этом случае можно легко проверить требуемую логику работы будущего приложения пользователя, взаимодействуя с нижними слоями BLE-стека через набор HCI-команд, отправляемых со стороны ПК. Параметры этих команд те же самые, что и для API-функций для классического кода на Си, на котором будет написано загружаемое во Flash-память чипа откомпилированное пользовательское приложение. Для взаимодействия с оболочкой BlueNRG GUI подключаемая к ПК плата STEVAL-IDB011V1 должна быть предварительно прошита приложением BlueNRG-LP DTM. Готовый к загрузке бинарный файл можно найти в папке программы BlueNRG GUI 4.0.0\Firmware\STEVAL-IDB011V1\DTM или загрузить его через программу BlueNRG-LP Navigator. Исходный код приложения BlueNRG-LP DTM можно найти в пакете STSW-BLUENRG-DK (D:\BlueNRG-LP DK 1.0.0\Projects\BLE_Examples\DTM). BlueNRG GUI взаимодействует с платой STEVAL-IDB011V1 через COM-порт на скорости 921600 бод.

Одной из интересных особенностей BlueNRG GUI является возможность провести тест пропускной способности для разных настроек RadioPHY (физического уровня радио). Для проведения теста нужно иметь две платы STEVAL-IDB011V1. Сам тест находится на вкладке Throughtput. В ячейке Configure As необходимо указать для одной платы Master/Central, для другой – Slave/Server. В ячейке PHY устанавливается требуемый физический уровень (доступно только для Mastrer/Central). На рисунке 4 показано отображение результатов теста: на шкалах красной линией отмечен теоретический предел для данного физического уровня, а черной – реально достигнутые результаты.

Рис. 4. Отображение результатов теста пропускной способности BlueNRG-LP

Рис. 4. Отображение результатов теста пропускной способности BlueNRG-LP

 Важно! Если данный тест проводится для чипов BlueNRG-1 или BlueNRG-2, то до проведения теста необходимо загрузить в плату специальную прошивку DTM (DTM_UART_Throughput.hex), хранящуюся в папках прошивки / {BlueNRG-1 | BlueNRG-2 } / DTM (скорость последовательного порта равна 115200 бод для устройств BlueNRG-1,2 или 921600 для BlueNRG-LP).

Программный пакет STSW-BNRGLP-DK

Программный пакет STSW-BNRGLP-DK является основным инструментом для разработки пользовательского приложения в средах разработки IAR и KEIL. После его установки (файл BlueNRG-LP DK-1.0.0.0-Setup.exe) на ПК появляется папка BlueNRG-LP DK 1.0.0 с библиотеками и примерами (рисунок 5).

Рис. 5. Папка BlueNRG-LP DK 1.0.0 с библиотеками и примерами

Рис. 5. Папка BlueNRG-LP DK 1.0.0 с библиотеками и примерами

Bluetooth-стек для BlueNRG-LP предоставляется в виде бинарной библиотеки с набором API для управления BLE-функциями в устройстве. Архитектура программного обеспечения построена с использованием обратных вызовов (callbacks), которые должны быть задействованы в пользовательском приложении для обработки событий стека Bluetooth. Разработчик должен использовать предлагаемые соответствующие API для доступа к функциям BLE и обрабатывать обратные вызовы, источником которых является BLE-стек. Для доступа к периферии BlueNRG-LP также включен набор API для работы с периферией ADC, GPIO, I²C, таймеры, RTC, SPI, SysTick, UART и WDG.

Программное обеспечение комплекта разработчика включает в себя примеры кода для работы как с BLE-стеком, так с периферией чипа.

Для сборки демонстрационных приложений BlueNRG-LP_DK_x.x.x требуется компилятор EWARM версии 8.40.1 или более поздней. При работе с STSW-BNRGLP-DK следует учесть тот факт, что IAR требует небольшой модификации для работы с BlueNRG-LP. В папке BlueNRG-LP DK 1.0.0\Utility\ необходимо запустить самораспаковывающийся архив EWARM_BlueNRG-LP_Flasher_2.0.0 и перенести созданную папку arm в соответствующую папку установки EWARM (C:\Program Files (x86)\IAR Systems\Embedded Workbench 8.4). Модификация добавляет BlueNRG-LP в список поддерживаемых устройств.

Также поддерживается Keil MDK-ARM. Файл Keil.STBlueNRG-LP_DFP.2.0.0.pack должен быть установлен на локальный инструмент Keil MDK-ARM для добавления SoC BlueNRG-LP.

При отладке примеров, которые используют режимы глубокого сна, дебаггер IDE может выдавать сообщение о недоступности процессора, так как BlueNRG-LP отключает соответствующие линии. Для того что бы остановить приложение, использующее режимы глубокого сна, можно сбросить BlueNRG-LP, удерживая кнопку PUSH1.

Далее рассмотрим некоторые доступные примеры кода готовых BLE-приложений из папки BlueNRG-LPDK 1.0.0\Projects\BLE_Examples. 

Демонстрационное приложение BLE-маячок (BLE beacon)

Это приложение показывает, как настроить BlueNRG-LP для работы в режиме маячка. Передаваемые широковещательные сообщения (Advertisement data) включают в себя специфические данные производителя (manufacturer specific data). Работающее приложение можно обнаружить смартфоном с какой-либо программой для сканирования BLE-устройств, например с помощью того же ST BLE Sensor. Приложение также позволяет использовать расширенные возможности объявлений (Advertising extensions) с передачей данных на дополнительных (вторичных) каналах рассылки объявлений.

По умолчанию в программе используется код производителя 0x004C в массиве adv_data (файл BLE_Beacon_main.c):



AD_TYPE_MANUFACTURER_SPECIFIC_DATA,  //manufacturer type

0x4C, 0x00, //Company identifier code

Этот код позволяет плате имитировать iBeacon от Apple. Cогласно спецификации iBeacon, iBeacon должен транслировать 0x004C в качестве идентификатора компании в данных производителя в объявлениях (0x004c – это идентификатор компании Apple, присвоенный Bluetooth SIG).

Некоторые программы отображения, например nRFConnect, «не понимают» этот формат Apple и не отображают дополнительные данные из пакета. Для таких программ можно изменить строку с идентификатором производителя, например, так:



0x30, 0x00, //Company identifier code = ST Microelectronics

В последнем случае мы можем увидеть наш маячок в программе nRFConnect (скриншот с iPhone c iOs 14.4) в следующем виде (рисунок 6).

Рис. 6. Отображение маяка в программе nRF Connect (iPhone, iOs 14.4)

Рис. 6. Отображение маячка в программе nRF Connect (iPhone, iOs 14.4)

Наш маячок в качестве полезной нагрузки передает 16 байт Location UUID (выделено на рисунке 4 красной рамкой):



0xE2, 0x0A, 0x39, 0xF4, 0x73, 0xF5, 0x4B, 0xC4, //Location UUID

0xA1, 0x2F, 0x17, 0xD1, 0xAD, 0x07, 0xA9, 0x61,

Это абстрактное значение, которое в реальной системе может быть привязано к физическому расположению или иным свойствам объекта.

Важно! При наблюдении за сигналом своего BLE-маячка с помощью какого-либо приложения на смартфоне можно столкнуться с ситуацией, когда вы постоянно видите старые данные. Например, в коде для BlueNRGLP вы меняете какие-либо параметры, но в смартфоне изменений не происходит. При этом уровень RSSI может меняться, что еще больше запутывает ситуацию, так как вы видите, что ваш маячок работает. Это происходит из-за буферизации данных как в операционной системе смартфона, так и в конкретном приложении. Для устранения этого необходимо выключить-включить Bluetooth в настройках смартфона (помогает не всегда). Наиболее кардинальный способ – выключить и вновь включить питание телефона. 

Прозрачный режим последовательного порта

Приложение, реализующее прозрачный обмен между двумя платами через последовательный порт, представлено в двух версиях BLE_SerialPort и BLE_SerialPort_Master_Slave.

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

Это демонстрационное приложение предоставляет один сервис последовательного порта со следующими характеристиками (макс. 20 байт):

  • Характеристика TX со включенными уведомлениями. Сервер отправляет уведомления (notifications) со значением характеристики TX. Отосланные по COM-порту пользователем на плату сервера данные записываются в эту характеристику. Далее сервер уведомляет клиента (отсылает нотификацию) с измененными данными этой характеристики. Таким образом, клиент получает новое значение характеристики TX.
  • Характеристика RX – это записываемая характеристика. Когда клиенту необходимо передать данные на сервер, он записывает значение в эту характеристику.

Есть две роли устройств, которые можно выбрать в рабочей области проекта для компиляции и загрузки в плату STEVAL-IDB011V1:

  • сервер, который предоставляет услугу последовательного порта (периферийное устройство Bluetooth LE);
  • клиент, использующий службу последовательного порта (центральное устройство Bluetooth LE).

Приложение требует, чтобы две отладочные платыSTEVAL-IDB011V1 были запрограммированы с ролями сервера и клиента и подключались к ПК через USB. На ПК необходимо открыть программу-терминал для каждого устройства со следующей конфигурацией: Baudrate 115200 bit/s, Data bits 8, Parity bits None, Stop bits 1.

Приложение BLE_SerialPort_Master_Slave требует одной единственной прошивки для двух плат, участвующих в обмене данными. Приложение настраивает каждую плату STEVAL-IDB011V1 одновременно как центральное или как периферийное устройство с помощью API: aci_gap_init (GAP_CENTRAL_ROLE | GAP_PERIPHERAL_ROLE, 0, 0x07, 0, & service_handle, & dev_name_char_h andle, & appearance_char_handle);

Затем оно инициирует процедуру обнаружения для другого устройства Bluetooth LE, настроенного с тем же самым последовательным портом и образом Master/Slave приложения. Если устройство обнаруживается в пределах случайного интервала времени, приложение запускает процедуру подключения и ожидает установления соединения. Если время процедуры Discovering истекает без обнаружения другого Master/Slave-устройства, STEVAL-IDB011V1 переходит в режим обнаружения и ожидает, пока другое Master/Slave-устройство обнаружит его и подключится к нему. Благодаря тому, что этот алгоритм выполняется на двух платах, они имеют возможность связаться, вне зависимости момента и очередности включения.

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

Дистанционное управление (BLE remote control)

Приложение BLE remote control реализует следующий алгоритм работы: плата как периферийное устройство в режиме Advertising рассылает значение температуры, которое доступно любому центральному BLE-устройству. Данные инкапсулируются в пакет в виде специфической информации производителя. В пакет, помимо идентификатора производителя (0x0030 для STMicroelectronics), включен идентификатор приложения (0x05) и 2 байта значения температуры в десятых долях градуса (младший байт идет первым).

Любое центральное устройство может подключиться к плате и управлять тремя светодиодами – включать и отключать их. После подключения центральное устройство имеет лишь несколько секунд для эксклюзивного доступа к светодиодам, затем соединение разрывается по инициативе STEVAL-IDB011V1, что бы дать возможность другим центральным устройствам также иметь доступ к управлению светодиодами.

В приложении заданы характеристики, используемые для управления светодиодами DL1, DL2 и DL3 на платформе STEVAL-IDB011V1. Значение этой характеристики – битовая карта размером 1 байт. Каждый бит управляет одним из светодиодов:

  • бит 0 определяет статус светодиода DL1;
  • бит 1 – это состояние DL2;
  • бит 2 – это состояние DL3.

Таким образом, удаленное устройство может подключиться и записать этот байт, чтобы изменить или прочитать состояние этих светодиодов (1 – светодиод включен, 0 – светодиод выключен).

Периферийное устройство отключается после тайм-аута (DISCONNECT_TIMEOUT), чтобы центральное устройство не оставалось подключенным к устройству на долгий срок. По умолчанию безопасность не включена, но ее можно изменить с помощью ENABLE_SECURITY (файл BLE_RC_main.h). Когда безопасность включена, центральное устройство должно быть аутентифицировано перед чтением или записью характеристики устройства.

Для взаимодействия с приложением BLE remote control в качестве пульта дистанционного управления может использоваться какое-либо приложение на смартфоне, которое позволяет подключаться и изменять характеристики другого устройства BLE. Для управления одним из светодиодов внешнее устройство должно подключиться к плате STEVAL-IDB011V1 с приложением BLE remote control и изменить эту характеристику:

  • сервис UUID = ed0ef62e-9b0d-11e4-89d3-123b93f75cba;
  • характеристика с UUID = ed0efb1a -9b0d-11e4-89d3-123b93f75cba.

Демонстрационное приложение с использованием BLE 5.0 coded PHY (BLE_RC_LongRange)

Приложение BLE_RC_LongRange показывает, как управлять удаленным устройством (например, исполнительным механизмом) с использованием режима повышенной дальности LongRange (BLE 5.0 coded PHY). Приложение построено на основе предыдущего примера BLE remote control. Для демонстрации требуются две платы STEVAL-IDB011V1, настроенные, соответственно, как клиент и сервер. Платы могут питаться от USB-кабеля или батареек ААА (для работы от батареек переместите перемычку JP2 в положение BAT). Сервер (периферийное устройство) начинает работу с рассылки объявлений (advertising) с фиксированным адресом (0x0280E10000E1) в режиме 1 Mbps PHY discoverable mode. Светодиод LED2 (зеленый) мигает, показывая этот режим. Клиент (центральное устройство, адрес = 0x0280E10000E0) начинает попытки подключения к серверу с физическим уровнем 1 Mbps PHY. Зеленый светодиод клиента мигает в течение попыток подключения. После подсоединения зеленый светодиод LED2 начинает гореть постоянно на обеих платах. Клиент далее периодически делает запись в характеристику, которая управляет светодиодом LED3 (красным) на сервере. Светодиод LED3 меняет свое состояние каждые 300 мс как на плате сервера, так и на плате клиента. Для оценки дальности связи можно разносить две платы, пока светодиод на сервере продолжает мигать с неизменной частотой. Когда частота мигания светодиода замедляется из-за потерь и повторных передач пакетов, то это означает, что платы находятся на границе устойчивого приема.

Когда платы находятся в режиме соединения, нажатие на кнопку PUSH1 на любой из плат приводит к изменению физического уровня на режим coded PHY (то есть включается режим Long Range). После завершения процедуры переключения на новый режим (coded PHY активирован) синий светодиод LED1 горит постоянно.

Теперь можно повторить эксперимент с увеличением дистанции между двумя платами до тех пор, пока красный светодиод не начинает мигать реже. В режиме повышенной дальности Long Range расстояние между платами должно быть больше, по сравнению с базовым BLE-режимом 1 Mbps PHY.

Обе платы выдают информационные сообщения о происходящих событиях в UART-порт (рисунок 7).

Рис. 7. Информационные сообщения сервера

Рис. 7. Информационные сообщения сервера

 Проверка пропускной способности BLE-канала (BLE throughput demonstration)

Приложение BLE throughput demonstration позволяет измерить пропускную способность BLE-канала при выборе разных физических уровней: 1 Mbps PHY, 1 Mbps PHY и BLE 5.0 Coded PHY. Оно запускается на двух платах STEVAL-IDB011V1, одна из которых выступает в качестве клиента, другая – в качестве сервера. Приложение реализует сервис Throughput Service, который содержит две характеристики:

  • характеристика TX, для которой клиент может разрешить нотификацию. Когда на сервере есть данные для пересылки, он посылает нотификацию со значением этой характеристики;
  • характеристика RX, в которую клиент записывает значение, передаваемое на сервер.

Сервер (периферийное устройство) предоставляет клиенту (центральному устройству) доступ к двум характеристикам – TX и RX.

Каждая запрограммированная плата подключается к программе-терминалу со скоростью последовательного порта – 921600 бод. После сброса две платы пытаются установить соединение. Как только они подключаются, сервер постоянно передает нотификацию характеристики TX клиенту. Для увеличения пропускной способности канала можно увеличить длину отправляемого сообщения с помощью команды ATT MTU на стороне клиента до максимальной величины 247 байт. Далее выберите желаемую длину пакета канального уровня: 27 (по умолчанию), 100 или 251 (максимально разрешенное значение) байт. Когда требуется оценить пропускную способность для двунаправленного обмена данными, включите этот режим на стороне клиента, он начнет записывать данные в характеристику RX. Можно также установить физический уровень PHY, который будет использоваться для связи: 1 Мбит/с (по умолчанию), 2 Мбит/с или Coded PHY (Long Range). Все эти действия выполняются с помощью простых одно буквенных команд, которые подаются в программе-терминале.

Команды на стороне сервера:

  • u – отправка запроса обновления длины для данных на 27 байт;
  • m – отправка запроса обновления длины для данных на 100 байт;
  • U – отправка запроса обновления длины для данных на 251 байт;
  • l – включение/выключение передачи L2CAP COS;
  • z – включение/отключение режима Slow throughput;
  • 1 – изменение значения L2C COS MTU;
  • 2 – изменение значения L2C COS MPS;
  • c – отправка запроса на обновление параметров подключения;
  • f – включение/отключение очищаемых PDU;
  • e – переключение уведомлений;
  • p – печать флагов APP;
  • s – чтение LE PHY (TX, RX);
  • d – установка режима большой дальности Coded RX PHY;
  • D – установка режима большой дальности Coded TX PHY;
  • t – установка LE RX PHY на 1 Мбит/с;
  • T – установка LE TX PHY на 2 Мбит/с;
  • R – установка LE RX PHY на 2 Мбит/с;
  • x – сброс системы;
  • ? – распечатка справки.

Дополнительные команды на стороне клиента:

  • a – отправка обмена ATT_MTU;
  • b – включение/выключение двунаправленного теста;
  • n – отправка уведомлений;
  • i – отправка индикации.

Демонстрационное приложение для оценки энергопотребления (BLE_Power_Consumption) 

Для оценки энергопотребления приложение запускает BlueNRG-LP в режиме периферийного устройства, рассылающего объявления в режим обнаружения (Advertising, Discoverable Mode). С помощью команд через UART можно выбрать, какой интервал рассылки Advertising использовать (100 мс или 1 с). Для измерения потребляемого тока необходимо подключить анализатор питания постоянного тока (DC Power Analyzer) к контактам джампера JP1 платы STEVAL-IDB011V1. После этого вы можете установить соединение с другим BLE-устройством, настроенным в качестве главного (Central) и измерять энергопотребление в режиме соединения. В качестве главного устройства может выступать другая плата STEVAL-IDB011V1 с загруженной прошивкой DTM FW (DTM_UART_WITH_UPDATER.hex) и работающая под управлением соответствующего скрипта в приложении BlueNRG GUI или в программе Script launcher, которая находится в папке программы STSW-BNR GUI. В папке проекта демонстрационного приложения BLE_Power_Consumption есть два скрипта для настройки главного устройства и создания соединения с тестируемой платформой комплекта BlueNRG-LP. Эти два сценария позволяют установить соединение с интервалами, соответственно, 100 и 1000 мс.

Демонстрационное приложение для оценки энергопотребления поддерживает следующие тестовые команды:

  • f – устройство находится в режиме обнаружения с быстрым интервалом Advertising = 100 мс;
  • s – устройство находится в режиме обнаружения с медленным интервалом Advertising = 1000 мс;
  • r – сброс BlueNRG-LP;
  • ? – отображение меню справки.

Отладка BLE-приложения на BlueNRG-LP

Отладка при работающем BLE-радио

BLE-активность чипа BlueNRG-LP основана на прерываниях таймера синхронизации радио (radio ISR). Каждый раз, когда вызывается radio ISR, чтобы синхронизировать событие соединения (connection event), следующий тайм-аут программируется новым значением. BlueNRG-LP – это радио с Bluetooth LE, если выполнение остановлено в целях отладки, это повлечет за собой некоторую задержку в управлении radio ISR, что может привести к потере соединения и нарушениям в работе радио. Таким образом, если приложение останавливает выполнение кода, BLE-синхронизация не может поддерживаться и соединение может быть потеряно. Если приложение останавливает выполнение кода в режиме Advertising, то это может привести к невозможности установления соединения с центральным устройством. Как следствие, при отладке приложения Bluetooth LE учитывайте, что радиосвязь может быть нарушена и соединение может быть потеряно.

Отладка при работе BlueNRG-LP в режимах с малым энергопотреблением

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

  • когда используется приложение, которое отключает выводы отладки SWD (SWDIO: PA2; SWCLK: PA3);
  • когда используется приложение, которое переводит устройство в режим DEEPSTOP (API HAL_PWR_MNGR_Request (), настроенный с помощью POWER_SAVE_LEVEL_STOP_NOTIMER или POWER_SAVE_LEVEL_STOP_WITH_TIMER), в котором порт отладки не получает питание (отключен).

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

  • не используйте режим DEEPSTOP, изменив вызов HAL_PWR_MNGR_Request () следующим образом: HAL_PWR_MNGR_Request (POWER_SAVE_LEVEL_CPU_HALT, 0, 0), поскольку в этом режиме CPU никогда не переходит в DEEPSTOP, и отладка всегда доступна. Это изменение приложения может приводить к иному времени выполнения;
  • используйте GPIO-порт, чтобы разбудить систему и предоставить доступ отладчику. Пользователю может потребоваться изменить вызов к HAL_PWR_MNGR_Request следующим образом: HAL_PWR_MNGR_Request (POWER_SAVE_LEVEL_STOP_NOTIMER, wakeupIO и stopLevel), где WakeupSourceConfig_TypeDef wakeupIO = {0, WAKEUP_PA8, 0}; / * пример пробуждения от линии PA8 * /.

Когда требуется доступ отладчика, пользователь должен принудительно установить низкий уровень на линии ввода-вывода пробуждения (IO13 в примере), а затем использовать команду «Attach to running target» в отладчике.

Программирование через CMSIS-DAP при работе BlueNRG-LP в режимах с малым энергопотреблением

Когда устройство BlueNRG-LP находится в режиме DEEPSTOP, и порт SWD отключен, выполните следующие шаги:

  • Установите высокий уровень на выводе PA10, а затем сбросьте устройство BlueNRG-LP. Эта комбинация сигналов активирует UART-загрузчик, и пользователь может запрограммировать выбранное приложение (с параметром спящего режима POWER_SAVE_LEVEL_CPU_HALT). На отладочной плате STEVAL-IDB011V1 просто удерживайте нажатой кнопку PUSH1, а затем нажмите и отпустите кнопку RESET, чтобы перевести устройство в режим UART-загрузчика.
  • Выполните полное стирание Flash-памяти (Mass Erase) с помощью инструмента Flasher Utility, который использует загрузчик BlueNRG-LP UART, а затем запрограммируйте выбранное приложение (с параметром спящего режима POWER_SAVE_LEVEL_CPU_HALT).

Заключение

Чип BlueNRG-LP позволяет создавать устройства интернета вещей с функционалом беспроводной связи Bluetooh Low Energy. Работающие «из коробки» платы STEVAL-IDB011V1 и большой набор инструментов облегчают инженеру знакомство с возможностями нового чипа. Пакет программного обеспечения включает в себя готовые примеры разнообразных BLE-приложений, позволяющие разработчику быстро войти в курс дела. Примеры хорошо документированы и могут служить стартовой площадкой для разработки собственного кода.

•••

Наши информационные каналы

О компании ST Microelectronics

Компания STMicroelectronics является №1 производителем электроники в Европе. Компоненты ST широко представлены в окружающих нас потребительских товарах – от iPhone до автомобилей разных марок. Лидеры индустриального рынка выбирают компоненты ST за их надежность и выдающиеся технические параметры. В компании ST работает 48 000 сотрудников в 35 странах. Производственные мощности расположены в 12 странах мира. Более 11 тысяч сотрудников заняты исследованиями и разработками – инновационное лидерство ...читать далее

Товары
Наименование
BLUENRG-345AC (ST)
BLUENRG-355VC (ST)
BLUENRG-355AC (ST)
BLUENRG-355MC (ST)
BLUENRG-345MC (ST)
BLUENRG-355MT (ST)
BLUENRG-345MT (ST)
STEVAL-IDB011V1 (ST)