Содержание

NRF51822 Bluetooth chip decryption

Что такое чип NRF51822 BLE?

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

Особенности NRF51822

  • Одночиповое, высокогибкое, многопротокольное устройство 2,4 ГГц;
  • 32-разрядное ядро процессора ARM Cortex M0;
  • 256 КБ флэш-памяти, 16 КБ ОЗУ;
  • Поддержка стека протоколов S110 Bluetooth Low Energy;
  • S110 требует 80 кБ памяти;
  • Безопасность потоков и защита во время выполнения;
  • API, управляемый событиями;
  • Беспроводная совместимость с серией nRF24L;
  • 3 скорости передачи данных (2 Мбит/с, 1 Мбит/с, 250 кбит/с);
  • Выходная мощность +4 дБм;
  • Чувствительность -92,5 дБм, Bluetooth с низким энергопотреблением;
  • Настраиваемое отображение входов/выходов для аналоговых и цифровых входов/выходов;
  • Система PPI для максимальной энергоэффективности приложений и упрощения кода;
  • Гибкая система управления энергопотреблением с автоматическим управлением энергопотреблением для каждого периферийного устройства;

Распиновка nRF51822

Распиновка nRF51822 состоит из 36 выводов, каждый из которых имеет определенную функцию. Выводы можно разделить на четыре основные категории: GPIO, ADC, I2C и PWM. Выводы GPIO могут использоваться для цифрового ввода-вывода и могут быть настроены как вход или выход. Контакты ADC могут использоваться для аналогового ввода, а контакты I2C и PWM — для связи и управления PWM.

83853322 c9d08e80 a71d 11ea 8fd2 7abbc8d507dd

Помимо вышеупомянутых выводов, nRF51822 также имеет два вывода сброса, два вывода Chip Enable, два вывода VTREF, четыре вывода питания и несколько других выводов. Выводы сброса используются для сброса устройства, выводы Chip Enable — для активации устройства, а выводы VTREF — для аналогового опорного напряжения.

Как запрограммировать NRF51822?

Программирование NRF51822 ble — это немного сложная задача, ниже приведены шаги.

Среда разработки и использование GPIO

Шаг 1. Инструменты разработки

MDK Microcontroller Development Kit
MDK Microcontroller Development Kit
v12.2.0 NRF51 SDK Development Kits
v12.2.0 NRF51 SDK Development Kits

Шаг 2. Создание среды разработки

Создайте новую папку, где component — это распакованный файл сжатого пакета SDK. Внутри файла config находится файл sdk_config.h, который копируется из примеров в SDK. Users — это папка, в которой хранится проект MDK.

Create a new folder nRF51822 development

Откройте MDK и установщик пакетов. Затем найдите и выберите чип nRF51822, чтобы установить необходимые пакеты.

install packs for nRF51822 in MDK
install packs for nRF51822 in MDK

Как показано на рисунке, выберите файл CORE и файл Startup.

Select the CORE and Startup in software component for nRF51822
Select the CORE and Startup in software component for nRF51822

Шаг 3. Написание программы GPIO

Подробное введение в GPIO находится в файле библиотеки nrf_gpio.h, а несколько основных функций перечислены ниже.

				
					//input Output
typedef enum
{
     NRF_GPIO_PIN_DIR_INPUT = GPIO_PIN_CNF_DIR_Input, ///< Input.
     NRF_GPIO_PIN_DIR_OUTPUT = GPIO_PIN_CNF_DIR_Output ///< Output.
} nrf_gpio_pin_dir_t;

// pull up and pull down
typedef enum
{
     NRF_GPIO_PIN_NOPULL = GPIO_PIN_CNF_PULL_Disabled, ///< Pin pull-up resistor disabled.
     NRF_GPIO_PIN_PULLDOWN = GPIO_PIN_CNF_PULL_Pulldown, ///< Pin pull-down resistor enabled.
     NRF_GPIO_PIN_PULLUP = GPIO_PIN_CNF_PULL_Pullup, ///< Pin pull-up resistor enabled.
} nrf_gpio_pin_pull_t;

//Input and output initialization configuration
void nrf_gpio_cfg_output(uint32_t pin_number);
void nrf_gpio_cfg_input(uint32_t pin_number, nrf_gpio_pin_pull_t pull_config);

//Output high and low/flip level
void nrf_gpio_pin_set(uint32_t pin_number);
void nrf_gpio_pin_clear(uint32_t pin_number);
void nrf_gpio_pin_toggle(uint32_t pin_number);

// read input and output levels
uint32_t nrf_gpio_pin_read(uint32_t pin_number);
uint32_t nrf_gpio_pin_out_read(uint32_t pin_number);
				
			

Далее нам нужно определить расположение светодиода на выводе. Согласно схеме nRF51822, вывод P0.07 подключен к светодиоду.

				
					#include "nrf_delay.h"
#include "nrf_gpio.h"

#define LED 7

int main(){
  
   nrf_gpio_cfg_output(LED);
  
   nrf_gpio_pin_clear(LED); //Output low level
  
   while (1) {
    

      
     nrf_gpio_pin_toggle(LED); // flip level
    
     nrf_delay_ms(1000);
    
    
   }
}
				
			

После написания вышеуказанных кодов вы обнаружите ошибку компиляции, поскольку путь к файлу заголовка не найден. Поэтому мы должны импортировать путь к файлу заголовка, как показано ниже:

Setup compiler include paths
Setup compiler include paths

Затем установите определение макроса, как показано ниже:

Setting macro definition for nRF51822 and compile
Setting macro definition for nRF51822 and compile

Шаг 4. Загрузите программу

Подключите плату разработчика и ПК с помощью программного обеспечения J-Link и откройте nRFgo Studio.

  • Нажмите «Программирование nRF5x»;
  • Нажмите «Erase all» (Стереть все), чтобы очистить память;
  • Выберите файл hex;
  • Запрограммируйте nRF5x и загрузите.
Executing nRF5x Programming in nRFgo Studio
Executing nRF5x Programming in nRFgo Studio

Применение nRF51822

  • Приложение Bluetooth Smart;
  • Аксессуары для мобильных телефонов;
  • Компьютерная периферия;
  • Умная бытовая техника: датчики для фитнеса и здравоохранения;
  • Контроллеры для электронных игр;
  • Системы подхода и оповещения о безопасности;
  • Управление и сбор данных для дома/промышленности;
  • Интеллектуальное отслеживание по радиочастотам и социальное взаимодействие;
  • Пульты дистанционного управления для телевизоров, приставок и мультимедийных систем;

NRF51822 против NRF51802

Кроме того, для чипа NRF51802 той же серии, что и NRF51822, объем FLASH RAM этих двух чипов одинаков. Разница заключается в небольших различиях в чувствительности, энергопотреблении, токе в режиме ожидания и времени внутреннего пробуждения. Комплексные данные, отображаемые 51822, лучше. Обычно эти две модели взаимозаменяемы.

В настоящее время наша компания осуществила обратный анализ, дешифрование и оптимизацию анализа чипов Bluetooth NRF51822 и NRF51802.

Подписаться

Присоединяйтесь к нашему списку подписчиков, чтобы получать ежемесячные обновления блога, новости о технологиях, практические примеры. Мы никогда не будем рассылать спам, и вы можете отказаться от подписки в любое время.

Об авторе

Picture of Aidan Taylor
Aidan Taylor

I am Aidan Taylor and I have over 10 years of experience in the field of PCB Reverse Engineering, PCB design and IC Unlock.

Поделиться

Рекомендуемый пост

Tags

Нужна помощь?

Прокрутить вверх

Instant Quote