Универсальный внешний накопитель для всех iOS-устройств, совместим с PC/Mac, Android
Header Banner
8 800 100 5771 | +7 495 540 4266
c 9:00 до 24:00 пн-пт | c 10:00 до 18:00 сб
0 Comments

Содержание

Пробую NRF51822

Есть у меня китайский BLE модуль на nRF51822. Давно собирался с ним поэкспериментировать и вот руки наконец дошли. К сожалению информации о работе с этими модулями не так много, поэтому решил поделиться своим опытом.

Модуль nRF51822

Собственно модуль представляет собой распаянный на плату чип nRF51822 с всей необходимой обвязкой и пинами выведенными на пару гребёнок. Ну и как любой микроконтроллер он может быть прошит неким кодом, который может управлять портами ввода/вывода. Ну и главным бонусом идёт встроенный Bluetooth LE модуль.

Хочу особо обратить внимание на тот факт, что существует несколько вариаций чипа с разными вариантам памяти. Это будет важно в дальнейшем. Поэтому советую посмотреть прямо на чипе маркировку.

Естественным желанием было воткнуть модуль в брэдборд и потестировать. Но не ту-то было. Модуль имеет 4 ряда выводов, что как бы уже обламывает всю идею, но к тому-же оказалось выводы имеют нестандартный шаг 2 мм, так что даже на макетку его не воткнуть. В поисках какого-нибудь переходника наткнулся на готовую отладочную плату для таки модулей BLE400.

Плата BLE400

Вариант с платой выглядел поинтереснее, поэтому данная плата немедленно была закуплена у китайских коммерсантов. Собственно эта плата представляет собой разъём для модуля, пины, выведенные на штырьки, некоторые пины выведены на светодиоды (через перемычки), 2 пина подключены к кнопкам (опять же через перемычки). Так-же есть несколько стандартных разъёмов опять же подключенных к пинам модуля и USB -> COM преобразователь, который позволяет во первых запитать модуль через USB, а во вторых позволяет использовать UART прямо через USB. В общем простая, но полезная штука.

Итак плата BLE400 в наличии, модуль воткнут в разъём.

Втыкаем плату и видим в логах, что она определилась как /dev/ttyUSB0

1
2
3
4
5
6
7
8
9
$ dmesg
...
[35577.734982] usbcore: registered new interface driver usbserial
[35577. 734992] usbcore: registered new interface driver usbserial_generic
[35577.734999] usbserial: USB Serial support registered for generic
[35577.738586] usbcore: registered new interface driver cp210x
[35577.738596] usbserial: USB Serial support registered for cp210x
[35577.738619] cp210x 3-1:1.0: cp210x converter detected
[35577.740213] usb 3-1: cp210x converter now attached to ttyUSB0

Надо для неё проделать старый хитрый трюк с udev, чтобы получить стабильное неизменное имя. Ну что — поехали. Находим соответствующee USB устройство.

1
2
3
4
$ lsusb
...
Bus 003 Device 071: ID 10c4:ea60 Cygnal Integrated Products, Inc. CP2102/CP2109 UART Bridge Controller [CP210x family]
...

Смотрим udev аттрибуты

1
2
3
4
5
6
$ udevadm info --attribute-walk -n /dev/ttyUSB0
...
ATTRS{idProduct}=="ea60"
ATTRS{idVendor}=="10c4"
. ..
ATTRS{serial}=="0001"

И прописываем его в правило udev

/etc/udev/rules.d/99-ble400.rules
1
SUBSYSTEM=="tty", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", ATTRS{serial}=="0001" GROUP="users", MODE="0666", SYMLINK+="ble400"

Теперь перезагружаем правила

1
$ sudo udevadm control --reload-rules

И отсоединяем/подсоединяем кабель устройства и наблюдаем в папке /dev/ устройство ble400 которое является фактически ссылкой на реальный файл устройства. Ну, а нам того и надо.

В сети нашёл несколько вариантов общения с модулем. Как правило по умолчанию модуль должен иметь встроенный UART, что теоретически должно дать нам возможность как минимум проверить подаёт ли модуль какие-то признаки жизни.

USB serial

Итак втыкаем плату с модулем в USB разъём и пробуем подключиться к UART-у. В ответ на посылку ему команду «y» от должен ответить «Start …».

Не прокатило — не отзывается на команды вообще никак. Только загорается светодиод SPD. При отправке команды «y» моргает Rx. Возможно просто в чипе хрен знает какая прошивка или он вообще девственно чист. Т.е. вроде как соединения устанавливается, но ни на какие команды не реагирует. Возможно (и скорей всего) нужно просто подобрать правильную скорость соединения.

Ну как говорится — «не очень-то и хотелось». Будем пробовать дальше. Вопрос с работоспособностью по прежнему остаётся открытым.

Bluetooth

Попытка номер два. Предположил, что при подключении у нас должно быть видно какое-то Bluetooth устройство. Втыкаем опять плату с модулем в USB, чтоб подать питание. Для тестирования использовал смартфон Xiaomi mi4c, который имеет поддержку BLE. Для тестирования использовал софт от нордиков — nRF Toolbox и nRF Connect. Но всё тщетно — никаких признаков неизвестных BLE устройств обнаружено не было. Это как-то уже начинает напрягать.

Bus Pirate

Вот тут http://floe. butterbrot.org/matrix/hacking/nrf/ какие-то ребята экспериментируют с подключением через Bus Pirate. Попробовал данный вариант — к плате могу подконнектиться, прочитать память, записать туда что-то. Но возможности крайне скудные. Там какой-то самописный программатор собранный на коленке под конкретный девайс. Заглянул в код и закрыл от греха подальше. Всё, что можно узнать о подключенном устройстве это первые 1000 байт из памяти. Ну и записать в устройство можно все что угодно начиная с заданного адреса.

Однако это уже первый позитивный опыт — по крайней мере устройство отзывалось и давало записать в себя файлы прошивок. В остальном — никакого толку.

Ну что — пришлось расчехлить старый добрый J-Link, который уже давно пылился на полке. К этому моменту я уже изрядно подзае наковырялся с SDK и даже читал стандартную документацию из комплекта, поэтому в теме уже немножко шарил. Оказывается J-Link это как раз и есть самый прямой путь к счастью. Да и на плате BLE400 есть готовый разъём, поэтому она немедленно была вкорячена в J-Link-овский шлейфик и внимание! это важно подключена через USB к компьютеру. Как оказалось J-Link напрочь отказывается питать подключенное устройство.

В итоге получаем что-то эдакое:

Важно!!!

Владельцев китайских J-Link-ов предупреждаю — не пользоваться стандартной программой для прошивки из SDK nrfjprog. Она использует родную библиотеку от SEGGER, которая палит, что устройство является китайским клоном и убивает его (по счастью не намертво). Я на эти грабли наступил, но косяк этот для меня не в диковинку, поэтому быстро всё восстановил. Ну, а остальные — на свой риск и страх — я вас предупредил.

Собственно именно по этой причине на фото J-Link в разобранном состоянии — пришлось его заново перешивать, что невозможно без разбора.

Итак берём рабочий софт от J-Link и пробуем подключится J-Link Commander-ом. Собственно в командной строке указываем имя устройства (я был реально удивлён, что J-Link «знает» о nRF51822), скорость и тип подключения (swd)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$ JLinkExe -device nrf51822 -speed 1000 -if swd
SEGGER J-Link Commander V4. 84f ('?' for help)
Compiled May 9 2014 20:12:27
Info: Device "NRF51822_XXAA" selected (257 KB flash, 16 KB RAM).
DLL version V4.84f, compiled May 9 2014 20:12:24
Firmware: J-Link ARM V8 compiled Jul 17 2014 12:31:18
Hardware: V8.00
S/N: 158005115
Feature(s): RDI,FlashDL,FlashBP,JFlash,GDBFull
VTarget = 3.332V
Info: Found SWD-DP with ID 0x0BB11477
Info: Found Cortex-M0 r0p0, Little endian.
Info: FPUnit: 4 code (BP) slots and 0 literal slots
Found 1 JTAG device, Total IRLen = 4:
Cortex-M0 identified.
Target interface speed: 1000 kHz
J-Link>

Как мы видим произошло успешное подключение и даже определился тип чипа Device "NRF51822_XXAA", память (257 KB flash, 16 KB RAM) и процессор Found Cortex-M0 r0p0, что как бы намекает нам, что ура — всё работает.
Итак модуль подключен и подаёт признаки жизни — теперь осталось попробовать залить туда какой-то код и убедиться, что он заработает ну и что вообще мы можем в дальнейшем писать под него код.

Ну и остаётся нераскрыта тема SWD программаторов, коих у китайцев несть числа. Теоретически они должны работать, т. к. это урезанные JLink-и работающие только через SWD. Но у меня такого под рукой нет, поэтому сказать ничего не могу.

С софтом дело оказалось очень даже неплохо, хотя и немного запутано. Итак компания Nordic поставляет полный набор софта для разработки, кучу примеров и документации.

Качаем SDK с сайта https://developer.nordicsemi.com/nRF51_SDK/

Казалось бы вполне логично взять распоследнюю версию SDK. На сегодняшний день (январь 2018) это v14. Но не тут-то было. В принципе оно как бы должно работать, но SDK версии 14 полностью ориентирован на чипы серии nRF52 и все примеры по умолчанию используют библиотеки именно для этих чипов.

Я конечно вызов принял и было даже попробовал заменить ссылки на библиотеки для nRF51, но не особо преуспел в этом. Код успешно собирается, но залитый в устройство не работает. Пока притормозил эту тему — думаю можно заставить его работать, но я пока решил взять SDK более старой версии, а именно v10. Просто наугад: ) Ну и обнаружил, что там как раз всё вертится вокруг nRF51 семейства, что мне и нужно.

Итого для чипов семейства nRF51 стоит начать обучение с SDK v10. Просто будет чуть проще начать.

Итак качаем и распаковываем nRF51_SDK_10.0.0

Немного теории

Как уже писал выше чип nRF51822 это в общем-то обычный микроконтроллер. Поэтому мы можем просто написать для него код, залить в устройство и наслаждаться работой. Проблема тут одна — Bluetooth. При таком подходе нужно будет написать свой Bluetooth стэк, что хоть и в принципе возможно, но крайне трудно осуществимо иначе мне лишь останется позавидовать вашим способностям и крайне удивится зачем вы это читаете.

В принципе можно использовать этот чип не задействовав Bluetooth — просто как микроконтроллер. Но зачем, Ватсон?! Ну в общем это очевидный бред и нелепость.

Простым же смертным людям, которым от этого модуля нужен всё-таки Bluetooth нужен какой-то способ этот Bluetooth использовать прямо здесь и сейчас. И вот для этого случая компания Nordic поставляет некоторый код, называемый softdevice. Фактически это некая мини операционная система которая прошивается в устройство, а свой код мы пишем уже используя API этого softdevice-а.

Softdevice

Именно поэтому в примерах SDK как правило есть примеры в подпапке blank т. е. запускаемые на голом контроллере и примеры для конкретных версий softdevice-ов (с префиксом «s»). Как я понял softdevice-ы отличаются набором функций и размещением в памяти. Конкретно для nRF51822 есть sofdevice-ы версий s110, s120 и s130. Sofdevice-ы поставляются в виде закрытого кода и исходники их недоступны.

Вот по этой ссылке https://www.nordicsemi.com/eng/Products/Bluetooth-low-energy/nRF51822 в разделе «Downloads» можно скачать softdevice-ы для nRF51822. Я не стал мудрить — выкачал последний. Внутри просто hex файл прошивки. Кстати чуть позже нашёл в SDK папку softdevice где лежат те-же файлы.

Ну и чтоб не откладывать дела в долгий ящик зальём что-ли softdevice в наше устройство. Запускаем JLink, цепляем к нему ble400 c модулем и не забываем ble400 подключить к источнику питания (просто воткнем в USB компьютера). Ниже привожу последовательность команд JLink для заливки softdevice-а:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
J-Link>r
Reset delay: 0 ms
Reset type NORMAL: Resets core & peripherals via SYSRESETREQ & VECTRESET bit.
J-Link>w4 4001e504 2
Writing 00000002 -> 4001E504
J-Link>w4 4001e50c 1
Writing 00000001 -> 4001E50C
J-Link>w4 4001e514 1
Writing 00000001 -> 4001E514
J-Link>w4 4001e504 0
Writing 00000000 -> 4001E504
J-Link>r
Reset delay: 0 ms
Reset type NORMAL: Resets core & peripherals via SYSRESETREQ & VECTRESET bit.
J-Link>loadfile /home/roman/. Projects/nrf51/softdevice/s130_nrf51_2.0.1_softdevice.hex
Info: J-Link: Flash download: Flash programming performed for 2 ranges (108544 bytes)
Info: J-Link: Flash download: Total time needed: 2.012s (Prepare: 0.126s, Compare: 0.041s, Erase: 0.000s, Program: 1.827s, Verify: 0.010s, Restore: 0.007s)
J-Link>r
Reset delay: 0 ms
Reset type NORMAL: Resets core & peripherals via SYSRESETREQ & VECTRESET bit.

Команды типа w4 это запись 4-х байтового значения по заданному адресу. Конкретно эти я нашёл где-то в сети. Не очень чётко понимаю что там делается. Заявлено было, что это стирание каких-то областей. В общем надо будет подразобраться с этим шаманством. Но тем не менее это работает. Как видно из команды loadfile заливаю туда прямо hex файл.

Подсмотрел тут

На этом считаю заливку softdevice-а законченной. Теперь нам нужно сварить и залить в модуль какой-нибудь интересный код, чтоб убедиться, что мы можем таки им управлять. По традиции это будет мигающий светодиод — благо их на плате аж 5 штук и ничего дополнительно делать не надо. Но для начала некоторые нюансы SDK.

BLE400 и SDK

Как оказалось все примеры рассчитаны на стандартные платы от Nordic. Но в то-же время нордики благородно оставили возможность добавить свою плату. Фактически нужно создать файл где нужно пробить соответствия физических пинов устройства внутренним константам SDK.

С другой стороны все эти платы в SDK не более чем некие наборы констант (тупо сишные define-ы) и можно вполне обойтись без всего этого геморроя с поддержкой плат. Тем не менее раз уж разобрался — поделюсь опытом.

Для SDK v10 все определения плат лежат в папке examples/bsp. Создаём там файл платы custom_board.h. И в дальнейшем будем использовать именно его.

Запускаем тестовый пример

Как уже писал выше для теста будем использовать простейший пример — моргающие светодиоды. Такой пример есть SDK. расположен он в папке examples/peripheral/blinky. Как мы видим в ней есть как уже скомпилированные варианты прошивок под различные платы, так и исходники под конкретные платы. Нашей платы BLE400 там очевидно нет, поэтому просто скопируем какую-нибудь из существующих и потом подправим её под свои нужды:

1
$ cp -R pca10028 ble400

Вот так вот незатейливо. Внутри у нас 2 папки blink и s110. Первая нам не нужна и её можно смело удалить, а вторая это как раз вариант под softdevice. В данном случае под s110, хотя мы только что залили в модуль s130, но для такого примитивного примера это не беда.

Итак входим в папку s110. Внутри подпапки для различных компиляторов. Нас интересует armgcc. Ура — мы наконец видим Makefile и какой-то ld файл. Ну и к слову исходный код лежит в examples/peripheral/blinky — это файл main.c. Собственно эти 3 файла нам и нужны.

Makefile

Итак для начала правим Makefile. Заменяем везде CFLAGS = -DBOARD_PCA10028 на CFLAGS = -DBOARD_CUSTOM. Так-же меняем
везде по тексту xxac на xxaa. Причина смотри выше про типы чипов. Пример сделан под другой тип чипа. Ну и нужно заменить имя softdevice-а — S110 на S130.

Я ещё поменял PROJECT_NAME на PROJECT_NAME := blinky_s110_ble400.

ld файл

Далее нам надо подправить ld файл blinky_gcc_nrf51.ld — в этом файле описаны области памяти устройства и по умолчанию там данные для xxac чипов, а у нас xxaa. Поэтому нужно его поправить. Чтобы найти правильные значения для нашего чипа посмотрим папку components/softdevice/s130/toolchain/armgcc

1
2
3
4
5
6
7
$ ls -l components/toolchain/gcc
...
-rw-r--r-- 1 roman roman 391 ноя 9 2015 armgcc_s130_nrf51422_xxaa.ld
-rw-r--r-- 1 roman roman 391 ноя 9 2015 armgcc_s130_nrf51422_xxac. ld
-rw-r--r-- 1 roman roman 391 ноя 9 2015 armgcc_s130_nrf51822_xxaa.ld
-rw-r--r-- 1 roman roman 390 ноя 9 2015 armgcc_s130_nrf51822_xxab.ld
...

Вот они родимые. Смотрим что там у нас для xxaa.

Нас в этом файле интересует блок MEMORY — берём значения для полей ORIGIN и переносим в наш файл blinky_gcc_nrf51.ld. Далее нам надо посчитать значения полей LENGTH. Для FLASH это будет размер флеш-памяти устройства (для xxaa 256k) минус размер, который занимает softdevice (для S130 это 112k). Для MEM соответственно LENGTH будет равен размеру ОЗУ (16k для xxaa) минус размер ОЗУ зарезервированный softdevice-ом (для S130 — 10k).

Итого получаем следующий блок MEMORY, который мы и запишем в ld файл.

1
2
3
4
5
MEMORY
{
FLASH (rx) : ORIGIN = 0x1c000, LENGTH = 256k - 112k
RAM (rwx) : ORIGIN = 0x20002800, LENGTH = 16k - 10k
}

На этом с ld файлом мы закончили.

Компиляция

Да — совсем забыл — для сборки все этой истории в системе должны быть установлен компилятор для ARM процессоров. Это пакет gcc-arm-none-eabi. Для успешной сборки нам надо прописать путь к бинарнику компилятора в components/toolchain/gcc/Makefile.posix. Там по умолчанию какой-то хитрый путь, но в моём случае этот файл сейчас выглядит вот так

1
2
3
GNU_INSTALL_ROOT := /usr/
GNU_VERSION := 4.9.3
GNU_PREFIX := arm-none-eabi

Ну собственно вроде всё. Теперь возвращаемся в папку с Makefile-ом нашего тестового проекта с мигающим светодиодом. Ну и собственно т. к. у нас всё уже готово просто запускаем сборку.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$ make
rm -rf _build
echo Makefile
Makefile
mkdir _build
Compiling file: system_nrf51. c
Compiling file: main.c
Compiling file: nrf_delay.c
Compiling file: gcc_startup_nrf51.s
Linking target: nrf51422_xxaa_s110.out
make[1]: вход в каталог «/home/roman/.Projects/nrf51/nRF51_SDK_10.0.0_dc26b5e/examples/peripheral/blinky/ble400/s110/armgcc»
Preparing: nrf51422_xxaa_s110.bin
Preparing: nrf51422_xxaa_s110.hex

text data bss dec hex filename
1432 104 172 1708 6ac _build/nrf51422_xxaa_s110.out

make[1]: выход из каталога «/home/roman/.Projects/nrf51/nRF51_SDK_10.0.0_dc26b5e/examples/peripheral/blinky/ble400/s110/armgcc

Как видим всё прошло успешно, правда в выводе мелькает nrf51422 (где-то я не немножко недопилил), но пока оставим это в покое. В данном случае на работу это не повлияет, хотя конечно надо будет разобраться.

Теперь у нас должна появиться папка _build в которой будет готовый hex файл прошивки.

