Was ist der NRF51822 BLE-Chip?
Der nRF51822 ist ein leistungsstarker, flexibler Multi-Protokoll-SoC, der sich ideal für Bluetooth-Low-Energy- und 2,4-GHz-Ultra-Low-Energy-Funk-Anwendungen eignet. Er basiert auf einer 32-Bit-ARM®-Cortex™-M0-CPU mit 256 kB Flash + 16 kB RAM. Der integrierte 2,4-GHz-Transceiver unterstützt Bluetooth Low Energy und 2,4-GHz-Betrieb, wobei der 2,4-GHz-Modus drahtlos mit der nRF24L-Produktfamilie von Nordic Semiconductor kompatibel ist.
Merkmale des NRF51822
- Einchip-Gerät mit hoher Flexibilität, 2,4 GHz, Multiprotokoll;
- 32-Bit-ARM-Cortex-M0-CPU-Kern;
- 256 KB Flash-Speicher, 16 KB RAM;
- Unterstützt den S110 Bluetooth Low Energy-Protokollstack;
- S110 benötigt 80 kB Speicherplatz;
- Thread-Sicherheit und Laufzeitschutz;
- Ereignisgesteuerte API;
- Drahtlos kompatibel mit der nRF24L-Serie;
- 3 Datenraten (2 Mbit/s/1 Mbit/s/250 kbit/s);
- +4 dBm Ausgangsleistung;
- -92,5 dBm Empfindlichkeit, Bluetooth Low Energy;
- Konfigurierbare I/O-Zuordnung für analoge und digitale I/O;
- PPI-System zur Maximierung der Energieeffizienz von Anwendungen und zur Vereinfachung des Codes;
- Flexibles Energiemanagementsystem mit automatischer Energieverwaltung für jedes Peripherieprodukt;
Pinbelegung des nRF51822
Die Pinbelegung des nRF51822 besteht aus 36 Pins, wobei jeder Pin eine bestimmte Funktion hat. Die Pins lassen sich in vier Hauptkategorien unterteilen: GPIO, ADC, I2C und PWM. Die GPIO-Pins können für digitale Ein- und Ausgänge verwendet und entweder als Eingang oder Ausgang konfiguriert werden. Die ADC-Pins können für analoge Eingänge verwendet werden, während die I2C- und PWM-Pins für die Kommunikation und PWM-Steuerung genutzt werden können.

Zusätzlich zu den oben genannten Pins verfügt der nRF51822 über zwei Reset-Pins, zwei Chip-Enable-Pins, zwei VTREF-Pins, vier Stromversorgungs-Pins und einige weitere Pins. Die Reset-Pins dienen zum Zurücksetzen des Geräts, die Chip-Enable-Pins zum Aktivieren des Geräts und die VTREF-Pins für die analoge Referenzspannung.
Wie programmiert man NRF51822?
Die Programmierung des NRF51822 ble ist eine etwas komplexe Aufgabe. Nachfolgend finden Sie die einzelnen Schritte.
Umgebungsaufbau und GPIO-Verwendung
Schritt 1. Entwicklungswerkzeuge
Die folgenden Tools sind erforderlich:


Schritt 2. Aufbau der Entwicklungsumgebung
Erstellen Sie einen neuen Ordner, wobei „component“ die entpackte Datei des komprimierten SDK-Pakets ist. In der Konfigurationsdatei befindet sich die Datei „sdk_config.h“, die aus den Beispielen im SDK kopiert wurde. „Users“ ist der Ordner, in dem das MDK-Projekt gespeichert ist.

Öffnen Sie das MDK und den Pack-Installer. Suchen Sie dann den nRF51822-Chip und wählen Sie ihn aus, um die erforderlichen Packs zu installieren.
Wählen Sie, wie in der Abbildung gezeigt, die CORE-Datei und die Startdatei aus.

Schritt 3. GPIO-Programm schreiben
Eine ausführliche Einführung zu GPIO finden Sie in der Bibliotheksdatei nrf_gpio.h. Nachfolgend sind einige wichtige Funktionen aufgeführt.
//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);
Als Nächstes müssen wir die LED-Position auf dem Pin definieren. Gemäß dem Schaltplan des nRF51822 ist der Pin P0.07 mit der LED verbunden.
#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);
}
}
Nachdem Sie die oben genannten Codes geschrieben haben, werden Sie feststellen, dass ein Kompilierungsfehler auftritt, da der Pfad zur Header-Datei nicht gefunden wird. Daher sollten wir den Pfad zur Header-Datei importieren, wie unten gezeigt:

Legen Sie dann die Makrodefinition wie unten gezeigt fest:

Schritt 4. Laden Sie das Programm herunter.
Verbinden Sie das Entwicklungsboard und den PC über die SW-Methode von J-Link und öffnen Sie nRFgo Studio.
- Klicken Sie auf „nRF5x Programming“ (nRF5x-Programmierung).
- Klicken Sie auf „Erase all“, um den Speicher zu löschen.
- Wählen Sie die Hex-Datei aus.
- Programmieren Sie den nRF5x und laden Sie ihn herunter.

Anwendungen von nRF51822
- Bluetooth Smart App;
- Mobiltelefonzubehör;
- Computerperipheriegeräte;
- Smart-Home-Geräte: Fitness- und Gesundheitssensoren;
- Controller für elektronische Spiele;
- Annäherungs- und Sicherheitswarnsysteme;
- Haus-/Industriesteuerung und Datenerfassung;
- Intelligente RF-Verfolgung und soziale Interaktion;
- Fernbedienungen für Fernseher, Set-Top-Boxen und Mediensysteme;
NRF51822 im Vergleich zu NRF51802
Darüber hinaus ist bei dem Chip NRF51802 derselben Serie wie der NRF51822 die FLASH-RAM-Kapazität dieser beiden Chips identisch. Der Unterschied besteht darin, dass es geringfügige Unterschiede in Bezug auf Empfindlichkeit, Stromverbrauch, Standby-Strom und interne Wake-up-Zeit gibt. Die vom 51822 angezeigten umfassenden Daten sind besser. In der Regel sind die beiden Modelle austauschbar.
Derzeit hat unser Unternehmen die Reverse-Analyse, Entschlüsselung und Analyseoptimierung der Bluetooth-Chips NRF51822 und NRF51802 realisiert.



