🛠 Bus CAN : exploiter les deux contrôleurs DCAN avec can-utils

BeagleBone Black (TI Sitara AM3358) · avance · Schéma : IMG-beaglebone-black-avance-3-bus-can-dcan-candump.svg — deux BeagleBone Black reliées par un bus CAN différentiel (CAN_H, CAN_L, résistance de terminaison 120 Ω de chaque côté), transceivers SN65HVD230 sur les broches P8_17/P8_18.

Objectifs

L'AM335x embarque DEUX contrôleurs CAN (DCAN) — un argument industriel massif face aux cartes grand public. Vous allez exposer le CAN0 sur les broches P8_17/P8_18 (les broches MCASP0 muxées en DCAN par l'overlay communautaire KCP-0001), configurer l'interface avec ip link, et échanger des trames avec can-utils entre deux nœuds.

Matériel

Code complet

sudo apt install can-utils device-tree-compiler

# Exposer CAN0 sur P8_17/P8_18 :
# - ancienne image : overlay KCP-0001 via le capemanager
echo cape_can | sudo tee /sys/devices/platform/bone_capemanager/slots
# - image récente : l'overlay est embarqué (KCP-0001) ou chargé via configfs
ls /sys/class/net/          # can0 doit apparaître

# Configurer l'interface (impérativement interface DOWN pour changer le débit)
sudo ip link set can0 down
sudo ip link set can0 type can bitrate 500000
sudo ip link set can0 up
ip -details link show can0

# Émettre / écouter
candump can0 &
cansend can0 123#DEADBEEF

# Test seul sur une carte : activer le loopback interne
sudo ip link set can0 down
sudo ip link set can0 type can bitrate 500000 loopback true
sudo ip link set can0 up
cansend can0 321#CAFEBABE && candump -n 1 can0

Vérification attendue

En loopback, candump reçoit la trame 321#CAFEBABE envoyée par cansend. En bus à deux cartes, cansend sur l'une fait apparaître la trame dans candump sur l'autre ; ip -details montre le bitrate 500000 actif et l'interface en UP.

Erreurs fréquentes

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels