Programmation du nRF51822 de Nordic Semiconductor

Table des Matières

NRF51822 Bluetooth chip decryption

Qu'est-ce que la puce NRF51822 BLE ?

Le nRF51822 est un SoC multiprotocole puissant et flexible, idéal pour les applications sans fil Bluetooth Low Energy et 2,4 GHz Ultra Low Energy. Il est basé sur un processeur ARM® Cortex™ M0 32 bits avec 256 Ko de mémoire flash + 16 Ko de RAM. L'émetteur-récepteur 2,4 GHz intégré prend en charge le Bluetooth Low Energy et le fonctionnement 2,4 GHz, le mode 2,4 GHz étant compatible sans fil avec la gamme de produits nRF24L de Nordic Semiconductor.

Caractéristiques du NRF51822

  • Dispositif multiprotocole 2,4 GHz à puce unique et haute flexibilité ;
  • Cœur de processeur ARM Cortex M0 32 bits ;
  • 256 Ko de mémoire flash et 16 Ko de RAM ;
  • Prise en charge de la pile de protocoles Bluetooth Low Energy S110 ;
  • S110 nécessite 80 Ko d'espace mémoire ;
  • Sécurité des threads et protection du runtime ;
  • API événementielle ;
  • Compatibilité sans fil avec la série nRF24L ;
  • 3 débits de données (2 Mbps/1 Mbps/250 kbps) ;
  • Puissance de sortie de +4 dBm ;
  • Sensibilité de -92,5 dBm, Bluetooth Low Energy ;
  • Mappage E/S configurable pour les E/S analogiques et numériques ;
  • Système PPI pour optimiser l'efficacité énergétique des applications et simplifier le code ;
  • Système de gestion de l'énergie flexible avec gestion automatique de l'énergie pour chaque produit périphérique ;

Brochage du nRF51822

Le brochage du nRF51822 comprend 36 broches, chacune ayant une fonction spécifique. Les broches peuvent être divisées en quatre catégories principales : GPIO, ADC, I2C et PWM. Les broches GPIO peuvent être utilisées pour les E/S numériques et peuvent être configurées comme entrée ou sortie. Les broches ADC peuvent être utilisées pour les entrées analogiques, tandis que les broches I2C et PWM peuvent être utilisées pour la communication et le contrôle PWM.

83853322 c9d08e80 a71d 11ea 8fd2 7abbc8d507dd

En plus des broches mentionnées ci-dessus, le nRF51822 dispose également de deux broches de réinitialisation, deux broches d'activation de puce, deux broches VTREF, quatre broches d'alimentation électrique et quelques autres broches. Les broches de réinitialisation sont utilisées pour réinitialiser l'appareil, les broches d'activation de puce sont utilisées pour activer l'appareil et les broches VTREF sont utilisées pour la tension de référence analogique.

Comment programmer le NRF51822 ?

La programmation du NRF51822 ble est une tâche un peu complexe. Voici les étapes à suivre.

Environnement de construction et utilisation des GPIO

Étape 1. Outils de développement

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

Étape 2. Création d'un environnement de développement

Créez un nouveau dossier, où component est le fichier décompressé du package compressé du SDK. Le fichier config contient le fichier sdk_config.h, qui est copié à partir des exemples du SDK. Users est le dossier dans lequel le projet MDK est stocké.

Create a new folder nRF51822 development

Ouvrez le MDK et l'installateur de packs. Recherchez et sélectionnez ensuite la puce nRF51822 pour installer les packs nécessaires.

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

Comme indiqué dans la figure, sélectionnez le fichier CORE et le fichier Startup.

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

Étape 3. Écriture du programme GPIO

Une introduction détaillée au GPIO est disponible dans le fichier de bibliothèque nrf_gpio.h. Plusieurs fonctions principales sont répertoriées ci-dessous.

				
					//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);
				
			

Ensuite, nous devons définir l'emplacement de la LED sur la broche. Selon le schéma du nRF51822, la broche P0.07 est connectée à la 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);
    
    
   }
}
				
			

Après avoir écrit les codes ci-dessus, vous constaterez qu'il y a une erreur de compilation car le chemin d'accès au fichier d'en-tête est introuvable. Nous devons donc importer le chemin d'accès au fichier d'en-tête, comme indiqué ci-dessous :

Setup compiler include paths
Setup compiler include paths

Puis définissez la macro comme indiqué ci-dessous :

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

Étape 4. Télécharger le programme

Connectez la carte de développement et le PC à l'aide de la méthode SW de J-Link, puis ouvrez nRFgo Studio.

  • Cliquez sur nRF5x Programming ;
  • Cliquez sur Erase all (Tout effacer) pour effacer la mémoire ;
  • Sélectionnez le fichier hexadécimal ;
  • Programmez le nRF5x et téléchargez.
Executing nRF5x Programming in nRFgo Studio
Executing nRF5x Programming in nRFgo Studio

Applications du nRF51822

  • Application Bluetooth Smart ;
  • Accessoires pour téléphones mobiles ;
  • Périphériques informatiques ;
  • Appareils électroménagers intelligents : capteurs de fitness et de santé ;
  • Manettes de jeux électroniques ;
  • Systèmes d'approche et d'alerte de sécurité ;
  • Contrôle domestique/industriel et acquisition de données ;
  • Suivi RF intelligent et interaction sociale ;
  • Télécommandes pour téléviseurs, décodeurs et systèmes multimédias ;

NRF51822 vs NRF51802

De plus, pour la puce NRF51802 de la même série que la NRF51822, la capacité de la mémoire FLASH RAM de ces deux puces est identique. La différence réside dans de légères variations au niveau de la sensibilité, de la consommation électrique, du courant de veille et du temps de réveil interne. Les données globales affichées par la 51822 sont meilleures. En général, les deux modèles sont interchangeables.

À l'heure actuelle, notre société a réalisé l'analyse inverse, le décryptage et l'optimisation de l'analyse des puces Bluetooth NRF51822 et NRF51802.

Abonnez-vous

Rejoignez notre liste d’abonnés pour obtenir mensuel blog des mises à jour, des nouvelles technologies, des études de cas. Nous n’enverrons jamais de spam, et vous pouvez vous désinscrire à tout moment.

Retour en haut

Instant Quote