1
2
3
4
5
6
7
8
9
$ ls -l _build
-rw-r--r-- 1 roman roman 7300 янв 7 13:23 gcc_startup_nrf51. o
-rw-r--r-- 1 roman roman 1136 янв 7 13:23 main.o
-rwxr-xr-x 1 roman roman 1536 янв 7 13:23 nrf51422_xxaa_s110.bin
-rw-r--r-- 1 roman roman 4367 янв 7 13:23 nrf51422_xxaa_s110.hex <- вот он
-rw-r--r-- 1 roman roman 26325 янв 7 13:23 nrf51422_xxaa_s110.map
-rwxr-xr-x 1 roman roman 140640 янв 7 13:23 nrf51422_xxaa_s110.out
-rw-r--r-- 1 roman roman 888 янв 7 13:23 nrf_delay.o
-rw-r--r-- 1 roman roman 1328 янв 7 13:23 system_nrf51.o

Заливаем прошивку в устройство

Запускаем JLink и BLE400 так-же как мы это делали в случае с прошивкой softdevice. Не забываем подавать питание на BLE400! Ну и выполняем следующий набор команд: loadfile, r, g — смотри ниже.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
$ JLinkExe -device nrf51822 -speed 1000 -if swd
SEGGER J-Link Commander V4. 84f ('?' for help)
Compiled May 9 2014 20:12:27
Info: Device "NRF51822_XXAA" selected (257 KB flash, 16 KB RAM).
DLL version V4.84f, compiled May 9 2014 20:12:24
Firmware: J-Link ARM V8 compiled Jul 17 2014 12:31:18
Hardware: V8.00
S/N: 158005115
Feature(s): RDI,FlashDL,FlashBP,JFlash,GDBFull
VTarget = 3.332V
Info: Found SWD-DP with ID 0x0BB11477
Info: Found Cortex-M0 r0p0, Little endian.
Info: FPUnit: 4 code (BP) slots and 0 literal slots
Found 1 JTAG device, Total IRLen = 4:
Cortex-M0 identified.
Target interface speed: 1000 kHz
J-Link>loadfile ./_build/nrf51422_xxaa_s110.hex
Info: J-Link: Flash download: Flash programming performed for 1 range (2048 bytes)
Info: J-Link: Flash download: Total time needed: 0.182s (Prepare: 0.090s, Compare: 0.002s, Erase: 0.043s, Program: 0.036s, Verify: 0.000s, Restore: 0.007s)
J-Link>r
Reset delay: 0 ms
Reset type NORMAL: Resets core & peripherals via SYSRESETREQ & VECTRESET bit.
J-Link>g

После этого наблюдаем плату с мигающими светодиодами.

В итоге всё получилось. Модуль рабочий и его можно успешно прошивать. Теперь осталось проверить остальные возможности и в особенности самую мякотку — BLE. Но это уже тема для отдельной статьи. Ну и нужно ещё подчистить Makefile, автоматизировать загрузку прошивки — в общем причесать весь процесс, чтобы не отвлекаться на рутину.

  • Пробуем запустить Bluetooth
  • https://devzone.nordicsemi.com/question/70314/program-bluetooth-for-nrf51822-yunjia-board-with-stlink-v2/
  • https://devzone.nordicsemi.com/blogs/22/getting-started-with-nrf51-development-on-mac-os-x/
  • https://leavesified.wordpress.com/24.03.2016/setup-nrf51-development-on-linux/
  • http://floe.butterbrot.org/matrix/hacking/nrf/
  • https://developer.nordicsemi. com/nRF5_SDK/nRF51_SDK_v8.x.x/doc/8.0.0/s110/html/a00067.html
  • https://gist.github.com/bertrandmartel/a38315c5fe79ec5c8c6a9ed90b8df260
  • https://medium.com/@robertmassaioli/using-the-ble400-and-nrf51822-on-osx-a57ed723510d
  • https://medium.com/@robertmassaioli/picking-the-right-nrf5-chip-for-you-8e334493a185
  • https://www.waveshare.com/wiki/NRF51822_Eval_Kit
  • https://www.waveshare.com/nrf51822-eval-kit.htm
  • https://www.funwithelectronics.com/? id=168
  • https://github.com/sandeepmistry/arduino-nRF5#flashing-a-softdevice
  • http://redbearlab.com/nrf51822-sdk/
  • https://gustavovelascoh.wordpress.com/23.01.2017/starting-development-with-nordic-nrf5x-and-gcc-on-linux/
  • https://leavesified.wordpress.com/24.03.2016/setup-nrf51-development-on-linux/
  • http://infocenter.nordicsemi.com/index.jsp? topic=%2Fcom.nordic.infocenter.softdevices51%2Fdita%2Fnrf51%2Fsoftdevices.html
  • https://diyiot.wordpress.com/29.11.
    2015/ble-application-with-nrf51822-firmware-flashing/

Введение в маяк Bluetooth nRF51822

Введение в маяк Bluetooth nRF51822

