🛠 Bus CAN FD : relier deux R4 avec un transceiver externe
Objetivos
Salir del punto a punto: el RA4M1 integra un controlador CAN FD (Flexible Data-rate), una funcionalidad rara en una placa Arduino — la biblioteca oficial Arduino_CAN la explota. El RA4M1 proporciona el controlador, pero NO la capa física: se necesita un transceptor CAN FD externo entre la placa y el bus. Vas a conectar dos placas e intercambiar tramas a 500 kbit/s (arbitraje) / 2 Mbit/s (datos).
Material
- 2 Arduino UNO R4 WiFi
- 2 módulos transceptor CAN FD (por ejemplo, basados en MCP2558FDT o TJA1051 en CAN clásico para empezar — el FD exige un transceptor compatible con FD)
- Resistencias de terminación de 120 Ω en los dos extremos del bus (muchos módulos las integran, verifica el puente)
- Cables: CANH↔CANH, CANL↔CANL (nunca cruzados), masas conectadas.
Código (emisor, la otra placa como receptor con el ejemplo gemelo)
#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);
}
Verificación esperada
En el lado receptor, la trama llega con su ID 0x123 y un contador incrementado; la matriz LED de la placa receptora puede mostrar el valor. Prueba de diagnóstico: desconecta CANL — ya no pasa nada; retira una terminación — errores de arbitraje intermitentes.
Errores frecuentes
- Conectar el controlador directamente a un bus sin transceptor: el RA4M1 no tiene la capa física; sin transceptor, no ocurre absolutamente nada (y se puede dañar el pin).
- Usar un transceptor CAN clásico en un bus en FD: la velocidad de datos de 2 Mbit/s pasa mal o no pasa; usa un transceptor compatible con FD (o fuerza las dos velocidades idénticas en CAN 2.0).
- Terminaciones olvidadas o en el medio del bus: los dos extremos físicos deben llevar 120 Ω, no el nodo del medio.
- CANH/CANL cruzados en un solo nodo: silencio total — es el error n.º 1, verifícalos primero.
- Confundir CAN FD y CAN clásico en las velocidades: el arbitraje y los datos pueden tener dos velocidades diferentes; los dos nodos deben estar configurados igual.
Otros tutoriales para esta placa
- 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
Ejemplos de código para esta placa
clignotante.inoArduinobouton-poussoir.inoArduinodac-analogique.inoArduinoentree-analogique.inoArduinopwm-respiration.inoArduinoservo-balayage.inoArduino