Nordic Semiconductor nRF51822 Programmierung

Inhaltsverzeichnis

NRF51822 Bluetooth chip decryption

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.

83853322 c9d08e80 a71d 11ea 8fd2 7abbc8d507dd

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

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

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.

Create a new folder nRF51822 development

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

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

Wählen Sie, wie in der Abbildung gezeigt, die CORE-Datei und die Startdatei aus.

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

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:

Setup compiler include paths
Setup compiler include paths

Legen Sie dann die Makrodefinition wie unten gezeigt fest:

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

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

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.

Abonnieren

Tragen Sie sich in unsere Abonnentenliste ein, um monatliche Blog-Updates, Technologie-News und Fallstudien zu erhalten. Wir versenden niemals Spam, und Sie können sich jederzeit wieder abmelden.

Nach oben scrollen

Instant Quote