🛠 Bus CAN FD : relier deux R4 avec un transceiver externe

Arduino UNO R4 WiFi · avance · Schéma : IMG-uno-r4-wifi-avance-3-ur4wifi-can-fd.svg — deux UNO R4 WiFi face à face, chacune reliée à un module transceiver CAN FD, paires de fils CANH/CANL reliant les deux modules, résistance 120 Ω aux deux extrémités, matrice LED affichant un compteur reçu.

Objectifs

Sortir du point-à-point : le RA4M1 intègre un contrôleur CAN FD (Flexible Data-rate), une fonctionnalité rare sur une carte Arduino — la bibliothèque officielle Arduino_CAN l'exploite. Le RA4M1 fournit le contrôleur, mais PAS la couche physique : il faut un transceiver CAN FD externe entre la carte et le bus. Vous allez relier deux cartes et échanger des trames à 500 kbit/s (arbitrage) / 2 Mbit/s (données).

Matériel

Code (émetteur, l'autre carte en récepteur avec l'exemple jumeau)

#include <CANFD.h>

void setup {
  Serial.begin(115200);
  // Débit d'arbitrage 500 kbit/s, débit de données 2 Mbit/s :
  if (!CANFD.begin(CanBitRate::BR_500k_BR_2M)) {
    Serial.println(F("CAN FD init KO"));
    while (true) { }
  }
}

void loop {
  static uint8_t compteur = 0;
  CanFrame trame;
  trame.canId = 0x123;
  trame.dataLength = 1;
  trame.data[0] = compteur++;
  CANFD.transmit(trame);
  Serial.print(F("emis ")); Serial.println(trame.data[0]);
  delay(500);
}

Vérification attendue

Côté récepteur, la trame arrive avec son ID 0x123 et un compteur incrémenté ; la matrice LED de la carte réceptrice peut afficher la valeur. Test de diagnostic : débranchez CANL — plus rien ne passe ; retirez une terminaison — erreurs d'arbitrage intermittentes.

Erreurs fréquentes

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels