¿Qué es el chip NRF51822 BLE?
El nRF51822 es un SoC potente, flexible y multiprotocolo ideal para aplicaciones inalámbricas Bluetooth de baja energía y 2,4 GHz de energía ultrabaja. Está construido sobre una CPU ARM® Cortex™ M0 de 32 bits con 256 kB de memoria flash + 16 kB de RAM. El transceptor integrado de 2,4 GHz es compatible con Bluetooth Low Energy y con el funcionamiento a 2,4 GHz, siendo el modo de 2,4 GHz compatible de forma inalámbrica con la familia de productos nRF24L de Nordic Semiconductor.
Características del NRF51822
- Dispositivo multiprotocolo de 2,4 GHz, de un solo chip y alta flexibilidad;
- Núcleo de CPU ARM Cortex M0 de 32 bits;
- 256 KB de memoria flash y 16 KB de RAM;
- Compatible con la pila de protocolos Bluetooth Low Energy S110;
- S110 requiere 80 kB de espacio de memoria;
- Seguridad de subprocesos y protección en tiempo de ejecución;
- API basada en eventos;
- Compatible de forma inalámbrica con la serie nRF24L;
- 3 velocidades de datos (2 Mbps/1 Mbps/250 kbps);
- Potencia de salida de +4 dBm.
- Sensibilidad de -92,5 dBm, Bluetooth de baja energía;
- Asignación de E/S configurable para E/S analógicas y digitales;
- Sistema PPI para maximizar la eficiencia energética de las aplicaciones y simplificar el código;
- Sistema de gestión de energía flexible con gestión automática de la energía para cada producto periférico;
Pinout del nRF51822
La disposición de pines del nRF51822 consta de 36 pines, y cada pin tiene una función específica. Los pines se pueden dividir en cuatro categorías principales: GPIO, ADC, I2C y PWM. Los pines GPIO se pueden utilizar para E/S digitales y se pueden configurar como entrada o salida. Los pines ADC se pueden utilizar para la entrada analógica, y los pines I2C y PWM se pueden utilizar para la comunicación y el control PWM.

Además de los pines mencionados anteriormente, el nRF51822 también tiene dos pines de reinicio, dos pines de habilitación de chip, dos pines VTREF, cuatro pines de fuente de alimentación y algunos otros pines. Los pines de reinicio se utilizan para reiniciar el dispositivo, los pines de habilitación de chip se utilizan para activar el dispositivo y los pines VTREF se utilizan para la tensión de referencia analógica.
¿Cómo programar el NRF51822?
Programar el NRF51822 ble es una tarea un poco compleja. A continuación se indican los pasos a seguir.
Entorno de desarrollo y uso de GPIO
Paso 1. Herramientas de desarrollo
Se requieren las siguientes herramientas:


Paso 2. Creación del entorno de desarrollo
Cree una nueva carpeta, donde el componente es el archivo descomprimido del paquete comprimido del SDK. Dentro del archivo de configuración se encuentra el archivo sdk_config.h, que se copia de los ejemplos del SDK. Users es la carpeta donde se almacena el proyecto MDK.

Abre el MDK y el instalador del paquete. A continuación, busca y selecciona el chip nRF51822 para instalar los paquetes necesarios.
Como se muestra en la figura, seleccione el archivo CORE y el archivo de inicio.

Paso 3. Escribir el programa GPIO
Hay una introducción detallada a GPIO en el archivo de biblioteca nrf_gpio.h, y a continuación se enumeran varias funciones principales.
//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);
A continuación, debemos definir la ubicación del LED en el pin. Según el diagrama esquemático del nRF51822, el pin P0.07 está conectado al 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);
}
}
Después de escribir los códigos anteriores, encontrará un error de compilación porque no se encuentra la ruta del archivo de encabezado. Por lo tanto, debemos importar la ruta del archivo de encabezado, como se muestra a continuación:

A continuación, establezca la definición de la macro, tal y como se muestra a continuación:

Paso 4. Descargar el programa
Conecte la placa de desarrollo y el PC mediante el método SW de J-Link y abra nRFgo Studio.
- Haga clic en «nRF5x Programming» (Programación nRF5x).
- Haga clic en Erase all (Borrar todo) para borrar la memoria.
- Seleccione el archivo hexadecimal.
- Programe el nRF5x y descargue.

Aplicaciones del nRF51822
- Aplicación Bluetooth Smart;
- Accesorios para teléfonos móviles;
- Periféricos informáticos;
- Electrodomésticos inteligentes: sensores para fitness y salud;
- Mandos para videojuegos;
- Sistemas de aproximación y alerta de seguridad;
- Control doméstico/industrial y adquisición de datos;
- Seguimiento inteligente por radiofrecuencia e interacción social;
- Mandos a distancia para televisores, decodificadores y sistemas multimedia;
NRF51822 frente a NRF51802
Además, en el caso del chip NRF51802, de la misma serie que el NRF51822, la capacidad de la memoria RAM FLASH de ambos chips es la misma. La diferencia radica en que existen ligeras diferencias en cuanto a sensibilidad, consumo de energía, corriente en modo de espera y tiempo de activación interna. Los datos generales que muestra el 51822 son mejores. Por lo general, los dos modelos son intercambiables.
En la actualidad, nuestra empresa ha realizado el análisis inverso, el descifrado y la optimización del análisis de los chips Bluetooth NRF51822 y NRF51802.




