www.mikrocontroller.net

CAN

Eine ausführliche Liste: http://www.mjschofield.com/devices.htm [dead]

Inhaltsverzeichnis

[Bearbeiten] Mikrocontroller mit CAN

[Bearbeiten] Atmel AT90CAN128

  • Atmel AVR Controller mit CAN-Schnittstelle (ein Kanal)
  • 15 CAN "Message Objects", jedes individuell konfigurierbar.
  • 128kByte Flash, 4kByte RAM
  • Bis auf die CAN-Funktionen weitestgehend identisch mit dem ATmega128 (vgl. Migration-Guide ATmega128->AT90CAN128 bei atmel.com)
  • 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).
  • Für die ISP-Programmierung schliesst man Ihn wie den ATmega128 an. MOSI-2 ; MISO-3 ; SCK-11 ; /Reset-20 ; GND-22,53,63 ; Vcc-21,52,(62),(64). Auf die übliche "ATmega64/128-Problematik" achten: MISO/MOSI der Programmierschnittstelle sind nicht identisch mit der SPI-Schnittstelle.
  • Im Auslieferungszustand ist nur der interne RC-Oszillator aktiv (wie üblich bei allen modernen AVRs mit internem R/C-Oszillator vgl. AVR Checkliste). Umschalten auf externe Taktquelle über die AVR-Fusebits.
  • 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).
  • die aktuelle Hardware-Version (Stand 4/2005) hat einen "silicon bug" (Hardwarefehler, vgl. avrfreaks-Forum): Liegt der Stack im externen RAM, führt dies zu Fehlern in der Stackverwaltung (push/pop/rcall etc.). Details in aktuellen Fassungen des Datenblatts. Abhilfe/Workaround: Stack im internen RAM (<0x1001) verwalten. Dies ist ohnehin sinnvoll, da der Stackzugriff dann schneller ist.
  • CANopen software protocol stacks at http://www.port.de/Atmel.html
  • Freier CANopen stack: http://www.canfestival.org/


[Bearbeiten] Atmel AT91SAM7X, AT91SAM7A

  • ARM7TDMI-Kern

[Bearbeiten] Luminary Micro Stellaris LM3S8xxx

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

[Bearbeiten] Microchip PIC18Fxx8 PIC18Fxx8x

[Bearbeiten] Mitsubishi / Renesas R8C / M16C / M32C

R8C/23, M16C/6Nx

[Bearbeiten] 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.

[Bearbeiten] Freescale MC9S08

  • D Serie


[Bearbeiten] Freescale MC9S12

  • B, C, D und H Serie

[Bearbeiten] NXP (ex. Philips) LPC2129 LPC2194 LPC2290 LPC2292 LPC2294

[Bearbeiten] NXP LPC23xx

[Bearbeiten] 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

[Bearbeiten] STMicroelectronics STM8S20

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

[Bearbeiten] STMicroelectronics STR730 STR750

  • ARM7TDMI-Kern
  • 1-3 CAN Schnittstellen

[Bearbeiten] STMicroelectronics STR910FM32, STR910FW32, STR911FM42, STR911FM44, STR912FW42, STR912FW44

  • 96MHz ARM966E-S CPU Kern

[Bearbeiten] TI TMS470

  • ARM7TDMI-Kern

[Bearbeiten] Toshiba TLCS-870/C

[Bearbeiten] CAN Controller

[Bearbeiten] 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€)

[Bearbeiten] Links

[Bearbeiten] SJA1000

"Stand-alone" CAN-Controller von Philips

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

[Bearbeiten] AN82526

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

  • Vorgänger des AN82527

[Bearbeiten] 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)
  • erhältlich z. B. bei Reichelt (ca. 5€)

[Bearbeiten] 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)

[Bearbeiten] SAE81C9x

  • SPI und Busanschluss möglich.
  • PLCC44 und PLCC28, letzteres allerdings in ungebräuchlicher Bauform
  • Nur CAN 2.0A, beherrscht also keine Extended IDs.

[Bearbeiten] Bustreiber (CAN-Transceiver)

[Bearbeiten] High-Speed

[Bearbeiten] MCP2551

  • von Microchip
  • PDIP8 und SOIC
  • VCC = 4,5...5,5V
  • kostet rund 1€

[Bearbeiten] PCA 82C250

  • 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€)

[Bearbeiten] 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€)

[Bearbeiten] TJA 1050

[Bearbeiten] ATA6660

  • von Atmel
  • SO8
  • VCC = 4,75...5,25V

[Bearbeiten] SN65HVD23x

  • von Texas Instruments
  • SO8
  • VCC = 3,0V...3,6V
  • erhältlich z. B. bei Reichelt (SN65HVD230, SN65HVD231)

[Bearbeiten] Fault-Tolerant / Low-Speed

[Bearbeiten] TJA1054

  • von NXP (ex. Philips)
  • bis 125 "kBaud"
  • SO14
  • ähnliche Funktionen, gleicher Hersteller: TJA1053, TJA1055

[Bearbeiten] CAN Repeater

[Bearbeiten] AMIS-42700

[Bearbeiten] 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...

[Bearbeiten] CAN Hub

CAN Hub mit standard Knoten

CAN Hub mit getrennten Rx und Tx Leitungen

[Bearbeiten] 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.

[Bearbeiten] 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

[Bearbeiten] DS 36001M

Obsolete

[Bearbeiten] 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

[Bearbeiten] Verkabelung

  • auf beidseitige Busterminierung achten (typisch 2x 124 Ohm bei "high-speed")
  • Standardbelegung für diverse Steckverbindungen vgl. CANOpen-Dokumentation http://www.can-cia.de/index.php?id=440 (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: http://www.mikrocontroller.net/forum/read-1-325202.html?reload=yes#325962

[Bearbeiten] Debugging

Hersteller von Debug-Geräten

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/

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

[Bearbeiten] Links

[Bearbeiten] Intern

CAN als Hausbus

[Bearbeiten] Allgemein

[Bearbeiten] Hardware

[Bearbeiten] Testboards

[Bearbeiten] Dongles

[Bearbeiten] Software

[Bearbeiten] Protokolle

[Bearbeiten] CANOpen

webmaster@mikrocontroller.netImpressumNutzungsbedingungenWerbung auf Mikrocontroller.net