BLE від Nordic Semiconductor. Початок роботи зі стеком із застосуванням чіпа nRF51822


Привіт.

Якийсь час я виношував ідею написати статтю про даному стеку, його особливості та застосування з використанням чіпа nRF51822. А недавня публікація "BLE стек від TI" змусила мене сісти і спробувати перетворити ідею в щось матеріальне.

Nordic Semiconductor надає дуже цікаве, на мій погляд, рішення. З одного боку потужний чіп на ядрі ARM Cortex-M0, з іншого боку постійно розвивається ПО стека і набору бібліотек, що входять до складу SDK.

На жаль, на Хабре немає статей, присвячених тематиці BLE на NORDIC-е, як в іншому, практично немає їх і в рунеті, тому сподіваюся, що стаття буде корисна тим, хто починає використовувати продукцію цієї фірми в частині, що стосується BLE, а також тим, хто захоплюється технологією Bluetooth і BLE зокрема.

1. Залізо


Розглянутий нами чіп nRF51822 з боку розміру пам'яті представлений в 3 варіантах:
  • 256КБ флеш і 16КБ ОЗУ;
  • 128КБ флеш і 16КБ ОЗУ;
  • 256КБ флеш і 32КБ ПАМ'ЯТІ.
При цьому ОЗП розділене на блоки і кожен блок має свою управління живленням. Я звертаю на це увагу, тому, що при програмуванні чіпа треба знати, що для програми завжди використовується старша половина ОЗУ, тоді як молодша половина завжди використовується стеком.

В залежності від версії стека, так само може змінюватися адреса завантаження клієнтського ПЗ. На це теж треба звертати увагу. Якщо невірно вказати адресу завантаження, то програматор видасть помилку, опису якої ніколи не зрозуміти, чому саме не вдалося прошити чіп. Адреса завантаження ПО вказується у специфікації на кожну версію стека.

Отже, якщо ви вирішили працювати з BLE від NORDIC, то перш за все вам необхідно придбати один з налагоджувальних наборів. Ось деякі з них:
nRF51822 Evaluation Kit (EK) — незалежна платформа для оцінки та прототипування, заснована на чіпі nRF51822.



До складу набору входить:
  • плата з чіпом, з парою кнопок і парою світлодіодів. На платі розташований програматор від Segger, має свій унікальний номер, що дозволяє програмувати наш чіп, проводити налагодження і, що не мало важливо, що дозволяє використовувати UART для зв'язку nRF51822 з комп'ютером за допомогою USB;
  • USB-донгл, так само з чіпом nRF51822 і програматором від Segger, що має спеціальну прошивку NORDIC і використовується для зв'язку з платою.


nRF51822 Development Kit (DK) — залежна від «Starter Kit» платформа, дає можливість створювати повноцінні програми використовуючи не тільки BLE, але і всі ресурси чіпа nRF51822, як микроконтоллера.


До складу набору входить:
  • плата з nRF51822 і з PCB антеною;
  • плата з nRF51822 і з роз'ємом для антени;
  • USB-донгл такий же, як у EK;
  • 5 чіпів nRF51822;
  • програматор
До речі, «залежність» від «Starter Kit» не критична, якщо Ви вмієте користуватися паяльником або у Вас є макетна плата і проводки.

nRF51822 Starter Kit (SK) — це свого роду «материнська плата», до якої можна підключити EK і DK для використання всіх можливостей чіпа nRF51822.



До складу набору входить 2 материнські плати з наборами кабелів.



З недавнього часу фірма не рекомендує користуватися EK і DK, т. к. з'явилися нові налагоджувальні набори: "nRF51 DK" і "nRF51 Dongle", але я вважаю, що EK і DK поки залишаються дуже хорошим засобом вивчення та прототипування.

Зараз в моїй задачі використовується nRF51822 DK без SK. Завдяки роз'ємам на платах DK, можна з допомогою сполучних проводів і макетної плати підключати будь-яку периферію, наприклад, світлодіоди для відображення наявності з'єднання або який не будь помилки. Особливістю використання DK без SK є те, що на плату DK необхідно подати живлення, а для цього потрібно знати її роз'ємів плати.



Вона є в документі «nRF51822_Development_Kit_User_Guide». У зв'язку з тим, що в якості «супер-хоста» для nRF51822 я використовую налагоджувальний модуль STM32L152-DISCOVERY, живлення 3.3 В подається звідти.

Нюанс: поки Ви не отримаєте один з наборів, Ви не зможете завантажити з сайту ні специфікацію, ні стек, ні програмне забезпечення, за винятком «nRFgo Studio» і документації на чіпи.

Кожен текстовий набір має свій унікальний номер (ключ), наклеєний на коробку з набором. Після покупки набору необхідно зареєструватися на сайті і в профілі користувача ввести ключ, вказаний на коробці. Після цього Вам стануть доступні:
  • специфікації продукту;
  • керівництва користувача;
  • специфікації, прошивка і API стека;
  • програмне забезпечення;
  • «Reference layout»;


2. Програмне забезпечення, що пропонується NORDIC

  • стек SoftDevice S110 (S120, S130) — містить розробницькі файли glx API і бінарний (HEX) файл в якому міститься прошивка стека (для кожного типу стека свій HEX). Вихідного коду самого стека немає.
  • nRF51 SDK містить у собі відмінності файли API до пакетів, а також вихідні коди бібліотек на мові С для спрощення роботи зі стеком і периферією чіпів nRF51422 і nRF51822;
  • Master Control Panel (MCP) — 32-і 64-розрядне ПО, призначене для роботи з USB донглом і дозволяє проводити пошук пристроїв, виявляти сервіси, читати атрибути сервісів, встановлювати з'єднання Bluetooth, приймати і передавати дані. В режимі сервера є можливість створювати будь-які сервіси, з характеристиками, визначеними як Bluetooth SIG, так і зі своїми власними. Загалом, це головна програма для налагодження Вашого з іншого боку бездротового з'єднання. При установці Master Control Panel також встановлюється під назвою «Master Emulator». Про нього мало де написано, але воно може сподобатися багатьом розробникам. Справа в тому, що це API, що дозволяє створити .NET додаток для ПК з роллю майстер-пристрій.
  • nRFgo Studio — 32-і 64-розрядне ПО, призначене для прошивки стека і клієнтського ПЗ. Також з його допомогою можна змінювати прошивку материнських плат, що входять в комплект SK; створювати свої сервіси в тому числі і на своїх же UUID-ах; настроювати параметри безпеки з'єднання, налаштовувати GAP і advertising, налаштовувати периферію чіпа, обчислювати споживання енергії чіпом і багато іншого.
  • nRF Sniffer — ЗА для перегляду пакетів, що передаються від одного пристрою до іншого;
  • nRF51-BLE-Driver — насправді це не драйвер в звичайному сенсі слова. Це DLL, яке надає API до стеку на мові С. Завдяки йому, Ви можете написати додаток для ПК, яке буде спілкуватися зі стеком, який можна вшити в USB-донгл, що входить до складу DK або EK. API надає реалізацію тільки ролі периферійного пристрою.
  • також можна завантажити вихідні коди додатків для Android і iOS, що дозволяють працювати з налагоджувальні наборами. Самі програми можна знайти у відповідних платформ магазинах додатків. Програми дозволяють протестувати наприклад, роботу оновлення прошивки по повітрю (DFU — Device Firmware Update Service) або UART по Bluetooth.


3. Засоби розробки

Для програмування можна використовувати як платні, так і безкоштовні засоби розробки. NORDIC пропонує використовувати Keil MDK-ARM, IAR, а також будь-IDE, що дозволяє працювати з GCC ARM. Для роботи з GCC пропонується документ під назвою «nAN-29 nRF51 Development with GCC and Eclipse Application Note» в якому описуються пропозиції для розробників, бажаючих скористатися Eclipse, GCC та GDB.

NORDIC вважає, що краще використовувати Keil і навіть установник «nRF51 SDK» інтегрує SDK в Keil, завдяки чому спрощується процес створення проекту програми. Всі приклади, які знаходяться в SDK, мають файли проектів формату Keil.



4. Стек SoftDevice



Стек пропонується в 3-х варіантах.
  • S110 SoftDevice-призначений для використання у разі, якщо ваше пристрій повинен мати роллю периферійного пристрою (Peripheral/Broadcaster).
  • S120 SoftDevice — призначений для використання в разі, якщо ваш пристрій має бути центральним пристроєм (Central/Observer). Даний стек може підтримувати до 8-ми одночасних з'єднань з периферійними пристроями.
  • S120 SoftDevice — призначений для використання в разі, якщо ваш пристрій має бути одночасно і периферійним і центральним (Central/Peripheral/Broadcaster/Observer).


API будь-якого з варіантів стека дозволяє управляти і контролером BLE і хостом, тобто та іншою периферією, що входить в чіп. Правильніше сказати так: якщо Ви використовуєте стек SoftDevice, то управління іншою периферією відбувається через API стека і він контролює, що і коли можна застосовувати. Природно чіп можна використовувати взагалі без стека, як звичайний мікроконтролер.

В інформації про реліз чергової версії SDK завжди вказується підтримувана версія стека. Це дуже важливо, тому, що перше, з чим стикається програміст, це неможливість прошити свою програму із-за невідповідності версії SDK і SoftDevice. Наприклад, версія SDK 6.1.0 працює з наступними версіями стека: S110 — 7.0.0, 7.1.0; S120 — 1.0.0.

5. Прошивка стека і клієнтського додатку.



У зв'язку з тим, що стек пропонується тільки у вигляді бінарного файлу прошивки, постає питання, а як же працювати з чіпом, якщо треба шити і стек і свою програму?




Як видно з цих двох малюнків, стек шиється в нижню частину флеш-пам'яті і використовує молодшу половину ОЗУ, що починається з адреси 0х2000000. Додаток ж шиється у флеш-пам'ять, починаючи з адреси CODE_R1_BASE використовує ОЗП з адреси RAM_R1_BASE.

Змінні CODE_R1_BASE і RAM_R1_BASE відрізняються в залежності від версії стека.

Стек шиється з допомогою програми «nRFgo Studio» один раз, після чого можна писати свою програму і шити його або «nRFgo Studio» або, що зручніше, з допомогою Keil.




HEX-файл стека шиється один раз, після чого можна писати свою програму і шити його або «nRFgo Studio» або, що зручніше, з допомогою Keil.

Тут показаний приклад налаштування пам'яті в Keil для стека S110 v.6.0.0:



CODE_R1_BASE у нас дорівнює 0x16000, а RAM_R1_BASE дорівнює 0x20002000

А тут показаний приклад налаштування пам'яті в Keil для стека S120 v.1.0.0:



CODE_R1_BASE у нас дорівнює 0x18000, а RAM_R1_BASE дорівнює 0x20002800

6. Висновок

SDK пропонує велику кількість прикладів використання чіпа nRF51822 як просто мікроконтролера, так і з застосуванням стека. Завдяки прикладам, можна швидко освоїти програмування чіпа паралельно вивчаючи всі тонкощі SDK, а їх там не мало.

NORDIC створив хороший форум, де можна отримати відповідь практично на будь-яке питання. Співробітники фірми часто самі відповідають на запитання і досить швидко.

Дякую вам за те, що дочитали мою статтю до кінця. Якщо вам буде цікаво, а я пройду пісочницю, то в цій статті розповім про особливості реалізації клієнтського ПЗ з використанням SDK стека.

Хочу побажати удачі і успіхів в освоєнні і використанні продукції Nordic Semiconductor, особисто мені подобаються їхні рішення.

Дякую за увагу.

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.