- PVSM.RU - https://www.pvsm.ru -
Здравствуйте.
Какое-то время я вынашивал идею написать статью о данном стеке, его особенностях и применении с использованием чипа nRF51822. А недавняя публикация "BLE стек от TI [1]" заставила меня сесть и попытаться превратить идею в что-то материальное.
Nordic Semiconductor предоставляет очень интересное, на мой взгляд, решение. С одной стороны мощный чип на ядре ARM Cortex-M0, с другой стороны постоянно развивающееся ПО стека и набора библиотек, входящих в состав SDK.
К сожалению, на Хабре нет статей, посвященных тематике BLE на NORDIC-е, как в прочем, практически нет их и в рунете, поэтому надеюсь, что статья будет полезна тем, кто начинает использовать продукцию этой фирмы в части, касающейся BLE, а также тем, кто увлекается технологией Bluetooth и BLE в частности.
Рассматриваемый нами чип nRF51822 со стороны размера памяти представлен в 3 вариантах:
При этом ОЗУ разделено на блоки и каждый блок имеет свое управление питанием. Я акцентирую на это внимание, потому, что при программировании чипа надо знать, что для приложения всегда используется старшая половина ОЗУ, тогда как младшая половина всегда используется стеком.
В зависимости от версии стека, так же может меняться адрес загрузки клиентского ПО. На это тоже необходимо обращать внимание. Если неверно указать адрес загрузки ПО, то программатор выдаст ошибку, по описанию которой никогда не понять почему именно не удалось прошить чип. Адрес загрузки ПО указывается в спецификации на каждую версию стека.
Итак, если dы решили работать со BLE от NORDIC, то прежде всего вам необходимо приобрести один из отладочных наборов. Вот некоторые из них:
— nRF51822 Evaluation Kit [2] (EK) – независимая платформа для оценки и прототипирования, основанная на чипе nRF51822.
В состав набора входит:
— nRF51822 Development Kit [3] (DK) – зависимая от “Starter Kit” платформа, дает возможность создавать полноценные приложения используя не только BLE, но и все ресурсы чипа nRF51822, как микроконтоллера.
В состав набора входит:
Кстати «зависимость» от “Starter Kit” не критична, если Вы умеете пользоваться паяльником или у Вас есть макетная плата и проводки.
— nRF51822 Starter Kit [4] (SK) – это своего рода «материнская плата», к которой можно подключить EK и DK для использования всех возможностей чипа nRF51822.
В состав набора входит 2 материнские платы с наборами кабелей.
С недавнего времени фирма не рекомендует пользоваться EK и DK, т.к. появились новые отладочные наборы: "nRF51 DK [5]" и "nRF51 Dongle [6]", но я считаю, что EK и DK пока остаются очень хорошим средством изучения и прототипирования.
В настоящий момент в моей задаче используется nRF51822 DK без SK. Благодаря разъемам на платах DK, можно с помощью соединительных проводов и макетной платы подключать любую периферию, например, светодиоды для отображения наличия соединения или какой ни будь ошибки. Особенностью использования DK без SK является то, что на плату DK необходимо подать питание, а для этого нужно знать распиновку разъемов платы.
Она есть в документе «nRF51822_Development_Kit_User_Guide». В связи с тем, что в качестве «супер-хоста» для nRF51822 я использую отладочный модуль STM32L152-DISCOVERY, питание 3.3В подается оттуда.
Нюанс: пока Вы не приобретете один из наборов, Вы не сможете загрузить с сайта ни спецификацию, ни стек, ни программное обеспечение, за исключением ПО «nRFgo Studio» и документации на чипы.
Каждый отладочный набор имеет свой уникальный номер (ключ), наклеенный на коробку с набором. После покупки набора необходимо зарегистрироваться на сайте и в профиле пользователя ввести ключ, указанный на коробке. После этого Вам станут доступны:
Для программирования можно использовать как платные, так и бесплатные средства разработки. 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.
Стек предлагается в 3-х вариантах.
API любого из вариантов стека позволяет управлять и контроллером BLE и хостом, т.е. и другой периферией, входящей в чип. Правильнее сказать так: если Вы используете стек SoftDevice, то управление остальной периферией происходит через API стека и он контролирует что и когда можно применять. Естественно чип можно использовать вообще без стека, как обычный микроконтроллер.
В информации о релизе очередной версии SDK всегда указывается поддерживаемая версия стека. Это очень важно, потому, что первое, с чем сталкивается программист, это невозможность прошить свою программу из-за несоответствия версии SDK и SoftDevice. Например, версия SDK 6.1.0 работает со следующими версиями стека: S110 — 7.0.0, 7.1.0; S120 — 1.0.0.
В связи с тем, что стек предлагается только в виде бинарного файла-прошивки, встает вопрос, а как же работать с чипом, если надо шить и стек и свою программу?
Как видно из этих двух рисунков, стек шьется в нижнюю часть флеш-памяти и использует младшую половину ОЗУ, начинающуюся с адреса 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
SDK предлагает большое количество примеров использования чипа nRF51822 как просто микроконтроллера, так и с применением стека. Благодаря примерам, можно быстро освоить программирование чипа параллельно изучая все тонкости SDK, а их там не мало.
NORDIC создал хороший форум, где можно получить ответ на практически любой вопрос. Сотрудники фирмы часто сами отвечают на вопросы и довольно быстро.
Благодарю вас за то, что дочитали мою статью до конца. Если вам будет интересно, а я пройду песочницу, то в следующей статье расскажу об особенностях реализации клиентского ПО с использованием SDK стека.
Хочу пожелать удачи и успехов в освоении и применении продукции Nordic Semiconductor, лично мне нравятся их решения.
Спасибо за внимание.
Автор: Lebets_VI
Источник [7]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/tutorial/77575
Ссылки в тексте:
[1] BLE стек от TI: http://habrahabr.ru/company/intellectro/blog/246005/
[2] nRF51822 Evaluation Kit: http://www.nordicsemi.com/eng/Products/Bluetooth-Smart-Bluetooth-low-energy/nRF51822-Evaluation-Kit
[3] nRF51822 Development Kit: http://www.nordicsemi.com/eng/Products/Bluetooth-Smart-Bluetooth-low-energy/nRF51822-Development-Kit
[4] nRF51822 Starter Kit: http://www.nordicsemi.com/eng/Products/2.4GHz-RF/nRFgo-Starter-Kit
[5] nRF51 DK: http://www.nordicsemi.com/eng/Products/nRF51-DK
[6] nRF51 Dongle: http://www.nordicsemi.com/eng/Products/nRF51-Dongle
[7] Источник: http://habrahabr.ru/post/246241/
Нажмите здесь для печати.