CAN

Aus der Mikrocontroller.net Artikelsammlung, mit Beiträgen verschiedener Autoren (siehe Versionsgeschichte)
Wechseln zu: Navigation, Suche

Controller Area Network - Ein von Bosch entwickeltes, echtzeitfähiges Bussystem für den Automobilbereich, welches u.a. auch Anwendung in der Automatisierungstechnik findet.

Mikrocontroller mit CAN

Atmel AVR

AT90CAN

  • Atmel AVR Controller mit CAN-Schnittstelle (ein Kanal)
  • Speicher: (flash,EEPROM,RAM)
    • AT90CAN32 -> 32KB 1KB 2KB
    • AT90CAN64 -> 64KB 2KB 4KB
    • AT90CAN128 -> 128KB 4KB 4KB
  • 15 CAN "Message Objects", jedes individuell konfigurierbar
  • Bis auf den CAN controller weitestgehend identisch mit den nicht CAN Versionen (siehe AVR096)
  • Beispielcode inkl. CAN für den IAR-C-Compiler findet sich bei atmel.com. Autobaud-Routinen in Assembler (etwas Aufwand bei der Portierung nach avr-gcc/avr-as).
  • Dieser MC ist für nicht-gewerbliche Endanwender einzeln z. B. bei Reichelt, CSD und Segor erhältlich (ca. 9EUR). Beim Bestellen des MC sollte man einen CAN-BUS-Treiber gleich mitbestellen: z. B. Philips PCA82C250. Jedoch auf vorhandene Versorgungsspannungen achten (AT90CAN128 "kann mit" VCC=2,7...5,5V, PCA82C250 lt. Datenblatt für VCC=4,5...5V).
  • CANopen software protocol stacks at http://www.port.de/Atmel.html
  • Freier CANopen stack: http://www.canfestival.org/


ATmega16M1/32M1/64M1

  • modernisierte Version der AT90CAN128 Serie inkl. LIN, PSC und DAC
  • not sampled

AT32UC3C

  • 32bit AVR mit zwei CAN controllern
  • bis zu 512k flash, 64k RAM
  • DMA, USB, Ethernet MAC, 2Msmps 12bit ADC, 12bit DAC

Atmel ARM

AT91SAM7X

  • ARM7TDMI-Kern mit einem CAN controller
  • bis 512k flash und 128k RAM

AT91SAM9X

  • ARM926-Kern mit zwei CAN controllern
  • kein onboard flash
  • 32k RAM aber DDR2 support

AT91SAM3A

  • Cortex M3-Kern mit zwei CAN controllern
  • bis zu 512k flash und 96k RAM

AT91SAM3X

  • Cortex M3-Kern mit zwei CAN controllern
  • bis zu 512k flash und 96k RAM

Luminary Micro Stellaris LM3S8xxx

  • ARM Cortex-M3
  • bis 64kByte RAM und 256kByte Flash
  • CAN und Ethernet

Microchip PIC18Fxx8 PIC18Fxx8x

Mitsubishi / Renesas R8C / M16C / M32C

R8C/23, M16C/6Nx

Motorola / Freescale DSP56F8xx

  • Clock des CAN-Moduls von PLL speisen, nicht von XTAL, sonst gibt es sporadische Aussetzer
  • Bei hohen Datenraten ist es notwendig die CAN-TX-Leitung vom Controller mit einem PullUp-Widerstand zu beschalten. Sonst stimmt das Bit-Timing nicht, weil die Anstiegszeit des TX-Signals zu schlecht ist.

Freescale MC9S08

  • D Serie


Freescale MC9S12

  • B, C, D, G und H Serie

NXP LPC11CXX

  • 32-bit ARM Cortex-M0
  • LPC11C12 16KB flash, 8KB SRAM, 1x C_CAN
  • LPC11C14 32KB flash, 8KB SRAM, 1x C_CAN
  • LPC11C22 16KB flash, 8KB SRAM, 1x C_CAN, on-chip CAN transceiver
  • LPC11C24 32KB flash, 8KB SRAM, 1x C_CAN, on-chip CAN transceiver
  • Herstellerseite: [1]

NXP LPC175X LPC176X

NXP (ex. Philips) LPC2129 LPC2194 LPC2290 LPC2292 LPC2294

NXP LPC23xx

NXP P80C591 P80C592 P80C598

  • 8-Bit Mikrocontroller mit 8051-Kern
  • P80C591 ist neuer und beherrscht CAN2.0B
  • P80C592: CAN2.0A, P80C598 ist die Automotive-Version vom '592

Silicon Labs C8051F04X C8051F06X C8051F5XX

  • 8-Bit Mikrocontroller mit 8051-Kern
  • 16K - 128K Flash, 2304 - 8448 RAM
  • LIN 2.1
  • 25-50 MIPS
  • bis 5x5 QFN

STMicroelectronics STM8S20

  • STM8 Kern [3] DIV/MUL -Befehle
  • SPI mit automatischer CRC Berechnung
  • 1 beCAN Schnittstelle CAN2.0B
  • sehr preiswert (128 kFlash/6K RAM ) 3,30 bis 4,80 € ([4] aber SMD LQFP

STMicroelectronics STR730 STR750

  • ARM7TDMI-Kern
  • 1-3 CAN Schnittstellen

STMicroelectronics STR910FM32, STR910FW32, STR911FM42, STR911FM44, STR912FW42, STR912FW44

  • 96MHz ARM966E-S CPU Kern

STM32 (Cortex M0/M3/M4)

Cortex M0 Core

- STM32 F0 series of entry-level MCUs
  • STM32F042  : 1 CAN Schnittstelle
  • STM32F072  : 1 CAN Schnittstelle

Cortex M3 Core

- STM32 F1 series of mainstream MCUs
  • STM32F103  : 1 CAN Schnittstelle
  • STM32F105  : 2 CAN Schnittstellen
  • STM32F107  : 2 CAN Schnittstellen
- STM32 F2 series of high-performance MCUs
  • STM32F205  : 2 CAN Schnittstellen
  • STM32F207  : 2 CAN Schnittstellen
  • STM32F215  : 2 CAN Schnittstellen
  • STM32F217  : 2 CAN Schnittstellen

Cortex M4F Core

- STM32 F3 series of mixed-signal MCUs with DSP and FPU instructions
  • STM32F302  : 1 CAN Schnittstelle
  • STM32F373  : 1 CAN Schnittstelle
  • STM32F383  : 1 CAN Schnittstelle
  • STM32F303  : 1 CAN Schnittstelle
  • STM32F313  : 1 CAN Schnittstelle
- STM32 F4 series of high-performance MCUs with DSP and FPU instructions
  • STM32F405  : 2 CAN Schnittstellen
  • STM32F415  : 2 CAN Schnittstellen
  • STM32F407  : 2 CAN Schnittstellen
  • STM32F417  : 2 CAN Schnittstellen
  • STM32F427  : 2 CAN Schnittstellen
  • STM32F437  : 2 CAN Schnittstellen
  • STM32F429  : 2 CAN Schnittstellen
  • STM32F439  : 2 CAN Schnittstellen

TI TMS470

  • ARM7TDMI-Kern

Toshiba TLCS-870/C

CAN Controller

MCP2515

"Stand-alone" CAN-Controller von Microchip.

  • SPI Schnittstelle
  • 2 Empfangs- und 3 Sendepuffer jeweils individuell konfigurierbar (ID, Masken/Filter etc.)
  • ein gemeinsamer Interruptpin (RX)
  • ein Interruptpin pro Empfangspuffer, umkonfigurierbar als GPO
  • ein Triggerpin pro Sendepuffer, umkonfigurierbar als GPI
  • Stromsparmodus
  • auch für 3,3V-Betrieb geeignet.
  • Diverse C- und Assembler Beispielcodes verfügbar (z. B. bei microchip.com und kvaser, Assembler meist für PICs). Auch Software für Direktanschluss an die parallele Schnittstelle eines PC verfügbar ("bit-bang Interface").
  • erhältlich z. B. bei Reichelt (ca. 2€)

Links

SJA1000

"Stand-alone" CAN-Controller von Philips

  • Parallele Schnittstelle ca. 12 Leitungen
  • erhältlich z. B. bei Reichelt (ca. 4 Euro)

AN82526

"Stand-alone" CAN-Controller von Intel (entwickelt von Bosch)

  • Vorgänger des AN82527

AN82527

"Stand-alone" CAN-Controller von Intel (entwickelt von Bosch)

  • Nachfolger des AN82526
  • parallele UND SPI-Schnittstelle
  • 8- oder 16-Bit Multiplex Bus, oder 8-Bit Non-Multiplexed Bus
  • 14 Tx/Rx Puffer
  • bis zu 16 IO-Pins (je nach Controlleranbindung)
  • Wird nicht mehr hergestellt

Bosch CC170 / CC750 / CC770

  • kompatibel zum AN82527
  • mehr Debug-Register
  • CC750 im SOIC16-W Gehäuse ohne Parallel-Interface, nur SPI
  • erhältlich bei Rutronik (ca. 8 Euro)test

SAE81C9x

  • SPI und Busanschluss möglich.
  • PLCC44 und PLCC28, letzteres allerdings in ungebräuchlicher Bauform
  • Nur CAN 2.0A, beherrscht also keine Extended IDs.
  • 2004 von infineon abgekündigt, ohne Nachfolgeprodukt

Bustreiber (CAN-Transceiver)

High-Speed

MCP2551

PCA 82C250

  • ABGEKÜNDIGT! In Produktion: NXP Orderlist
  • von NXP (ex. Philips)
  • PDIP8 und SO8
  • VCC = 4,5...5,5V
  • V-CAN: -8V..+18V -> "TTL-kompatible" Bus-Spannung
  • erhältlich z. B. bei Reichelt (ca. 1,00€)

PCA 82C251

  • von NXP (ex. Philips)
  • PDIP8 und SO8
  • VCC = 4,5...5,5V
  • V-CAN: -40V..+40V -> +24V Bus-Spannung
  • erhältlich z. B. bei Reichelt (ca. 1,50€)

TJA 1041

TJA 1042

TJA 1043

TJA1051

TJA1052i

  • von NXP
  • SO16
  • Integrierte galvanische Trennung

ATA6660

  • ABGEKÜNDIGT, wird nicht mehr hergestellt.
  • von Atmel
  • SO8
  • VCC = 4,75...5,25V

SN65HVD23x

  • von Texas Instruments (auch als Sample erhaeltlich)
  • SO8
  • VCC = 3,0V...3,6V
  • erhältlich z. B. bei Reichelt: SN65HVD230, SN65HVD231 (ca. 3,00 €)

Datenblatt:

Fault-Tolerant / Low-Speed

TJA1055

  • von NXP (ex. Philips)
  • bis 125 "kBaud"
  • SO14
  • TJA1055/3 unterstützt 3V interfaces
  • 6kV ESD Schutz
  • abgekündigt: ähnliche Funktionen, gleicher Hersteller: TJA1053, TJA1054

UJA1061

  • NXP
  • System Base Chip (SBC)
  • TSSOP 32-Pin
  • Serial Interface (SPI)
  • Spannungsregler 3.3 V oder 5.0 V (LDO)
  • 6kV ESD Schutz

L4969

  • ST Microelectronics
  • System Base Chip (SBC)
  • SO20
  • Serial Interface (SPI)
  • Spannungsregler (LDO)

MC33889

  • Motorola Freescale
  • System Base Chip (SBC)
  • SO28
  • Serial Interface (SPI)
  • Spannungsregler (LDO)

CAN Repeater

AMIS-42700

Alternative

  • zwei Transceiver
  • Schaltung
  • Anmerkung: Diese Schaltung ist Quatsch und funktioniert nicht.
  • -Zum Senden eines Zeichen, muss beim CAN paralell auf dem Bus gelesen werden.
 -Die TRansceiver tun dies nicht, mach nur der Controller.
 -Die gelesene Nachricht muss also durch einen Controller erneut gesendet werden, wenn der Bus frei ist...
  • Anmerkung: Die letzte Anmerkung ist Quatsch. Die Schaltung funktioniert in einem realen Projekt einwandfrei. Das tut es, weil die Kollisionen, auf die hier angespielt wird, durch die Schaltung auf das Segment des sendenden Controllers zurückgemeldet werden, dieser die Kollision also erkennt und die Sendung ggfs abbricht. Allerdings wird durch die zusätzliche Latenz die maximale Buslänge deutlich reduziert. In dem erwähnten Projekt war der Bus auch nur etwa 2m lang.
  • Funktioniert NICHT (getestet in einem realen Projekt). Warum es nicht funktionieren kann steht z.B. hier: http://www.mikrocontroller.net/topic/106674

CAN Hub

CAN Hub mit standard Knoten

CAN Hub mit getrennten Rx und Tx Leitungen

CAN Hub für sternförmige und busförmige Verdrahtung

SLIO-CAN

Preisgünstigste Bausteine sind die Serial Linked I/O Bausteine (SLIO). Diese Bausteine ermöglichen den Aufbau von Ein- und Ausgabeknoten ohne lokalen Prozessor. Auf der Basis dieser Bausteine lässt sich eine dezentrale Signal-Ein-Ausgabe mit minimalem Kostenaufwand realisieren.

Philips P82C150

  • Single-Chip-I/O-Einheit mit integriertem CAN-Controller
  • mögliche Busdatenrate 20kBd bis 125kBd
  • interner RC-Oszillator wird durch den Bitstrom auf den Bus synchronisiert
  • Kalibrierungsnachricht alle 8000 Bitzeiten erforderlich
    • 4-Bit des Identifiers über Port-Pins einstellbar
  • maximal 16 P82C150 in einem CAN-Segment
    • 16 Port-Pins mit unterschiedlichen Konfigurationsmöglichkeiten
      • 16 mal als digitale Eingänge
      • 16 mal als digitale Ausgänge
      • 2 mal als analoger Ausgang ( 10-Bit, DPM )
      • 6 mal als analoger Eingang ( 10-Bit, multiplex )
      • 2 mal als Komparator

Anmerkung: Philips stellt die SLIO nicht mehr her! Es ist auch "nichts" mehr am Markt beschaffbar, wenn, dann zu horrenden Preisen (um die 60,-EUR/Stück zur Zeit). --Patrick 09:08, 25. Jan 2005 (CET)

obsolete

DS 36001M

Obsolete

MCP2502X/5X

CAN-IO Erweiterung. Braucht praktisch nur noch Quarz und Transciever. Preise ab 3€

  • bis zu 8 digitale IOs
  • bis zu 2 PWM, 10 Bit
  • bis zu 4 ADC, 10 Bit, externe Ref.
  • SLEEP-Mode etc.

Datenblatt

Verkabelung

  • auf beidseitige Busterminierung achten (typisch 2x 120Ω bei "high-speed")
  • Standardbelegung für diverse Steckverbindungen vgl. CANOpen-Dokumentation (CiA 303-1); erfordert Anmeldung
  • Schaltplan für galvanische Trennung z. B. nach Datenblatt des PCA82C250
  • für einfache Testaufbauten über sehr kurze Strecken oder "on-board-CAN" kann auf die Bustreiber verzichtet werden (vgl. Siemens Application-Note AP2921)

Es gibt auch CAN mit

  • einpoliger unsymmetrischer Verbindung (SAE J2411 single wire)
  • optischer Verbindung (Faser, Glasfaser)

Für einfache Tests genügt auch eine direkte wired-and-Verbindung ohne Treiber:

Debugging

Hersteller von Debug-Geräten

>> CBT wurde weiterentwickelt zum CBT2 (2007) bzw. CANtouch (2014) https://gemac-fieldbus.com
  • ixxat bietet ebenfalls den Gemac-cbt an, auch leihweise
  • QCANObserver http://qcanobserver.sourceforge.net/ CAN Debugger mit ähnlichen Fähigkeiten. Derzeit läuft die Entwicklung nur noch unter Linux. Freie Software (GPL)

Oszilloskope mit CAN-Analyse (manche auch SPI, LIN, RS232, SATA ...):


Triggermöglichkeiten: SOF, CAN-ID, CAN-Data, ErrorFrame, RTR, Ack, NoAck - alle verknüpfbar (gleich ungleich kleiner größer inRange outofRange)

Links

Intern

CAN als Hausbus

Allgemein

Testboards

Dongles

Selbstbau Projekte

Fertiggeräte

Software

Tools

Protokolle

CANopen