После nRF8001, Nordic Semiconductor выпустила микросхему nRF51822, который является одним из самых популярных BLE-устройства. Это комплексное решение привлекательно для разработчиков благодаря своему небольшому размеру., а интеграция ЦП Cortex-M0 означает, что для разработки доступно множество компиляторов.. В этом посте мы обсудим, каких больших успехов мы можем добиться с помощью волшебства Bluetooth-маяка nRF51822.. Давайте начнем:

Ключевые особенности маяка Bluetooth n51822

По факту, любой разработчик может использовать нРФ51822 ibeacon с бесплатными инструментами в заданной среде разработки. Для разработки комплекта смарт-маяков Bluetooth nRF51822 Bluetooth, обычно рекомендуется использовать инструментальную цепочку поставщика, такие как Keil или IAR. Вот отличительные особенности радиомаяка Bluetooth n51822. .

2.4 ГГц трансивер

  • -93 Чувствительность дБм Bluetooth с низким энергопотреблением
  • 250кбит / с, 1Мбит / с, 2Мбит/с поддерживает скорость передачи данных
  • Мощность передачи -20 к +4 дБм с шагом 4 дБ
  • Мощность передачи -30 дБм Режим шепота
  • 13 мА пик RX, 10.5 мА пик TX (0 дБм)
  • RSSI (1разрешение дБм)

ARM® Cortex™-M0 32 битовый процессор

  • 275 мкА/МГц из флэш-памяти
  • 150 мкА/МГц из ОЗУ
  • Отладка последовательного провода(SWD)

Программное обеспечение серии S100 готово к работе

объем памяти

  • 256 КБ встроенной флэш-памяти программ
  • 16 кБ RAM

Поддержка неконкурентной многопротокольной работы

  • Совместимость в эфире с серией nRF24L

Гибкое управление питанием

  • Диапазон напряжения питания 1.8 V к 3.6 V
  • 2.5 мкс быстрого пробуждения с использованием 16 МГц RCOSC
  • 420 @ 3 В выключенном режиме
  • 530 @ 3 V в выключенном состоянии + 1 сохранение оперативной памяти региона
  • 2. 3 мкА @ 3 В режиме ВКЛ., все блоки бездействуют

Другие известные значения включают:

8/9/10 бит АЦП – 8 настраиваемые каналы

31 Контакты ввода/вывода общего назначения

Два 16 бит и один 24 битовые таймеры с режимом счетчика

Мастер SPI

Двухпроводной Мастер (12С-совместимый)

UART (CTS / RTS)

Независимое от процессора программируемое периферийное соединение(ИЦП)

Квадратурный декодер (QDEC)

Аппаратное шифрование AES

Счетчик реального времени (RTC)

6×6 пакет QFN мм

Блок-схема Bluetooth nRF51822

Приложения Bluetooth nRF51822

nRF51822 совместим по беспроводной связи с серией продуктов Nordic nRF24L., и эти радиоприемники используются во многих продуктах. Выпуск nRF51822 под управлением IPv6 открывает двери для продуктов, которые управляют маяком nRF51822 через Интернет., вместо использования Wi-Fi. Ниже показаны типичные варианты использования маяка BLE nRF51822. .

Компьютерная периферия и устройства ввода/вывода

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

Интерактивные развлекательные устройства

Сюда входят устройства дистанционного управления, такие как 3D-очки., игровой контроллер, так далее.

Персональные сети

В том числе медицинские приборы, датчики здоровья и фитнеса и устройства мониторинга, брелоки + наручные часы, так далее.

Игрушки с дистанционным управлением

Различия между nRF51822 и nRF51802

nRF51822 уже является зрелым устройством и в настоящее время находится в третьей редакции.. нРФ 51802 это удешевленная версия nRF51822 для удовлетворения большего количества потребностей потребителей и nRF 51822 p2p продукты. Нет разницы в емкости FLASH RAM между nRF51822-QFAA и nRF51802-QFAA.. Разница в том,:

  1. Чувствительность приема nRF51802 составляет -91 дБм. , а у nRF51822 -93 дБм, что приводит к разнице в расстоянии приема.
  2. Мощность передачи в режиме энергосбережения nRF51822 составляет -35 дБм, nRF51802 составляет -30 дБм. Это приводит к различному энергопотреблению передачи чипа., а энергопотребление nRF51822 ниже.
  3. В случае источника питания OdBm @DC/DC: nRF51822 передает ток 9,7 мА, nRF51802 передает ток 10 мА. Одна и та же мощность передачи потребляет разные токи, а nRF51822 экономит больше энергии.
  4. Внутреннее время пробуждения отличается. Время пробуждения nRF51822 составляет 4,4 мкс., в то время как время пробуждения nRF51802 составляет 7,7 мкс.
  5. В режиме ожидания, ток nRF51822 составляет 2,6 мкА., ток nRF51802 составляет 3,0 мкА., ток в режиме ожидания отличается.

Почему стоит выбрать маяк Bluetooth nRF51822

nRF51822 — мощный, сверхмаломощный, многопротокольная беспроводная система на кристалле (SoC), идеально подходит для беспроводных приложений Bluetooth с низким энергопотреблением и 2,4 ГГц со сверхнизким энергопотреблением. nRF51822 построен на 32 битовый процессор ARM® Cortex™-M0 с флэш-памятью 256 КБ + 16кБ RAM. Встроенный приемопередатчик 2,4 ГГц поддерживает Bluetooth с низким энергопотреблением и работу на частоте 2,4 ГГц., с режимом 2,4 ГГц, совместимым по беспроводной связи с серией nRF24L Nordic Semiconductor.

nRF51822 также имеет множество аналоговых и цифровых периферийных устройств, которые позволяют взаимодействовать через межсоединение программируемых периферийных устройств. (ИЦП) система без участия процессора. Гибкая схема отображения 31-контактного GPIO позволяет добиться полной гибкости конструкции, а также расположения и функций контактов.. Он поддерживает стеки протоколов S110 Bluetooth Low Energy и 2,4 ГГц. (в том числе Газель), оба из них находятся в свободном доступе в комплекте разработки программного обеспечения nRF518.. nRF51822 доступен в 48-контактном корпусе QFN размером 6×6 мм и в 3,5-контактном корпусе.×3.8мм 64-шариковая шкала чипов уровня вафли (ВЛКСП).

Часто задаваемые вопросы о маяке Bluetooth nRF51822

1. Почему можноUSB-ключ nRF51822 можно программировать извне.?

Пожалуйста, проверьте, находится ли перемычка на 9-контактном однорядном контакте на стороне OUT.. Также, пожалуйста, проверьте правильность подключения.

2. nrf51822 AK почему KEIL не может скачать программу?

Первый, проверьте, нормально ли питается система, а затем попробуйте использовать nRF51 Programming of nRFgo Studio, чтобы проверить, есть ли проблема с настройками проекта KEIL..

3. На моем 32-битном компьютере с Windows XP, код ошибки 2908 возникает при установке nRF51 SDK.

Повторная установка после удаления nRF51 SDK может привести к 2908 ошибка. Пожалуйста, используйте диспетчер задач (Ctrl + Сдвиг + Esc) чтобы завершить настройку nRF514/8SDK. На этом этапе SDK должен быть установлен на компьютере..

4. Отладчик не останавливается в точке останова.

Некоторые проекты Keil в SDK выбрали уровень оптимизации. 3 (-03) и Оптимизировать параметры оптимизации времени. В это время, при отладке этих приложений, некоторые точки останова могут не работать.

  • Нажмите Alt + F7, чтобы открыть диалоговое окно параметров цели.
  • Выберите С/С++
  • Выберите уровень оптимизации 0 из выпадающего списка
  • Не выбирайте Оптимизировать по времени

5. Не удается синхронизироваться с программным обеспечением во время отладки.

Использование отладчика SEGGER для установки или изменения точек останова для временной приостановки работы ЦП во время работы системы может привести к потере синхронизации.. Следует избегать установки точек останова во время работы системы..

nRF51822 — Bluetooth с низким энергопотреблением, ANT и SoC 2,4 ГГц

SoC серии nRF51

Обзор

nRF51822 SoC

SoC общего назначения Bluetooth с низким энергопотреблением идеально подходит для решений с одним чипом или в качестве устройства подключения.

16 МГц Cortex-M0
256/128 КБ флэш-памяти, 32/16 КБ ОЗУ
2,4 ГГц трансивер

2 Мбит/с, 1 Мбит/с, 250 кбит/с , SPI, TWI

10-разрядный АЦП

Читать далее

nRF51422 SoC

Многопротокольная система на кристалле ANT/Bluetooth общего назначения с низким энергопотреблением. Это nRF51822 с поддержкой ANT.

16 МГц Cortex-M0
256/128 КБ флэш-памяти, 32/16 КБ ОЗУ
2,4 ГГц трансивер
2 Мбит/с, 1 Мбит/с, 250 кбит/с
UART, SPI, TWI

10-битный АЦП

Читать далее

nRF51824 SoC

nRF51824 — это однокристальная система Bluetooth с низким энергопотреблением, отвечающая требованиям AEC Q100 Grade 2. Это автомобильный класс nRF51822.

16 МГц Cortex-M0
256 КБ флэш-памяти, 16 КБ ОЗУ
2,4 ГГц трансивер
2 Мбит/с, 1 Мбит/с, 250 кбит/с

10-разрядный АЦП

AEC-Q100

Читать далее

SoftDevices

Совместимость с nRF51822

СофтДевайс S110

S110 — это стек периферийных протоколов, отвечающий требованиям Bluetooth 4. 1, для серии nRF51.

Одновременный канал в качестве периферийного устройства и широковещательного устройства
Настраиваемая таблица ATT
Конфиденциальность 1.1
Режим безопасности 1 — уровни 1, 2 и 3
Поддержка пользовательских UUID
Поддержка одновременного использования нескольких протоколов с проприетарными протоколами 2,4 ГГц

Читать далее

S120: Bluetooth 4.1

S120 — это центральный или периферийный стек протоколов Bluetooth 4.1 для серии nRF51.

8 параллельных каналов в качестве центрального с наблюдателем/периферийного с вещателем

Настраиваемая таблица ATT

Конфиденциальность 1.1

Режим безопасности 1 — уровни 1, 2 и 3

Поддержка пользовательских UUID

Поддержка одновременного использования нескольких протоколов с проприетарными протоколами 2,4 ГГц

Читать далее

S130: Bluetooth 4.
2

S130 — это стек протоколов центрального и периферийного устройств серии nRF51, отвечающий стандарту Bluetooth 4.2.0005

Конфиденциальность 1.1

Режим безопасности 1 — уровни 1, 2, 3 и 4

Поддержка пользовательских UUID

Поддержка одновременного использования нескольких протоколов с проприетарными протоколами 2,4 ГГц

LE0 Соединения 9002 Читать далее

Соответствующие SDK

Нажмите, чтобы прочитать подробнее

nRF5 SDK

Комплект для разработки программного обеспечения Bluetooth LE и ANT

SDK nRF5 — это высококачественный, тщательно протестированный комплект для разработки программного обеспечения, который ускоряет разработку программного обеспечения для SoC серии nRF52 и nRF51. Он содержит сотни полезных модулей встроенного ПО и примеры, которые помогут в создании вашего приложения.

 

Подробнее

Наборы для разработки

Оценка, создание прототипа и разработка с помощью nRF51822

nRF51 ДК

nRF51 DK — это запатентованный комплект разработки Bluetooth Low Energy, ANT и 2,4 ГГц для SoC серии nRF51. Разрабатывайте приложения для SoC nRF51822, nRF51422, nRF51824 и nRF51802.

Читать далее

ключ nRF51

Ключ nRF51 — это запатентованный USB-ключ Bluetooth с низким энергопотреблением, ANT и 2,4 ГГц для SoC серии nRF51. Разрабатывайте приложения для SoC nRF51822, nRF51422 и nRF51824.

Читать далее

Комплект профилировщика мощности

Комплект Power Profiler Kit — это простой в использовании инструмент для измерения и оптимизации энергопотребления встроенных решений.

Читать далее

Связанные приложения

Нажмите, чтобы узнать больше

Маяки

Компьютерная периферия

Спорт и фитнес

Игрушки и игры

VR и дополненная реальность

Носимые устройства

Наборы для разработки

Оценка, создание прототипа и разработка с помощью nRF51822

nRF51 ДК

nRF51 DK — это запатентованный комплект разработки Bluetooth Low Energy, ANT и 2,4 ГГц для SoC серии nRF51. Разрабатывайте приложения для SoC nRF51822, nRF51422, nRF51824 и nRF51802.

Читать далее

ключ nRF51

Ключ nRF51 — это запатентованный USB-ключ Bluetooth с низким энергопотреблением, ANT и 2,4 ГГц для SoC серии nRF51. Разрабатывайте приложения для SoC nRF51822, nRF51422 и nRF51824.

Читать далее

Комплект профилировщика мощности

Комплект Power Profiler Kit — это простой в использовании инструмент для измерения и оптимизации энергопотребления встроенных решений.

Читать далее

Последние новости

Корпоративный

13 марта 2023

Партнерство в области дизайна и решения обеспечивает конеч…

Читать далее

Корпоративный

09 марта 2023

Nordic предлагает посетителям заказать персонализированный интерактивный. ..

Читать далее

Клиент

02 марта 2023

Легкий смарт-трекер Galaxy SmartTag от Samsung Elect…

Читать далее

Архив новостей

nrf51822 · GitHub Topics · GitHub

Вот 55 публичных репозиториев соответствует этой теме…

Лотлаб / Lot60-BLE-клавиатура

Звезда 140

Куйомалайни / антардуино

Звезда 80

лаборатория11 / nrf5x-база

Звезда 75

микук / arduino-nRF5-умные часы

Звезда 57

НайсЛабс / швабры-vida-pm-watchdog

Звезда 51

KitSprout / IMUCube

Звезда 50

александрлаврушко / BLE-HUD-навигация-ESP32

Звезда 46

ЗДЖ-ТЭК / ZJ-RT-Thread-NIMBLE-NORDIC

Звезда 29

Бертранмартель / Bluetooth-пульт дистанционного управления

Звезда 27

d00616 / Arduino-NVM

Звезда 24

Оллехойген / нРФ-ДТМ

Звезда 23

платформа / платформа-нордикнрф51

Звезда 20

Касберт / nrf_beacon_itcpolyuhk

Звезда 17

сяонсяо / BluetoothToolKit

Звезда 13

Жанматье / nrf51822-маломощный датчик

Звезда 11

VNGIoTLab / Arduino_VBLUno_nRF51822

Звезда 7

озаналтинская / BLE_Gamepad_NRF51822

Звезда 6

Коннакс-Ой / Bleam-сканер-3

Звезда 4

монстр1025 / nrf51822-ble-тег

Звезда 4

VNGIoTLab / вблуно

Звезда 3

Улучшить эту страницу

Добавьте описание, изображение и ссылки на nrf51822 страницу темы, чтобы разработчикам было легче узнать о ней.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *