Добрый день, сообщество Хабра! Настало время каникул для студентов технических вузов.
А это значит, что пришло время домашних проектов и покорения новых вершин микроэлектронных технологий.
Сегодня мы поговорим о моих исследованиях с платами на базе чипа NRF51822, который представляет собой несколько устаревший Bluetooth-модуль от Nordic Semiconductor. Эта компания славится радиомодулями с низким потреблением тока и микросхема NRF51822 не является исключением.
Но не будем отклоняться от темы.
Давайте поговорим о железе.
Создание отладочного стенда Платы были заказаны еще в октябре.
yj-14015-nrf51822 для экспериментов с Bluetooth. Покупать платы, не припаяв их к штырьковым разъемам для стандартных проводов для любителей электроники, было плохой идеей.
yj-14015-nrf51822
Расстояние между контактами менее 1 мм создало большие трудности для меня, человека с крайне ограниченным опытом пайки.
Выводы на плате не были предназначены для пайки к проводам и их было легко оторвать.
Такая участь постигла единственный силовой выход VDD. Но с помощью соседа нам удалось припаять провод к выводу конденсатора на плате.
Вместе были соединены выходы GND, SWDIO, SWCLK и некоторые другие выходы GPIO. В результате получилось нечто похожее на Франкенштейна: Паяная плата
Будем отлаживать и прошивать наше устройство с помощью СТ-Линк V2 Схема подключения предельно проста и логична:
СТ-Линк V2 | nrf51822 |
---|---|
3,3 В | ВДД |
Земля | Земля |
СВДИО | СВДИО |
СВДКЛК | СКЛК |
Прежде всего я попытался прочитать память nrf51822, используя Утилита STM32 ST-LINK .
С некоторыми оговорками это работало с платами STM32, но не с nrf. На этом моя работа с доской временно прекратилась.
Чуть позже я нашел Статья 1 И статья 2 о работе с nrf51822. Там были ссылки на SDK и подробное описание организации nrf-памяти.
Автор статей использовал более дорогой отладчик JLink, в отличие от нас.
Дешевизна решения очень важна, если вы плохой студент :).
Изучение SDK Если вы хотите использовать функцию Bluetooth, что вполне логично для блютуз чипа, вам придется поставить так называемый «softdevice» в начало программируемой памяти nrf5. Он поставляется в виде прошивки и содержит функцию Bluetooth. В оставшейся памяти записана ваша прошивка.
Из него можно вызвать процедуры softdevice для настройки bluetooth. Существует несколько различных программных устройств.
Для nrf51 можно использовать s110 (для серверных приложений) и s130 (для серверных и клиентских приложений).
Чтобы понять совместимость версий SDK и программных устройств, существует матрица совместимости .
Это показывает, что для нашей платы подходит SDK до версии 12.3.0. Но мы остановимся на SDK 10.0.0 потому что он поддерживает s110 и s130. Настройка OpenOCD В примерах из SDK и в статьях для прошивки через JLink используется утилита nrfjprog, а нам нужно прошивать через ST-Link V2. Вместо этого мы воспользуемся крутой программой OpenOCD , скачать для Windows .
Позволяет прошивать и отлаживать Мне чертовски надоела Туева огромное количество различных плат и микросхем.
Существует конфигурация и для чипа nrf51. Чтобы заставить OpenOCD прошить нашу плату, нам нужно запустить команду в формате, представленном ниже (после добавления папки OpenOCD/bin в Path).
Вы можете прочитать больше о командах OpenOCD в документация .
Дьявол, как всегда, кроется в деталях:openocd -f interface/stlink.cfg -f target/nrf51.cfg -c init -c "reset halt" ^ -c "nrf51 mass_erase 0" -c "flash write_image <PATH_TO_HEX> <OFFSET>" ^ -c reset -c exit
- «перезагрузка остановки» отправляет команду сброса чипа и останавливает устройство.
В этом состоянии прошивку можно стереть/записать
- "nrf51 Mass_erase 0" разрешает запись в раздел загрузчика и стирает всю программируемую память чипа (в некоторых случаях поможет избежать ошибок загрузки прошивки)
- вместо нужно подставить путь к шестнадцатеричному файлу
- устанавливает смещение адреса записи прошивки.
Этот параметр полезен, если вы хотите прошить свою прошивку отдельно от программного устройства.
Если вы хотите записать прошивку начиная с начала памяти (с адреса 0x0), то этот параметр можно сбросить
- сброс сбрасывает чип, чтобы он работал с новой прошивкой
Для загрузки s130 на плату можно использовать следующую последовательность команд: set file=<nRF5_SDK>/components/softdevice/s130/hex/s130_nrf51_1.0.0_softdevice.hex
openocd -f interface/stlink.cfg -f target/nrf51.cfg -c init -c "reset halt" ^
-c "nrf51 mass_erase 0" -c "flash write_image %file%" -c reset -c exit
Затем вы можете залить нашу прошивку.
Важно удалить «nrf51 Mass_erase 0», чтобы софтдевайс не стирался.
А также не забывайте про офсет. Для s130 смещение — 0x1c000, а для s110 — 0x18000. Эти значения можно найти в характеристиках на с130 И с110 .
set file=<PATH_TO_HEX>
openocd -f interface/stlink.cfg -f target/nrf51.cfg -c init -c "reset halt" ^
-c "flash write_image %file% 0x1c000" -c reset -c exit
Теперь программируемая память nrf51822 должна содержать софтдевайс и нашу прошивку.
Для тестов я использовал пример из папки /examples/ble_peripheral/ble_app_beacon и приложение для Android под названием «nRF Connect».
После выполнения команд я начал видеть устройство под названием nRF. Это то, чего мы хотели.
Настройка проекта CLion SDK nrf51 содержит примеры на основе make-файлов.
Для работы с CLion необходимо описать сборку проекта с помощью файлов CMake. Гугление показало, что Проект CMake для nrf51 уже есть на Github. Он написан для использования с SDK 12.X.X. Из-за этого некоторые пути к файлам нашего SDK 10.0.0 были написаны неправильно.
Кроме того, в проекте также используется утилита nrfjprog. Поэтому пришлось повозиться с настройкой проекта и переписать таргеты для прошивки с использованием OpenOCD. Результат моей работы можно посмотреть на сайте github .
В readme описаны инструкции по настройке проекта и отладке в CLion. P.S. Многие технические детали, связанные с особенностями nrf51822, ускользнули от моего повествования.
Надеюсь когда-нибудь восполню пробелы, дополнив статью или написав новую.
Теги: #Программирование микроконтроллеров #C++ #embedded #CMake #clion #nrf51822 #openocd #ST-Link
-
Ведение Блога – Весело И Прибыльно
19 Oct, 24 -
Следите За Своими Глазами!
19 Oct, 24 -
Обход Защиты Уровня Управления
19 Oct, 24 -
Поучительный Стартап
19 Oct, 24 -
Запуск Reactos Из Раздела Btrfs
19 Oct, 24 -
Adobe Анонсировала Новую Линейку Продуктов.
19 Oct, 24