🛠 Bus CAN FD : relier deux R4 avec un transceiver externe
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
- 2 Arduino UNO R4 WiFi
- 2 modules transceiver CAN FD (par ex. base MCP2558FDT ou TJA1051 en CAN classique pour débuter — le FD exige un transceiver compatible FD)
- Résistances de terminaison 120 Ω aux deux extrémités du bus (beaucoup de modules les intègrent, vérifiez le pont)
- Fils : CANH↔CANH, CANL↔CANL (jamais croisés), masses reliées.
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
- Brancher le contrôleur directement sur un bus sans transceiver : le RA4M1 n'a pas la couche physique ; sans transceiver, il ne se passe strictement rien (et on peut abîmer la broche).
- Transceiver CAN classique sur un bus en FD : le débit de données 2 Mbit/s passe mal ou pas ; prenez un transceiver compatible FD (ou forcez les deux débits identiques en CAN 2.0).
- Terminaisons oubliées ou au milieu du bus : les deux extrémités physiques doivent porter 120 Ω, pas le nœud du milieu.
- CANH/CANL croisés sur un seul nœud : silence radio total — c'est l'erreur n°1, vérifiez-les en premier.
- Confondre CAN FD et CAN classique dans les débits : l'arbitrage et les données peuvent avoir deux débits différents ; les deux nœuds doivent être configurés pareil.
Autres tutoriels pour cette carte
- Premier Blink sur la UNO R4 WiFi : la première UNO 32 bits
- Apprivoiser la matrice LED 12x8 intégrée
- Toucher capacitif : touchRead sans composant
- Se connecter au WiFi et lire l'heure NTP (WiFiS3)
- Inclinomètre sur la matrice : l'IMU LSM6DSV16X en I²C
- Serveur web embarqué : piloter la matrice depuis le navigateur
Exemples de code pour cette carte
clignotante.inoArduinobouton-poussoir.inoArduinodac-analogique.inoArduinoentree-analogique.inoArduinopwm-respiration.inoArduinoservo-balayage.inoArduino