Programación del nRF51822 de Nordic Semiconductor

Índice

NRF51822 Bluetooth chip decryption

¿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.

83853322 c9d08e80 a71d 11ea 8fd2 7abbc8d507dd

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

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

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.

Create a new folder nRF51822 development

Abre el MDK y el instalador del paquete. A continuación, busca y selecciona el chip nRF51822 para instalar los paquetes necesarios.

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

Como se muestra en la figura, seleccione el archivo CORE y el archivo de inicio.

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

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:

Setup compiler include paths
Setup compiler include paths

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

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

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.
Executing nRF5x Programming in nRFgo Studio
Executing nRF5x Programming in nRFgo Studio

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.

Suscríbete

Únete a nuestra lista de suscriptores para recibir actualizaciones mensuales del blog, noticias de tecnología y estudios de caso. Nunca enviaremos spam y puedes cancelar tu suscripción en cualquier momento.

Scroll al inicio

Cotización