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.

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
São necessárias as seguintes ferramentas:


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.

Abra o MDK e o instalador do pacote. Em seguida, procure e selecione o chip nRF51822 para instalar os pacotes necessários.
Conforme mostrado na figura, selecione o arquivo CORE e o arquivo Startup.

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:

Em seguida, defina a macro, conforme mostrado abaixo:

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.

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.



