Hallo zusammen, ich habe den XMC4200 (µC) zusammen mit einem HVDA1040AQDSJRQ1 (CAN Transceiver) verschalten. Leider habe ich Probleme bei der Inbetriebnahme des CANs. Teilweise sendet mir der CAN keine Botschaften zurück, oder er funktioniert garnicht. Sobald ich Botschaften auf den Bus schicke passiert entweder nichts oder ich komme in den Bus-Heavy Zustand. Woran kann das liegen? Falls weitere Infos benötigt kann ich diese noch beisteuern. Gruß
Hast du eine Gegenstelle? Ohne Quittungssignal geht der Bus sofort auf Störung. Hast du einen Abschlusswiderstand 220 Ohm? Ohne kommt ebenfalls sofort eine Störung.
Interessante Infos sind noch: Schaltplan, Aufbau, Code, andere Busteilnehmer. Evtl. Oszibilder vom Bus.
Hier die gängigsten Fehler: - Datenrate: CAN braucht eine sehr genaue Datenrate, damit alle Teilnehmer sich verstehen. Ohne jetzt nachgesehen zu haben, meine ich, dass die Toleranz 0.5% beträgt. Ich arbeite normalerweise mit Cypress-Controllern, da funktioniert es nur mit externem Quartz. Die internen Taktgeneratoren sind zu ungenau. Wenn der Takt nicht stimmt, verstehen sich die Busteilnehmer nicht, es kommt zu BUS HEAVY. - Abschlusswiderstand: Der Bus muss einen Widerstand von 120 Ohm zwischen den beiden Datenleitungen CANH und CANL haben. Wenn nicht, kommt es beim Senden des ersten Paketes zu einem Fehler, der nicht mehr weggeht. Mit Multimeter nachmessen bei abgeschaltetem System. - Anderer Teilnehmer: Man braucht mindestens einen weiteren Teilnehmer, der ein Acknowledge-Signal für das gesendete Paket schickt. Dazu muss mindestens die Datenrate stimmen. Ohne einen zweiten Teilnehmer fehlt das ACK, es kommt beim ersten gesendeten Paket sofort eine Busstörung. - Sehr hilfreich für die Inbetriebnahme ist ein CAN-Bus-Tool wie z.B. PCAN-USB von Peak Systems. Das zeigt alle Busdaten an einschließlich Störungen und kann sogar selbst Daten senden. Ansonsten: CANH und CANL verwechselt? Masse der Teilnehmer verbunden? Gleiche Datenrate eingestellt? Richtige Busstruktur bei mehreren Teilnehmern (eine lange Leitung mit nur kurzen Stichleitungen, keine Sternstruktur)?
Bob E. schrieb: > Leider habe ich Probleme bei der Inbetriebnahme des CANs. Hast du ein als "zuverlässig funktionierend" bekanntes CAN-Interface am Bus? > Falls weitere Infos benötigt kann ich diese noch beisteuern Ja, lies mal deine Beschreibung so, als ob du nichts, absolut nichts über deine Schaltung und deinen Testaufbau wüsstest. Welche Informationen würdest du dir noch wünschen? Wären Fotos hilfreich? Oder gar ein Schaltplan? ziege schrieb: > Evtl. Oszibilder vom Bus. Streich das "Evtl." Denn natürlich schaut man sich zuallererst das physikalische Signal auf dem bus an. Denn wenn das nicht passt, dann brauche ich nicht anderswo weitersuchen... BD schrieb: > 120 Ohm natürlich. An beiden Busenden natürlich.
:
Bearbeitet durch Moderator
Bob E. schrieb: > oder ich komme in den Bus-Heavy > Zustand Vielleicht kannst Du für Leute, die jetzt nicht täglich mit CAN kämpfen noch erläutern, was der Bus-Heavy Zustand ist, bzw. was das über den Bus aussagt. Wie lang ist denn der Bus, bzw. wie weit entfernt ist der weiteste Teilnehmer? Je nachdem, wie lang die Laufzeiten sind, musst Du das Fenster für das ACK Signal nach hinten schieben. Sonst bekommst Du es nie mit und landest immer im Fehlerzustand.
Lothar M. schrieb: > Bob E. schrieb: >> Leider habe ich Probleme bei der Inbetriebnahme des CANs. > Hast du ein als "zuverlässig funktionierend" bekanntes CAN-Interface am > Bus? Ja, dieses System hat genauso bereits funktioniert. Evtl ist da aber im laufe des Testens etwas "kaputt" gegangen. Evtl. weil der uC die vom Transceiver ausgehenden 5V nicht schafft. >> Falls weitere Infos benötigt kann ich diese noch beisteuern > Ja, lies mal deine Beschreibung so, als ob du nichts, absolut nichts > über deine Schaltung und deinen Testaufbau wüsstest. Welche > Informationen würdest du dir noch wünschen? Wären Fotos hilfreich? Oder > gar ein Schaltplan? Anbei die Schaltung des CAN.
Bob E. schrieb: > Anbei die Schaltung des CAN. Wenn du das Teil so standalone betreibst wie in diesem Schaltplan, dann ist es kein Wunder, dass du Fehler bekommst. Du brauchst einen zweiten Teilnehmer. Und sieh dir unbedingt die Grundlagen zum CAN-Bus an... > Anbei die Schaltung des CAN. Wenn sich nicht schon die Begriffe CANH und CANL weltweit durchgesetzt hätten, dann müsste man glatt die Namen CAN_P und CAN_N oder beliebige andere Bezeichner erfinden.
:
Bearbeitet durch Moderator
Lothar M. schrieb: > Bob E. schrieb: >> Anbei die Schaltung des CAN. > Wenn du das Teil so standalone betreibst wie in diesem Schaltplan, dann > ist es kein Wunder, dass du Fehler bekommst. Du brauchst einen zweiten > Teilnehmer. Und sieh dir unbedingt die Grundlagen zum CAN-Bus an... Wiegesagt es ist noch ein XMC4200 verbaut. Und logischerweise schaue ich mit einem CAN-Bus Tool auf den CAN und kann so einen zweiten Teilnehmer simulieren.. >> Anbei die Schaltung des CAN. > Wenn sich nicht schon die Begriffe CANH und CANL weltweit durchgesetzt > hätten, dann müsste man glatt die Namen CAN_P und CAN_N oder beliebige > andere Bezeichner erfinden. ?
Bob E. schrieb: > Und logischerweise schaue ich mit einem CAN-Bus Tool auf den CAN und > kann so einen zweiten Teilnehmer simulieren.. Und logischerweise ist es dann für uns auch nicht schwer zu erraten, welches CAN-Bus-Tool das ist und wie es auf den Zustand "Bus-Heavy" kommt. Denn ein "Bus-Heavy" ist bei CAN nicht definiert, das muss also was sein, was der unbaknnte Hersteller des unbekannten Tools selber definiert hat: https://www.google.com/search?q=can+bus+error+states Da waren noch ein paar Fragen offen zur Gesamtschaltung offen. Wie holprig kann sich die Mithilfe des Fragenstellers bei der Problemsuche eigentlich gestalten? Oder andersrum: du hast ein Problem mit einer Schaltung. Und nur du hast diese fehlerhafte Schaltung vor dir. Und nur du siehst die Fehler. Wie soll dir da wer helfen, wenn du diese Informationen nicht von dir aus weitergibst? Bob E. schrieb: >> Wenn sich nicht schon die Begriffe CANH und CANL weltweit durchgesetzt >> hätten, dann müsste man glatt die Namen CAN_P und CAN_N oder beliebige >> andere Bezeichner erfinden. > ? Denk nochmal drüber nach. Du kommst schon irgendwann drauf, dass es eine schlechte Idee ist, weltweit unter anderem Namen bekannten Signalen eigene neue Namen zu geben. Irgendwann.
:
Bearbeitet durch Moderator
Lothar M. schrieb: > Bob E. schrieb: >>> Wenn sich nicht schon die Begriffe CANH und CANL weltweit durchgesetzt >>> hätten, dann müsste man glatt die Namen CAN_P und CAN_N oder beliebige >>> andere Bezeichner erfinden. >> ? > Denk nochmal drüber nach. Du kommst schon irgendwann drauf, dass es eine > schlechte Idee ist, weltweit unter anderem Namen bekannten Signalen > eigene neue Namen zu geben. Irgendwann. Vielleicht wirst du auch irgendwann verstehen, dass der Name hier keine Rolle spielt. Der Name wird wohl kaum das Problem sein oder? Abgesehen davon muss ich die Leitungen im Altium Designer mit "_P" und "_N" enden lassen um diese dann differentiell verlegen zu können. Denk nochmal drüber nach. Du kommst schon irgendwann drauf, dass klugscheißen nicht immer gut ist. Irgendwann
Bob E. schrieb: > Vielleicht wirst du auch irgendwann verstehen, dass der Name hier keine > Rolle spielt. Der Name wird wohl kaum das Problem sein oder? Nein, ist er nicht. Warum hängst du dich daran auf? > Denk nochmal drüber nach. Du kommst schon irgendwann drauf, dass > klugscheißen nicht immer gut ist. Irgendwann Schönen Tag noch. Möge dir dein Problem lange und vielfältige Freude machen.
:
Bearbeitet durch Moderator
Bob E. schrieb: > Evtl. weil der uC die vom Transceiver ausgehenden 5V nicht schafft. Ja, das hatten wir doch letzte Woche: Beitrag "5V CAN Controller und 3.3V uC" Ist das denn jetzt gelöst? Wie sieht die Lösung aus? Status-Register und Error-Register des XMC auslesen und ausgeben. Ansonsten schließe ich mich den Kollegen an: Dein Post ist kaum verständlich. Wer geht denn überhaupt in den Error Mode, der XMC oder die Gegenstelle? Und warum ist diese geheim? Mal das Multimeter gegen Masse an beide CAN-Leitungen gehalten?
BD schrieb: > Hast du einen Abschlusswiderstand 220 Ohm? Es müssen 120Ohm an jedem der beiden Busenden sein.
ziege schrieb: > Der XMC4200 hat als Maximalspannung für IO-Pins 4.3V angegeben. Ja, und der SN65HVDA1040 hat als typische Ausgangsspannung an RXD 4.6V angegeben. Im Nebenthread wurden ja schon Lösungsvorschläge gemacht. Vielleicht ist ja der XMC4200-Port schon beschädigt und führt jetzt zu den geschilderten Problemen? Zusätzlich zur analogen Beobachtung des CAN-Busses benutze ich oft einen rohen Transceiver mit einem Logikanalysator an dessen RXD. Vielleicht hilft dir das bei der Fehlersuche. LG, Sebastian
:
Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.