Hallo
Ich bin in uC Programmierun noch ein Anfänger.
Ich beschäfftige mich momentan mit CAN-Bus Systemen. Bisher hab ich
immer mit Diagnose Tools bzw. gekaufter Harrd und Software gearbeitet.
Nun muß ich allerdings ein Standalone Gateway Bauen.
Aufgabe des GW:
- 500k Baud
- Nahrichten geändert durchlassen
- andere Nachrichten ungeändert durchlassen
- auf bestimmte nachrichten reagieren ( z.B. wenn 0f 05 18 kommt 0e 05
18 senden)
gesndet werden ca. 15 Nachrichten alle im 10ms takt
Und das aber in beide Richtungen. Wobei in einer richtung erstmal nur
der Nachrichten durchgang gewährt sein muß?
Hier gibt es schon ein paar wenige Artikel dazu, jedoch werden da
teilweise so viele Sachen empfohlen, das ich auch nicht schlauer werde.
Wichtig für mich ist es auch, das gute Samples bzw. Tutorials vorhanden
sind.
Mein Aktueller stand währen 2 x MCP2515 und evtl. nen AVR.
Aber es gibt ja mittlerweile auch schon embedded varianten.
Danke
Was ist für dich eine embedded-Variante?
AT90CANxx?
Die haben aber nur ein CAN-Interface (?).Es müsste also ein weiteres per
SJA100 oder MCP2515 hinzugefügt werden. Die HCS12 von Freescale oder
einige ARM7-Controller haben mehrere CAN-Interfaces, wären also auch
eine Überlegung wert.
Gast
Ja, embedded meinte ich damit, das ich nicht 3-4 chips hab, sondern die
schon in einen integriert sind.
Meine Frage war, ob mir jemand helfen kann, wie ich das aufbauen sollte.
Und welche Chips sich da empfehlen (gerade für mich als Anfänger).
Vielen Dnak schonmal
Für eine Hilfe sind Deine Informationen etwas dürftig.....
Es wird sicher mehr als ein Chip und der Teufel steckt in der
Programmierung - welche Sprache hättest Du z. B. gerne ?
Gruss Otto
ein günstigen µC mit 2 CAN nodes gibts in der xc800 reihe von infineon.
ist allerding alte 8051 Architektur mit "nur" ca 5 MIPS
-der CAN-Kontroller kann auf das selbstständige Routen von Paketen
zwischen zwei Bussen konfiguriert werden, solange an den Nachrichten
z.B. nur die ID geändert werden muss.
-um inteligente Aktionen, wenn paket A auf bus 1 sende B auf bus 2 muss
sich natürlich der 8051 kümmern.
-Der CAN-Teil des µC ist leider recht komplex, gerade für einen
Anfänger, und das Datenblatt ist infineontypisch: kein Beispielcode,
kein roter Faden: Es werden halt alle Bits aufgezählt, die Story
dahinter erschließt sich gerade dem Anfänger erst nach Wochen...
-es gibt DAVE von Infineon als Codegenerator, der kann einen zumindest
beim einstieg helfen.
-Compiler gibts den z.B. kostenlosen sdcc, oder natürlich von keil,
altium etc.
Hi,
Chips gibt es viele die interne CANs haben. Der bereits erwähnte S12 hat
bis zu 5 interne CAN Kanäle. Schau Dir mal der T-Board bei
Elektronikladen.de an. Dazu kommen halt die Transceiver für die
benötigten Kanäle (auf dem S12 Board ist nur einer drauf). Und vom Preis
geht das Ding. Problem ist eher der Debugger und ein Compiler (wobei es
einen GCC dafür gibt).
Die Anforderungen an die Software hören sich zunächst nicht so kritisch
an.
Gruß
Patrick
Bei mir laeuft eine Gateway zwischen meinem zentralen CAN Hausbus -
galvanisch gekoppelte Treiber und einem Stichbus in den Garten, der
Opto-gekoppelt ist, beide mit 100kBps.
Das Gateway selber besteht aus einem AT90CAN128 (kleiner ginge auch
leicht) und einem MCP2515. Der AT90CAN spielt die Rolle des Knotens am
zentralen Bus, der gartenseitige Partner ist ein MCP2515, die beiden
sind mit SPI gekoppelt (alle anderen Knoten am Gartenbus sind AT90CANs.
Die Software, sowohl fuer den AT90CAN als auch fuer den MCP2515 beruht
auf hier im Forum beschriebenen Bibliotheken, die SPI Kopplung ist
trivial.
Der CAN Teil der Software entspricht mehr oder minder dem was hier im
Forum liegt (der AT90CAN Teil genau, der MCP2515 Teil ist weiter
entwickelt), die uebrige Software allerdings so spezifisch fuer meine
Anwendung dass Kopieren wohl muehsamer ist und wenig Sinn macht.
Die Beschreibung meiner Bibiliothek fuer den AT90CAN Teil liegt hier:
http://www.mikrocontroller.net/articles/CAN_Bibiliothek_f%C3%BCr_AT90CAN_Prozessoren.
Am Ende in den Referenzen gibt es auch den Verweis auf die entsprechende
MCP2515 Loesung. Wenn Du willst, kann ich aber mein MCP2515 Modul hier
ins Forum legen, ich habe doch einiges daran (meiner Meinung nach)
verbessert und freundlicher fuer den Einsatz in solch einem Gateway
gemacht (es ist aber ein "quick fix" und nicht, wie die AT90CAN
Bibliothek, in Hinblick auf Verwendung durch andere bereinigt).
Ich habe sowas ähnliches Mal mit Mega32 und 2xMPC2515. Problemlos, auch
bei hohem traffic. Beide an der Hardware-SPI, 2 CS-Leitungen.
Takt 16Mhz, SPI-Clock 8MHz, keine Zeitprobleme.
Die wichtigste Frage, um den Aufwand für die Implementierung abschätzen
zu können und auch vernünftige Tips zu geben ist eigentlich, ob es
reicht das Gateway starr zu programmieren oder ob die ganze Geschichte
flexibel und erweiterbar sein soll.
Sprich: reicht eine gefrickelte Lösung ohne Rücksicht auf Reserven und
Erweiterbarkeit oder soll ein frei konfigurierbares Gateway mit allem
pi-pa-po bei rauskommen.
Wer ist der Kunde? Du selbst, deine Firma oder soll das Ganze verkauft
werden?
Soll das Gateway auf Signalebene arbeiten oder reicht es auf die
Rohdaten zuzugreifen?
Was für ist deine Ausgangsbasis, hast Du z.B. CanDB Dateine für beide
Busse?
Wie viel darf das Ganze Kosten, was soll bei rauskommen... Reicht ein
Eval-Board oder wird ein eigenes Layout gemacht?
Als ersten Tipp würde ich dir die Freescale Prozessoren ans Herz legen,
für deine Zwecke reicht ein S12X. Hat 5 CAN Module onboard und verfügt
sogar über einen zweiten Prozessorkern, der gerne für Gateway Aufgaben
verwendet wird (ist für Anfänger aber vielleicht zu krass). Für den S12
gibt es hier im Forum auch eine CAN library, schau mal in der
Codesammlung nach...
Hall, und herzlichen Dank für die Info.
Ich beschäfftige mich in einer Studienarbeit damit. In der Fa. in der
ich das mache soll das später dann auch eingesetzt und evtl verändert
werden.
- Erweiterbar währe gut, aber vorab nicht notwendig.
- Layout wird selber gemacht, da es später zum Gebrauch in eine Box
soll. AUch die Anschlüsse werden keine CAN-Typischen Sub-d Buchsen sein.
shon alleine deswegen wird etwas selber gebaut werden.
- Ein Testboard würde aber für meine entwicklung auch erstmal genügen,
die Umsetung für den späteren gebrauch ist dann ja nur ein kleinerer
schritt.
- Programmierung über C währe gut.
- Kann auch eine Mark mehr kosten.
Bin halt kein Elktroniker, sondern Physiktechniker, daher muß ich mich
noch bissl mehr einarbeiten.
Evtl. kann mir jemand auch ein entsprechendes Testboard empfehlen.
danke
Ziemlich genau das, was im ersten Beitrag beschreiben wurde, schon mal
gemacht als Prototyp (keine Ahnung was dann weiter daraus geworden ist).
Hardware: http://www.olimex.com/dev/lpc-p2129.html (lustigerweise auch
beim im vorherigen Beitrag genannten Vertrieb im Programm - aber nicht
auf der verlinkten Seite gelistet). Software war gebastelt um den
CAN-Treiber von (seinerzeit noch) Philips:
http://www.standardics.nxp.com/support/documents/ . Die Errata für die
"höheren" CAN-Funktionen beim LPC2129 haben dabei nicht gestört, es
wurde ohnehin jedes Paket empfangen (keine Filter), ausgewertet, evtl.
verändert und an den jeweils anderen Kanal weitergeleitet. Informationen
zur Programmierung von LPC2k in C mit diversen freien und kommerziellen
Tools findet man im Netz. Gibt ein paar aktuellere Controller mit Kernen
von ARM und zwei oder mehr internen CAN-Kanälen, auch von anderen
Herstellern.
Ich kann Dir für dein Vorhaben wärmstens dieses Gerät hier empfehlen:
http://www.eberspaecher.com/servlet/PB/menu/1053219_l1/index.html
Wird optional mit kompletter Entwicklungsumgebung (ANSI C) und vielen
Beispielen geliefert. Noch ein Tip: Wenn du dich für das Gerät
entscheiden solltest, frag auch mal im Support bei denen nach.
Vielleicht haben die ja noch ein fertiges CAN<->CAN Beispiel in der
Schublade.
Oder, wenns etwas größer und schneller sein soll diese feine Gerät hier:
http://www.eberspaecher.com/servlet/PB/menu/1053222_l1/index.html
Das wäre allerdings mit Kanonen auf Spatzen geschossen ;-)
Habe mit beiden Geräten schon gearbeitet und war sehr zufrieden.
Hi!
Habe meine ersten CAN Schritte auf Infineon MCU's und Transceivern
gemacht und hat damals super geklappt. Im 8Bit Bereich haben die
Controller mit 2 Nodes und bis zu 32 Message-Objects, bei 16Bit bis zu
3Nodes und 64 Objects und man findet haufenweise Low-Level Driver und
CAN Routinen im Netz. Meines wissens haben die 16Bitter sogar einen
eingebauten CAN Gateway Controller welcher konfigurierbar ist.
Schau mal auf die Infineon Seite Microcontroller Seite, haben
tonnenweise AP-Notes und Bsp.........ist auch kein Wunder, CAN kommt aus
dem Autobereich und da sind die weltweit führend bzw. haben entsprechend
progessionelle Peripherals in ihren MC's.
Grüße,
AS
Hallo peterguy
Die HCS12 klingen ja ganz gut. haben auch 5 Can^. Jedoch nur einen der
Highspeed fähig ist. Da ich mind 500kBaud brauche und das auf beiden
Seiten.
Ansonsten ist das LPC-P2129 ganz interessant.
zu dem eberspächer Gerät.... klingt ja auch gut soweit. Aber für mich
ist es schon interessanter, wenn ich eine Platine habe, anstatt so eine
fertige Box. Denn im endeffekt muß das ding nachher ja ehh in ein
eigenes gehäuse.
Hat denn sonst noch jemand ein paar Tipps
@Patrick:
Also der Freescale Controller S12XEP100, den ich hier einsetzte, hat 5
Can Module, die meines Wissens nach auch alle Highspeed-fähig sind. Laut
Datenblatt sind bis zu 1MBaud möglich.
Da Du in jedem Fall ein eigenes Gehäuse bauen möchtest, dann könntest Du
auch das Eval-Board mit 2 CANs von Eberspächer nehmen:
http://www.eberspaecher.com/servlet/PB/menu/1053203_l1/index.html
Allerdings ist das primär für FlexRay ausgelegt und es wird
wahrscheinlich günstigere Alternativen geben.
Ich habe z.B. das Eval Board hier von Freescale (mit oben genannter
CPU), kostet unter 100,-€:
http://search.digikey.com/scripts/DkSearch/dksus.dll?Detail&name=DEMO9S12XEP100-ND
Wenn Du jetzt noch auf Lochraster einen zweiten Transceiver lötest, hast
Du deinen zweiten CAN Kanal. Wäre meines Erachtens die günstigste
Methode.