CAn Bus und TMS320F2812

Gast #204518
Hallo,
meine Can-Bus Kommunikation hat zwischen dem TMS320F2812 uhatte
funktioniert. Nun musste ich noch einen Busteinehmer hinzufügen, der
nur mit Standard Protokoll (11-Bit Identifier) arbeitet. Ich habe dann
alle Bus-Teinehmer auf Standard Protokoll umgestellt. Trotzdem kann
der
TMS320F2812 nun keine Daten mehr empfangen. (Baud-Rate und ID sind
natürlich auch richtig eingestellt)
Muss ich noch was umstellen oder was könnte der Grund für dieses
Fehlverhalten sein?
danke
Gruss
Samuel
Gast
Hallo samuel,

Ich hab' leider keine Ahnung wie Dein Problem zu lösen ist.

Aber ich habe eine Frage zum CAN stack. Hast Du den selber programmiert
oder hast da eine library gefunden. Ich hab' nen CANopen
Mikrocontrollerprogramm basierend auf einen CANopen library
programmiert. Für zukünftige Projekte möchte ich auf DSPs von TI
umsatteln.

Sorry für die Gegenfrage,
bluemole
Gast
Hallo,
ich hab leider deine Frage nicht ganz verstanden. Versteh ich es
richtig, dass du die Eingangsdaten die am Can Bus ankommen, puffern
willst?
gruss
Samuel
Gast
Hallo,

ich meinte nur, ob du eine "normale" CAN Kommunikation oder eine
CANopen Kommunikation programmiert hast. Im falle einer CANopen
Kommunikation würde mehr wirklich sehr interessieren, ob Du die
Funktionen für das CANopen Kommunikationsprotokoll selbst programmiert
hast oder ob Du eine Library dafür gefunden hast.

MfG bluemole
Gast
Hallo, bin auch grad an CAN Bus dran.

Hast denn den Bus mit Abschlußwiderständen richtig terminiert? Könnte
ein Problem sein wenn du ein 3. Gerät anstöpselst.
Stimmen denn die Buspegel?
Gast
Ich versuche mich gerade etwas in CAN einzuarbeiten. Das mit dem
Identifier ist mir in soweit klar, dass in Abhängigkeit der Nummer die
Priorität gesetzt ist. Was mir unklar ist, wie diese gesetzt wird. Ich
habe auch irgendwo gelesen, dass es keine Addressierung gibt sondern
die Knoten Namen haben. Sprich ASCII. Kann mir da jemand etwas mehr
Klarheit geben??

Danke
Gast
Hallo Ralf,

ich glaube du hast das Prinzip der Kommunikation auf dem CAN Bus noch
nicht verstanden. Ein Knoten hat keinen Namen, sondern er lauscht die
ganze Zeit auf dem Bus, wertet alle ankommenden Id's aus und wenn die
richtige dabei ist fischt er sie raus und schreibt sie in seinen Puffer
(bei full CAN).
Der CAN Bus ist ein Nachrichtenbasierter Bus und ist Multimasterfähig.
D.h. das Jede Nachricht eine ID bekommt und jeder Busteilnehmer Daten
auf den Bus legen kann ohne vorher bei einem Master um erlaubnis zu
fragen. Die Datenkollisionserkennung erledigt dabei der CAN Controller
selbstständig. Das nennt sich dann Arbitrierung. Bei diesem Vorgang
wird auch auf die Priorität der Nachricht geachtet, wie du schon
richtig beobachtet hast.

Viel Spass noch mit CAN.

Tipp: Bei Wikipedia gibt es eine kurze einführung in CAN

Gruß Rainer
Gast
stimmt, ich blicke noch nicht ganz durch.

ok, dass jeder einem eine Nachricht schicken kann sobald es für ihn ist
ist mir klar.

was mir noch nicht klar ist ist können mehere can-schreiber oder
empfänger die gleiche id sprich priorität haben? wenn ja kann es doch
zu problemen kommen und wie weis man ob die nachricht auch angekommen
ist?

wei weis ein Controller ob die nachricht für ihn ist. Sprich gibt es
ausser der id noch ein anders merkmal. sprich woher weis der controller
an welchen Baustein hinter agesprochen werden soll um dort zum beispiel
ein Datum zu schicken oder was anzusteuern?
Gast
Hy,

ja, es können mehrere CAN Teilnehmer die gleiche ID versenden. Wenn
dies auch noch zur gleichen zeit geschieht, wird dies mit der
Arbitrierung gelöst, in diesem falle gewinnt der erste. Wenn die
Nachricht dann losgeschickt worden ist und ein Teilnehmer der meinung
ist das die Nachricht für ihn bestimmt ist, empfängt er diese und
schickt ein Bit "Nachricht vollständig empfangen".
Damit ein Controller weis welche Nachrichten er empfangen soll muss
natürlich der CAN Buffer initialisiert werden. Hier steht dann drin
welche id / ID-Gruppe er empfangen soll, welchs Nachrichtenformat
(Extended Identifier), Daten Länge...
Des weiteren besteht bei CAN die möglichkeit der Anforderung einer
Botschaft.
Auf dem CAN werden normalerweise die Botschaften zyklisch versendet,
d.h. immer in einem festen vorher definierten Zeitraster. Dies
verringert den aufwand erst einmal nach daten fragen zu müssen.

Viel Spass noch mit CAN

Gruß
Gast
> es können mehrere CAN Teilnehmer die gleiche ID versenden. Wenn
> dies auch noch zur gleichen zeit geschieht, wird dies mit der
> Arbitrierung gelöst, in diesem falle gewinnt der erste.
Naja, wenn die (CAN-)ID gleich ist, dann kann das Problem nicht durch
die Arbitrierung gelöst werden! Erst der Datenteil der CAN-Nachricht
unterscheidet sich dann und das führt zu einem Busfehler (da nur die
CAN-ID zur Arbitrierung verwendet wird). Die Nachricht wird verworfen
und muss erneut gesendet werden. Wenn jetzt beide Sender wieder die
gleiche Botschaft schicken, krachts erneut... solange, bis beide im
passiven Modus sind (bus-passive).

Gleichzeitig mehrfaches Versenden der gleichen CAN-ID sollte man
unbedingt vermeiden, z.B. indem man jede ID nur einmal vergibt.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 21 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.