Programação do Nordic Semiconductor nRF51822

Índice

NRF51822 Bluetooth chip decryption

O que é o chip NRF51822 BLE?

O nRF51822 é um SoC potente, flexível e multiprotocolo, ideal para aplicações sem fio Bluetooth de baixa energia e 2,4 GHz de energia ultrabaixa. Ele é construído em uma CPU ARM® Cortex™ M0 de 32 bits com 256 kB de flash + 16 kB de RAM. O transceptor de 2,4 GHz integrado suporta Bluetooth de baixa energia e operação de 2,4 GHz, sendo que o modo de 2,4 GHz é compatível sem fios com a família de produtos nRF24L da Nordic Semiconductor.

Características do NRF51822

  • Dispositivo multiprotocolo de 2,4 GHz, de alta flexibilidade e chip único;
  • Núcleo de CPU ARM Cortex M0 de 32 bits;
  • 256 KB de memória flash e 16 KB de RAM;
  • Suporta a pilha de protocolos Bluetooth Low Energy S110;
  • O S110 requer 80 kB de espaço de memória;
  • Segurança de thread e proteção de tempo de execução;
  • API orientada a eventos;
  • Compatível com a série nRF24L sem fios;
  • 3 taxas de dados (2 Mbps/1 Mbps/250 kbps);
  • Potência de saída de +4 dBm;
  • Sensibilidade de -92,5 dBm, Bluetooth de baixa energia;
  • Mapeamento de E/S configurável para E/S analógica e digital;
  • Sistema PPI para maximizar a eficiência energética das aplicações e simplificar o código;
  • Sistema de gerenciamento de energia flexível com gerenciamento automático de energia para cada produto periférico;

Pinagem do nRF51822

A pinagem do nRF51822 consiste em 36 pinos, e cada pino tem uma função específica. Os pinos podem ser divididos em quatro categorias principais: GPIO, ADC, I2C e PWM. Os pinos GPIO podem ser usados para E/S digital e podem ser configurados como entrada ou saída. Os pinos ADC podem ser usados para entrada analógica, e os pinos I2C e PWM podem ser usados para comunicação e controle PWM.

83853322 c9d08e80 a71d 11ea 8fd2 7abbc8d507dd

Além dos pinos mencionados acima, o nRF51822 também possui dois pinos de reinicialização, dois pinos Chip Enable, dois pinos VTREF, quatro pinos de alimentação e alguns outros pinos. Os pinos de reinicialização são usados para reinicializar o dispositivo, os pinos Chip Enable são usados para ativar o dispositivo e os pinos VTREF são usados para tensão de referência analógica.

Como programar o NRF51822?

Programar o NRF51822 ble é uma tarefa um pouco complexa. Abaixo estão os passos a seguir.

Ambiente de construção e uso de GPIO

Passo 1. Ferramentas de desenvolvimento

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

Etapa 2. Criação do ambiente de desenvolvimento

Crie uma nova pasta, onde o componente é o arquivo descompactado do pacote compactado do SDK. Dentro do arquivo de configuração está o arquivo sdk_config.h, que é copiado dos exemplos no SDK. Users é a pasta onde o projeto MDK é armazenado.

Create a new folder nRF51822 development

Abra o MDK e o instalador do pacote. Em seguida, procure e selecione o chip nRF51822 para instalar os pacotes necessários.

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

Conforme mostrado na figura, selecione o arquivo CORE e o arquivo Startup.

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

Passo 3. Escrevendo o programa GPIO

Há uma introdução detalhada ao GPIO no arquivo de biblioteca nrf_gpio.h, e várias funções principais estão listadas abaixo.

				
					//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);
				
			

Em seguida, precisamos definir a localização do LED no pino. De acordo com o diagrama esquemático do nRF51822, o pino P0.07 está conectado ao LED.

				
					#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);
    
    
   }
}
				
			

Depois de escrever os códigos acima, você verá que há um erro de compilação porque o caminho do arquivo de cabeçalho não foi encontrado. Portanto, devemos importar o caminho do arquivo de cabeçalho, conforme mostrado abaixo:

Setup compiler include paths
Setup compiler include paths

Em seguida, defina a macro, conforme mostrado abaixo:

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

Passo 4. Baixe o programa

Conecte a placa de desenvolvimento e o PC pelo método SW do J-Link e abra o nRFgo Studio.

  • Clique em nRF5x Programming;
  • Clique em Erase all (Apagar tudo) para limpar a memória;
  • Selecione o arquivo hex;
  • Programe o nRF5x e faça o download.
Executing nRF5x Programming in nRFgo Studio
Executing nRF5x Programming in nRFgo Studio

Aplicações do nRF51822

  • Aplicação Bluetooth Smart;
  • Acessórios para telemóveis;
  • Periféricos para computadores;
  • Eletrodomésticos inteligentes: sensores de fitness e saúde;
  • Controladores para jogos eletrônicos;
  • Sistemas de aproximação e alerta de segurança;
  • Controle doméstico/industrial e aquisição de dados;
  • Rastreamento RF inteligente e interação social;
  • Controles remotos para TVs, decodificadores e sistemas de mídia;

NRF51822 vs NRF51802

Além disso, para o chip NRF51802 da mesma série que o NRF51822, a capacidade da RAM FLASH desses dois chips é a mesma. A diferença é que existem pequenas diferenças na sensibilidade, consumo de energia, corrente em standby e tempo de ativação interna. Os dados abrangentes exibidos pelo 51822 são melhores. Normalmente, os dois modelos são intercambiáveis.

Atualmente, nossa empresa realizou a análise reversa, descriptografia e otimização da análise dos chips Bluetooth NRF51822 e NRF51802.

Inscreva-se

Inscreva-se na nossa lista de assinantes para receber atualizações mensais do blog, notícias sobre tecnologia e estudos de caso. Nunca enviaremos spam e você pode cancelar a assinatura a qualquer momento.

Sobre o autor

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.

Compartilhar

Postagem recomendada

Precisa de ajuda?

Rolar para cima

Instant Quote