🛠 Programmer les deux cœurs M7 et M4 du GIGA R1 et les faire communiquer

Arduino GIGA R1 · avance · Schéma : IMG-giga-r1-a1-1-dual-core-rpc.svg — Le double cœur du STM32H747XI du GIGA R1 : Cortex-M7 à 480 MHz exécutant un programme Arduino, Cortex-M4 à 240 MHz exécutant MicroPython, reliés par un canal RPC.

Objectifs

Exploiter la fonctionnalité unique du GIGA R1 dans la gamme Arduino : programmer séparément le Cortex-M7 (jusqu'à 480 MHz) et le Cortex-M4 (jusqu'à 240 MHz) du STM32H747XI, par exemple Arduino/C++ sur le M7 et MicroPython sur le M4, puis les faire communiquer par RPC. C'est la voie royale pour isoler une interface temps réel d'une couche applicative.

Matériel

Code complet

// GIGA R1 WiFi — coeur M7 (Arduino) : horloge maitre qui pousse le temps vers le M4
// Cote M4 : un script MicroPython recoit les messages via le canal RPC embarque.
#include <Arduino.h>
#include "RPC.h"

void setup {
  Serial.begin(115200);        // console USB du M7
  RPC.begin;                 // canal inter-cceurs M7 <-> M4
  Serial.println("M7 pret, envoi vers le M4");
}

void loop {
  RPC.printf("tick %lu\n", millis);   // message vers le coeur secondaire
  delay(1000);

  String msg = RPC.readStringUntil('\n'); // réponse eventuelle du M4
  if (msg.length) Serial.print("M4> ");
  Serial.print(msg);
}

Côté M4 (MicroPython, après téléversement du firmware MicroPython sur le cœur secondaire) :

# M4 MicroPython — lecture du canal RPC
import time
try:
    import rpc
    canal = rpc.RPC
    while True:
        msg = canal.read
        if msg:
            print("M7>", msg)
        time.sleep_ms(50)
except Exception as e:
    print("RPC indisponible:", e)

Vérification attendue

La console du M7 affiche « M7 prêt » puis part en envoi régulier ; la console du M4 (ou le moniteur MicroPython) reçoit les lignes « tick 1000 », « tick 2000 », etc. Les deux cœurs tournent en parallèle : une boucle while True occupée sur le M4 n'interrompt pas le battement du M7.

Erreurs fréquentes

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels