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

¿Por qué empezar por aquí?

El nRF52840-MDK de MakerDiary (~30 €) se basa en el SoC Nordic nRF52840: Arm Cortex-M4F @ 64 MHz, 1 MB de flash, 256 KB de RAM, radio multiprotocolo de 2,4 GHz (BLE, Bluetooth Mesh, Thread, Zigbee, ANT). Su gran ventaja: un depurador DAPLink integrado (unidad USB + puerto COM virtual + CMSIS-DAP) — no se necesita ningún programador externo. La placa está referenciada en el repositorio principal de Zephyr con el nombre nrf52840_mdk.

Paso 1 — Instalar la cadena de herramientas Zephyr

Siga la Guía de inicio oficial de Zephyr para su sistema operativo (CMake, Ninja, Python 3, toolchain para Cortex-M, y luego west):

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

Paso 2 — Conectar la placa

Conecte la placa por USB. Se enumera como un hub USB 2.0 con dos puertos: uno hacia el DAPLink (aparece la unidad extraíble DAPLINK, además de un puerto serie CDC), y el otro hacia el USB nativo del nRF52840. Si la unidad DAPLINK no aparece (problemas conocidos #53 y #37, especialmente en Mac), cambie de cable, de puerto o de host.

Paso 3 — Compilar y flashear

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

west flash se comunica con la sonda CMSIS-DAP integrada. Alternativa sin ninguna herramienta: copie build/zephyr.hex en la unidad DAPLINK y luego pulse el botón Boot/Reset.

Paso 4 — Entender el código

El devicetree de la placa define el alias led0, de ahí que el ejemplo estándar funcione sin modificaciones:

#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);
        }
}

El LED RGB está conectado a pines P0 convencionales: para la asignación exacta, consulte el diagrama de pines oficial en PDF en lugar de codificar números de pin fijos.

Problemas conocidos

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales