CAN-bus

CAN (Controller Area Network) er en robust seriel bus, hvor flere styreenheder deler det samme netværk. Den bruges blandt andet i køretøjer, maskiner og industriel styring, hvor enheder skal kunne udveksle korte beskeder pålideligt.

Controller og transceiver

En CAN-forbindelse består af to forskellige dele:

En mikrocontroller med indbygget CAN-controller kan derfor stadig kræve en ekstern transceiver. Tilslut ikke CANH eller CANL direkte til almindelige GPIO-pins.

Ledninger og terminering

CAN-bus med fire noder forbundet parallelt på CANH og CANL, 120 ohm terminering i begge ender og detaljeret Uno R4 WiFi-forbindelse via CAN-transceiver
CANH og CANL føres som et snoet par mellem noderne. Terminering sidder kun ved bussens to fysiske ender. Uno R4 WiFi bruger CAN_TX på D10 og CAN_RX på D13 via en ekstern transceiver. Transceiverens forsyningsspænding og logikniveau skal passe til den valgte model.

Beskeder og arbitration

Hastighed i byte

Klassisk CAN kan sende op til 8 data-byte i en ramme. Ved fuld bus og rammer med alle 8 databytes giver almindelige hastighedsindstillinger omtrent disse nyttedata-rater:

Det er grove overslag for klassiske CAN-rammer med standard-ID. ID, kontrolfelter, bit stuffing, korte datafelter, arbitration, fejl og pauser bruger også buskapacitet, så applikationen får typisk mindre. Højere bus-hastighed begrænser også den mulige kabellængde; følg transceiverens og netværkets specifikationer.

Tilslutning i praksis

  1. Find controllerens CAN_TX og CAN_RX, og forbind dem til transceiverens TXD og RXD efter modulproducentens pinout.
  2. Forsyn transceiveren med dens specificerede spænding. Transceiverforsyning og logikniveau er modelafhængige; kontrollér dem før tilslutning.
  3. Forbind transceiverens CANH til CANH og CANL til CANL på den fælles bus.
  4. Kontrollér at der kun er én 120 Ω terminering i hver fysisk ende af bussen.
  5. Indstil samme bus-hastighed på alle noder, og sørg for at besked-ID'er ikke kolliderer efter systemets plan.

Eksempel: Uno R4 WiFi

RA4M1-mikrocontrolleren i Arduino Uno R4 WiFi har en CAN-controller, men kortet kræver en ekstern CAN-transceiver for at kommunikere på CANH/CANL. Brug kortets dokumenterede CAN_TX/CAN_RX-pins; pinmapping kan afhænge af kortversionen. Se Arduino Uno R4 WiFi: CAN Bus for et officielt tilslutningseksempel.

Kilder