CAN
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
- Mikrocontroller mit CAN Schnittstelle
- Herstellerseite
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
- Mikrocontroller mit Cortex-M3 Kern.
- 1 - 2 CAN Schnittstellen
- Herstellerseite: Philips Semiconductors
NXP (ex. Philips) LPC2129 LPC2194 LPC2290 LPC2292 LPC2294
- Mikrocontroller mit ARM7TDMI-S-Kern (vgl. LPC2000 Philips ARM7TDMI-Familie)
- 2 - 4 CAN Schnittstellen
- CAN-Modul angelehnt an Philips SJA1000 (aber mit recht langer und deftig gewürzter Bug-Liste)
- Herstellerseite: Philips Semiconductors
- LPC2194 erhältlich bei http://www.microcontroller-starterkits.de und http://de.digikey.com/
- CANopen software protocol stacks at [2]
NXP LPC23xx
- Mikrocontroller mit ARM7TDMI-S-Kern (vgl. LPC2000 Philips ARM7TDMI-Familie)
- 2 CAN Schnittstellen
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
- von Microchip
- PDIP8 und SOIC
- VCC = 4,5...5,5V
- kostet rund 1€
- Datenblatt
- Eagle-Lib
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
- von NXP (ex. Philips)
- SO14
- VCC = 4,75...5,25V
- Standby, Sleepmode
- 1 MBit/s
- -27..+40V
- Automatische Einstellung der I/O Pegel
- Erweiterte Diagnosefunktionen
- "Listen only"-Mode
- 2. Generation
- http://www.nxp.com/documents/data_sheet/TJA1041A.pdf
TJA 1042
- von NXP (ex. Philips)
- SO8
- VCC = 4,5...5,5V auch als 3V I/O Version
- Standby
- -27..+40V
- +-8kV ESD, verträgt dauerhaft +-58V auf den CAN-BUS
- 3. Generation (bessere EMC und EMI Daten)
- http://www.nxp.com/documents/data_sheet/TJA1042.pdf
TJA 1043
- wie TJA1041 (bessere EMC, ESD Eigenschaften und geringerer Ruhestrom)
- SO14
- Standby, Sleepmode
- -58..++58V
- +-8kV ESD, verträgt dauerhaft +-58V auf den CAN-BUS
- 3. Generation
- http://www.nxp.com/documents/data_sheet/TJA1043.pd
TJA1051
- von NXP (ex. Philips)
- SO8, pinkompatibel zu TJA1050
- VCC = 4,75...5,25V
- 3. Generation, Nachfolger der PCA82C25x
- http://www.nxp.com/products/interface_and_connectivity/transceivers/can_transceivers/TJA1051T.html
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
- Dual High-Speed CAN Transceiver
- High speed (up to 1Mbit/s)
- SOIC-20
- vgl. http://www.mikrocontroller.net/topic/53799
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
- 16 Port-Pins mit unterschiedlichen Konfigurationsmöglichkeiten
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.
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:
- Forumsbeitrag: CAN übertragung brich ca. nach 10 sek ab
Debugging
Hersteller von Debug-Geräten
- Vector-Informatik CANscope (Pegeltester) http://www.vector-informatik.de/deutsch/ - ca. 3300EUR
- Gemac CBT (CanBusTester) testet auch Pegel, Reflexionen ... (Treiber etc. etwas ältlich, von 2002, was ist mit Weiterentwicklung?), auch leihweise http://www.gemac-chemnitz.de/pages/d_html/produkte/bus-tester/new-de-can-bust.html http://www.brandt-data.de/canbus/can_intro.html - ca. 2400EUR
>> 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 ...):
- LeCroy WaveRunner 6040 wird mit Vector-CANcaseXL (externer CAN-Trigger) geliefert (sehr gut, ab ca.9000 EUR)
- LeCroy WaveSurfer 424 wird mit Vector-CANcaseXL (externer CAN-Trigger) geliefert (sehr gut, ab ca.8000 EUR)
- Yokogawa DL1640 und DL9040 (CAN-Trigger ist intern) ähnliche Preise wie LeCroy, Bedienung gewöhnungsbedürftig, geht mit etwas Übung besser
- Tektronix
- HP / Agilent
- LogicPort http://www.pctestinstruments.com/
- Saleae Logic http://www.saleae.com/logic/ (kostet nur 149$; Professoren an Universitäten und Hochschulen können ein Gerät/Person kostenlos erhalten (auf Anfrage))
- Scanalogic-2 Logikanalysator und Signalgenerator http://www.exp-tech.de/Hacking---Measurement/Scanalogic-2-Logikanalysator-Signalgenerator.html (kostet nur ~60€)
Triggermöglichkeiten: SOF, CAN-ID, CAN-Data, ErrorFrame, RTR, Ack, NoAck - alle verknüpfbar (gleich ungleich kleiner größer inRange outofRange)
Links
Intern
Allgemein
- CAN-WIKI - spezielle Wiki Site für CAN bus (Englisch)
- Wikipedia - CAN
- Grundlagen zum CAN-Bus - Kurze Zusammenfassung der Funktionsweise und Einsatzmöglichkeiten vom CAN-Bus
- CAN - Controller_Area_Network (Czech)
- CAN in 30 minutes or less by Hassane El-Khoury at www.embedded.com
- Einführung in CAN - kostenloses E-Learning Angebot
Testboards
- AT90CAN Testboard by www.jtronics.de (aktualisiert 2010)
- universal Testboard - CAN RS232 SPI I2C
- ATmega8 CAN Testboard und MCP2515 Tutorial
- Olimex AVR-CAN mit AT90CAN128
Dongles
Selbstbau Projekte
- Can200 Linux Project von Martin Homuth-Rosemann CAN Businterface am Parallelport (LPT). Mit SJA1000.
- USB<>CAN Bus Interface mit AVR ATmega162 Open Source. Mit ATmega162, FT245 und SJA1000.
- CAN Bus HUB
- CAN-Interceptor von Martin S. Mit R8C/23 und FT232R.
- USBtin - Simple USB to CAN interface von Thomas Fischl Mit PIC18F14K50 und MCP2515. Bausatz verfügbar (24,50 EUR).
Fertiggeräte
- Tiny-CAN USB-CAN-Adapter von MHS-Elektronik Ab 60,- EUR. Open Source CAN-Monitor für Windows und Linux.
- CANvu - CAN-Display-Produkte von CANtronik
- CAN/LIN nach USB Adapter von KOPF GmbH Ab 320,- EUR
- PC/CAN-Interfaces von IXXAT Automation GmbH ca. 200 EUR
- CAN-Interfaces von Peak-System Ca. 200 EUR
- USB to CAN Bus Interface von EMS Dr. Thomas Wünsche Ca. 180 EUR
- USB-CANmodul Serie von SYS TEC electronic mit Unterstützung von 1, 2, 8, oder 16 CAN Kanälen (ab 129,- EUR)
- USB2CAN USB to CAN bus galvanic isolated converter von 8devices Ab 65,- EUR. Open source interface DLL and software.
- canusb USB<>CAN über V24-Treiber und RS232/V24<>CAN Bus Interface von Lawicel.
- CAN-LAN-Bridge von PORT mit ARM und Linux
- CAN-USB Gateway und CAN-Ethernet Gateways von AnaGate LowCost Lösung und Professionelle Varianten mit Linux System für eigene Anwendungen mit 1,2 und 4 CAN-Ports (Shop)
- PP2CAN LPT-CAN Interface, CAN2MMC Datenlogger (CAN,RS232-GPS) und USB2CAN USB2CAN USB-CAN Interface 80 EUR von CANLAB
- CANHACK CANUSB Interface High Speed CAN + OBD2 inkl. KCANMonitor. DLL/Programmierschnittstelle für eigene Anwendungen.
- CAN Bus Adapters ab 89,-€ von VSCOM
Software
- BUSMASTER - Open Source CAN-Bus Analyzer von ETAS/BOSCH
- CAN Monitor für Lawicel CANUSB, Zanthic CAN-4-USB-FX/MCP2515 und MHS-Elektronik Tiny-CAN
- CAN Monitor und Tracer für Peak USB, Lawicel CANUSB+CAN232 und kompatible
- GNU – Open Source CAN Monitor, Makro und Filter Funktion, Plugin fähig, unter GTK+ entwickelt
- wireshark - Netzwerk Protokoll Analyse Tool, unterstützt via socket-CAN CAN und CANopen