mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik CAN Transceiver nötig?


Autor: Student09 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo ich habe 2 Starterkits von TI und möchte mich im Rahmen einer 
Studienarbeit mit CAN beschäftigen.Meine Frage ist brauch ich umbedingt 
einen CAN Transceiver den ich zwischen beide schalte?Oder kann ich auch 
so eine Kommunikation aufbauen, da beide ja genau nebeneinander stehen?

Autor: lalala (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Man kann beide auch direkt verbinden, hat jedenfalls bei meinen C167 
funktioniert

Autor: H.Joachim Seifert (crazyhorse)
Datum:

Bewertung
-2 lesenswert
nicht lesenswert
Glaub ich nicht..., der Sender erwartet u.a. sein eigenes Sendesignal an 
Rx.
Was funktioniert:
-Alle Rx zusammen, pullup nach Vcc
-alle Tx über eine je Diode an die Busleitung.

Autor: Lukas Dinauer (lukdi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich bin in einer ähnlichen Situation. Ich weiß das es auch ohne geht! So 
kann man ihn bei On-Board-Komunikation auf jeden Fall weg lassen! Was 
mir jedoch nicht bekannt ist, ist ab wann ein Transceiver verwendet 
werden sollte?! Also ab welcher Leitungslänge? Hast hierzu jemand Infos? 
Wäre stark!

Grüße,

Lukas

Autor: H.Joachim Seifert (crazyhorse)
Datum:

Bewertung
-3 lesenswert
nicht lesenswert
Würde mich mal interessieren, wie eine Direktverbindung funktionieren 
sollte.

Autor: soul eye (souleye)
Datum:
Angehängte Dateien:

Bewertung
1 lesenswert
nicht lesenswert
H.Joachim S. schrieb:

> Würde mich mal interessieren, wie eine Direktverbindung funktionieren
> sollte.

1) Alle RxD verbinden
2) von RxD einen 1k-Widerstand nach VDD schalten
3) an jedem Teilnehmer TxD über eine Diode mit RxD verbinden. Kathode zu 
TxD, Anode zu RxD (so dass TxD den Bus nach low ziehen kann).

Maximale Leitungslänge mit diesem Aufbau: ca 50 cm.

Autor: H.Joachim Seifert (crazyhorse)
Datum:

Bewertung
-5 lesenswert
nicht lesenswert
Das stand schon oben :-)
Direktverbindung heisst für mich: ohne weitere Bauteile.

Autor: Ulf L. (ulf_l)
Datum:

Bewertung
3 lesenswert
nicht lesenswert
H.Joachim S. schrieb:
> Direktverbindung heisst für mich: ohne weitere Bauteile.

Und genau das geht nicht.

Autor: Karls Quell (karlsquell)
Datum:

Bewertung
2 lesenswert
nicht lesenswert
Vielleicht steht ja hier in der appnote von Siemens was drin:

https://www.mikrocontroller.net/attachment/28831/s...

Autor: Christopher Johnson (christopher_j23)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ulf L. schrieb:
> H.Joachim S. schrieb:
>> Direktverbindung heisst für mich: ohne weitere Bauteile.
>
> Und genau das geht nicht.

Warum sollte es für zwei Geräte nicht gehen?

Autor: Tobias Korrmann (kurzschluss81)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ganz sauber ist es generell ohne Transceiver nicht. Der CAN Hört beim 
Senden auch die Empfangsleitung ab um zu lauschen ob es eine Kollision 
gibt. Beim CAN Wird auf dem Bus das Differenz Signal aus der Summe von 
RX und TX Signal übertragen. Und  genau das bekommt ihr ohne Transceiver 
nicht hin. Egal ob nur zwei oder mehr Teilnehmer angeschlossen sind.
Schaut mal nach RS485 dort das ist die selbe Physikalische übertragung.

Autor: soul eye (souleye)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Christopher J. schrieb:

> Warum sollte es für zwei Geräte nicht gehen?

Bei TTL oder NMOS geht es, bei CMOS nicht. Erstere treiben ihre Ausgänge 
per Transistor nach Masse und per Widerstand (bzw Stromquelle nach 
Plus), letzere haben Gegentakt-Endstufen.

Mit NMOS-Ausgängen hängst Du alle vier Leitungen (2x RxD, 2x TxD) 
zusammen, und sobald einer einen Low-Pegel ausgibt, ist halt low. Diesen 
Betriebszustand wird Dir kein Hersteller freigeben, in der Praxis 
funktioniert es aber.

Bei CMOS-Ausgängen würde es einen Kurzschluß geben zwischen dem 
Controller, dessen TxD den oberen Transistor eingeschaltet hat (für 
High) und dem der Low ausgibt. Daher muss man sich hier die open 
collector (bzw open drain)-Konfiguration mit Dioden und Pullup basteln.



RxD und TxD kreuzweise verdrahten (wie bei UART) geht in der Tat nicht, 
da der Controller sich beim Senden zuhören muss.

Autor: Gerd E. (robberknight)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Tobias K. schrieb:
> Schaut mal nach RS485 dort das ist die selbe Physikalische übertragung.

Nein. RS485 hat Push-Pull-Ausgangsstufen um das Differenzsignal zu 
übertragen. Wenn 2 Teilnehmer gleichzeitig senden, gibt es einen 
Kurzschluss.

Bei CAN wird nur in eine Richtung aktiv getrieben. Daher gibt es bei CAN 
keinen Kurzschluss wenn 2 Teilnehmer gleichzeitig senden. Der 
Teilnehmer, der das rezessive Signal senden möchte, erkennt, daß auf dem 
Bus das dominante anliegt und schaltet sich auf stumm bis die Nachricht 
mit der höheren Priorität durch ist.

Autor: Christopher Johnson (christopher_j23)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
soul e. schrieb:
> RxD und TxD kreuzweise verdrahten (wie bei UART) geht in der Tat nicht,
> da der Controller sich beim Senden zuhören muss.

Da hatte ich einen Denkfehler, weil ich erst dachte, das genau das ginge 
aber geht natürlich nicht.

soul e. schrieb:
> Mit NMOS-Ausgängen hängst Du alle vier Leitungen (2x RxD, 2x TxD)
> zusammen, und sobald einer einen Low-Pegel ausgibt, ist halt low. Diesen
> Betriebszustand wird Dir kein Hersteller freigeben, in der Praxis
> funktioniert es aber.

Das wiederum entspricht aber doch prinzipiell genau der Diodenveroderung 
aus der Appnote von Siemens, die Karls Quell gepostet hatte oder liege 
ich da falsch? Das sollte dann doch auch möglich sein, wenn der CAN-TX 
als Open-Drain Ausgang mit internem Pullup konfiguriert ist und der 
CAN-RX als Eingang und einfach alles an eine Strippe gehängt wird. Das 
wäre dann gewissermaßen die Siemens-Appnote mit "internen Bauteilen" und 
sollte dann ja sogar auch mit mehr als zwei Teilnehmern funktionieren.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.