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

nRF52833-DK (id 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.

Pourquoi PlatformIO ici ?

PlatformIO déclare la carte nrf52833_dk dans sa plateforme nordicnrf52, avec J-Link comme méthode d'upload par défaut — exactement ce que fournit le MCU d'interface J-Link OB du kit : aucun programmateur externe à acheter. La fiche officielle de la carte documente ce comportement. PlatformIO encapsule GCC Arm, GDB et nrfjprog, et s'intègre à VS Code.

Étape 1 — Installer et initialiser

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

Étape 2 — Le 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

Le framework Zephyr de PlatformIO cible la même définition de carte que Zephyr amont (nrf52833dk) ; pour le SDK officiel Nordic (NCS), gardez plutôt le flux west — PlatformIO reste parfait pour les projets bare-metal/nrfx et Zephyr.

Étape 3 — Le code, avec les spécificités du PCB

Deux faits du User Guide conditionnent chaque projet GPIO sur ce kit : les LED sont actives au niveau bas (P0.13-P0.16), et les boutons (P0.11, P0.12, P0.24, P0.25) n'ont aucune pull-up externe — il faut activer la pull-up interne, sinon l'entrée flotte et vous verrez des appuis fantômes.

#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 */
        }
}

Étape 4 — Build, upload, console

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

Le port COM virtuel du J-Link OB route les broches série du SoC (P0.05-P0.08, jusqu'à 1 Mbit/s, handshake matériel). Si la console reste muette : vérifiez que votre terminal assertit DTR — sans ça les lignes UART restent en tri-state (comportement documenté au User Guide). Et pour le débogage, debug_tool = jlink active points d'arrêt et inspection mémoire dans VS Code.

Pièges et limites

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels