Cos'è il chip BLE NRF51822?
L’nRF51822 è un SoC potente e flessibile, multi-protocollo, ideale per applicazioni wireless Bluetooth Low Energy e 2.4GHz a bassissimo consumo energetico. È costruito su una CPU ARM® Cortex™ M0 a 32 bit con 256kB di flash + 16kB di RAM. Il ricetrasmettitore 2.4GHz integrato supporta Bluetooth Low Energy e il funzionamento a 2.4GHz, dove la modalità 2.4GHz è wireless compatibile con la famiglia di prodotti nRF24L di Nordic Semiconductor.
Caratteristiche di NRF51822
- Dispositivo multi-protocollo a 2.4GHz, single-chip, ad alta flessibilità;
- Core CPU ARM Cortex M0 a 32 bit;
- 256KB flash 16KB RAM;
- Supporta lo stack di protocollo Bluetooth Low Energy S110;
- S110 richiede 80 kB di spazio di memoria;
- Sicurezza del thread e protezione runtime;
- API basata su eventi;
- Wireless Compatibile con la serie nRF24L;
- 3 velocità dati (2Mbps/1Mbps/250kbps);
- Potenza di uscita +4dBm;
- Sensibilità -92.5dBm, Bluetooth low energy;
- Mapping I/O configurabile per I/O analogici e digitali;
- Sistema PPI per massimizzare le applicazioni ad efficienza energetica e la semplificazione del codice;
- Sistema di gestione energetica flessibile con gestione automatica dell’energia per ogni prodotto periferico;
Pinout di nRF51822
Il pinout dell’nRF51822 è costituito da 36 pin e ogni pin ha una funzione specifica. I pin possono essere suddivisi in quattro categorie principali: GPIO, ADC, I2C e PWM. I pin GPIO possono essere utilizzati per I/O digitali e possono essere configurati come input o output. I pin ADC possono essere utilizzati per input analogici e i pin I2C e PWM possono essere utilizzati per la comunicazione e il controllo PWM.

Oltre ai pin menzionati sopra, l’nRF51822 dispone anche di due pin di reset, due pin di Chip Enable, due pin VTREF, quattro pin di alimentazione e alcuni altri pin. I pin di reset vengono utilizzati per resettare il dispositivo, i pin di Chip Enable vengono utilizzati per attivare il dispositivo e i pin VTREF vengono utilizzati per la tensione di riferimento analogica.
Come programmare NRF51822?
Programmare il ble NRF51822 è un compito un po’ complesso, di seguito sono riportati i passaggi.
Costruzione dell'ambiente e utilizzo GPIO
Passaggio 1. Strumenti di sviluppo
Sono necessari i seguenti strumenti:


Passaggio 2. Costruzione dell'ambiente di sviluppo
Crea una nuova cartella, dove component è il file decompresso del pacchetto compresso SDK. All’interno del file config è il file sdk_config.h, che viene copiato dagli esempi nell’SDK. Users è la cartella in cui è memorizzato il progetto MDK.

Apri l’installatore MDK e pack. Quindi cerca e seleziona il chip nRF51822 per installare i pack necessari.
Come mostrato nella figura, seleziona il file CORE e il file Startup.

Passaggio 3. Scrittura del programma GPIO
C’è un’introduzione dettagliata a GPIO nel file della libreria nrf_gpio.h e sono elencate diverse funzioni principali.
//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);
Successivamente, dobbiamo definire la posizione del LED su Pin. In base allo schema elettrico di nRF51822, il pin P0.07 è collegato 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);
}
}
Dopo aver scritto i codici di cui sopra, noterai che c’è un errore di compilazione perché il percorso del file di intestazione non viene trovato. Quindi dovremmo importare il percorso del file di intestazione, come mostrato di seguito:

E quindi impostare la definizione della macro, come mostrato di seguito:

Passaggio 4. Scarica il Programma
Collega la scheda di sviluppo e il PC tramite il metodo SW di J-Link e apri nRFgo Studio.
- Clicca su nRF5x Programming;
- Clicca su Erase all per cancellare la memoria;
- Seleziona il file hex;
- Programma l’nRF5x e scarica.

Applicazioni di nRF51822
- App Bluetooth Smart;
- Accessori per telefoni cellulari;
- Periferiche per computer;
- Elettrodomestici intelligenti: sensore per fitness e assistenza sanitaria;
- Controller di videogiochi elettronici;
- Sistemi di avviso di avvicinamento e sicurezza;
- Controllo e acquisizione dati domestici/industriali;
- Tracciamento RF intelligente e interazione sociale;
- Telecomandi per TV, decoder e sistemi multimediali;
NRF51822 vs NRF51802
Inoltre, per il chip NRF51802 della stessa serie di NRF51822, la capacità di FLASH RAM di questi due chip è la stessa. La differenza è che ci sono lievi differenze in sensibilità, consumo energetico, corrente di standby e tempo di risveglio interno. I dati completi visualizzati dal 51822 sono migliori. Di solito, i due modelli sono intercambiabili.
Attualmente, la nostra azienda ha realizzato l’analisi inversa, la decrittazione e l’ottimizzazione dell’analisi dei chip Bluetooth NRF51822 e NRF51802.




