🛠 Faire clignoter la LED RGB avec Zephyr

nRF52840-MDK (id boards.json : nrf52840-mdk) · debutant · Votre première LED sur le nRF52840-MDK : deux commandes west suffisent, le programmateur DAPLink est déjà embarqué sur la carte.

Pourquoi commencer par là ?

Le nRF52840-MDK de MakerDiary (~30 €) repose sur le SoC Nordic nRF52840 : Arm Cortex-M4F @ 64 MHz, 1 Mo de flash, 256 Ko de RAM, radio multiprotocole 2,4 GHz (BLE, Bluetooth Mesh, Thread, Zigbee, ANT). Son gros atout : un débogueur DAPLink intégré (lecteur USB + port COM virtuel + CMSIS-DAP) — aucun programmateur externe n'est nécessaire. La carte est référencée dans Zephyr amont sous le nom nrf52840_mdk.

Étape 1 — Installer la chaîne Zephyr

Suivez le Getting Started Guide officiel de Zephyr pour votre OS (CMake, Ninja, Python 3, toolchain Cortex-M, puis west) :

python3 -m venv .venv && source .venv/bin/activate   # .venv\Scripts\activate sous Windows
pip install west
west init zephyrproject
cd zephyrproject && west update

Étape 2 — Brancher la carte

Branchez la carte en USB. Elle s'énumère comme un hub USB 2.0 à deux ports : l'un vers le DAPLink (le lecteur amovible DAPLINK apparaît, plus un port série CDC), l'autre vers l'USB natif du nRF52840. Si le lecteur DAPLINK n'apparaît pas (problèmes connus #53 et #37, surtout sur Mac), changez de câble, de port ou d'hôte.

Étape 3 — Compiler et flasher

west build -b nrf52840_mdk samples/basic/blinky
west flash

west flash parle au sonde CMSIS-DAP embarquée. Alternative sans aucun outil : déposer build/zephyr.hex sur le lecteur DAPLINK, puis appuyer sur le bouton Boot/Reset.

Étape 4 — Comprendre le code

Le devicetree de la carte définit l'alias led0, d'où l'exemple standard sans modification :

#include <zephyr/kernel.h>
#include <zephyr/drivers/gpio.h>

#define LED0_NODE DT_ALIAS(led0)
static const struct gpio_dt_spec led = GPIO_DT_SPEC_GET(LED0_NODE, gpios);

int main(void)
{
        if (!gpio_is_ready_dt(&led)) {
                return -1;
        }
        gpio_pin_configure_dt(&led, GPIO_OUTPUT_ACTIVE);
        while (1) {
                gpio_pin_toggle_dt(&led);
                k_msleep(1000);
        }
}

La LED RGB est branchée sur des broches P0 classiques : pour l'affectation exacte, référez-vous au pinout diagram PDF officiel plutôt que de coder des numéros de broche en dur.

Pièges connus

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels