🛠 Projet firmware complet avec PlatformIO et la sonde J-Link embarquée

nRF52833-DK (id de boards.json: nrf52833-dk) · intermediaire · La carte nrf52833_dk existe dans la plateforme nordicnrf52 : PlatformIO livre le compilateur, GDB et l'upload J-Link — la sonde est déjà sur le kit.

¿Por qué PlatformIO aquí?

PlatformIO declara la placa nrf52833_dk en su plataforma nordicnrf52, con J-Link como método de carga por defecto — exactamente lo que proporciona el MCU de interfaz J-Link OB del kit: no hace falta comprar un programador externo. La ficha oficial de la placa documenta este comportamiento. PlatformIO encapsula GCC Arm, GDB y nrfjprog, y se integra con VS Code.

Paso 1 — Instalar e inicializar

pip install platformio
mkdir dk-projet && cd dk-projet
pio project init --board nrf52833_dk

Paso 2 — El platformio.ini

[env:nrf52833_dk]
platform = nordicnrf52
board    = nrf52833_dk
framework = zephyr
; upload par le J-Link OB embarqué (défaut de la carte)
upload_protocol = jlink
monitor_speed = 115200

El framework Zephyr de PlatformIO apunta a la misma definición de placa que Zephyr upstream (nrf52833dk); para el SDK oficial de Nordic (NCS), mantenga mejor el flujo west — PlatformIO sigue siendo perfecto para proyectos bare-metal/nrfx y Zephyr.

Paso 3 — El código, con las particularidades del PCB

Dos hechos del User Guide condicionan cada proyecto GPIO en este kit: los LED son activos a nivel bajo (P0.13-P0.16), y los botones (P0.11, P0.12, P0.24, P0.25) no tienen ninguna pull-up externa — hay que activar la pull-up interna, si no la entrada queda flotante y verá pulsaciones fantasma.

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

static const struct gpio_dt_spec led =
        GPIO_DT_SPEC_GET(DT_ALIAS(led0), gpios);
static const struct gpio_dt_spec btn =
        GPIO_DT_SPEC_GET(DT_ALIAS(sw0), gpios);

int main(void)
{
        gpio_pin_configure_dt(&led, GPIO_OUTPUT_INACTIVE);
        /* le devicetree prévoit déjà GPIO_PULL_UP sur sw0 */
        gpio_pin_configure_dt(&btn, GPIO_INPUT);
        while (1) {
                /* bouton actif-bas : enfoncé => 0 */
                gpio_pin_set_dt(&led, gpio_pin_get_dt(&btn) == 1);
                k_msleep(20);   /* anti-rebond grossier */
        }
}

Paso 4 — Compilar, cargar, consola

pio run               # compile
pio run -t upload     # flashe via le J-Link OB (câble sur J2)
pio device monitor    # console sur le port COM virtuel

El puerto COM virtual del J-Link OB enruta los pines serie del SoC (P0.05-P0.08, hasta 1 Mbit/s, handshake por hardware). Si la consola sigue muda: verifique que su terminal aserta DTR — sin eso las líneas UART quedan en tri-state (comportamiento documentado en el User Guide). Y para la depuración, debug_tool = jlink activa puntos de interrupción e inspección de memoria en VS Code.

Trampas y limitaciones

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales