mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik UART RS232 LIN-BUS mit XC161


Autor: HansWurst (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen.


Ich habe vor, mit meinem XC161 einen CAN / LIN Gateway aufzubauen.

Von Software Seite her liegt hier nicht das Problem.

Zur Hardware:

Weiss jemand, ob man die LIN Schnittstelle direkt mit der RS232 
Schnittstelle betreiben kann ? Oder ob man stattdessen bzw. zusätzlich 
(ich benutze ein fertiges Board mit RS232 Umsetzer) einen LIN 
Transceiver braucht. Wenn ja, wie und wo schliesse ich ihn an.

mfg

HansWurst

Autor: Andreas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo ich bin auch gerade dabei einen LIN treiber zu schreiben für 
ATmega's

Also ich habe schon erfahrungen weil ich das auch in meinem Job mache 
LIn und CAN.

Prinzipiell geht dass schon mit der seriellen Schnittstelle
aber du brauchst auf jeden Fall einen Transceiver TJA1020 z.B.
Das Uart Data Format: 1 Startbit, 1 Stopbit und 8 Datenbits,
Baudraten sind mit 2400,9600 und 19200 spezifiziert.

zuerst mal das LIN - Protokoll sieht so aus:

Master wird Receiver der Uart abgeschalten und Transceiver 
eingeschalten.
der Master sendet ein Break ( 13 bit low und 1-4 bit hi "
danach das sync field ( 0x55 )
danach das ID Field ( ID , DLC , Art der Parität)
nun wird der Tranceiver der Uart abgeschalten und der receiver 
eingeschlaten, weil ab jetzt der Slave seine Daten sendet.

zum schluss werden die Daten noch mit der CHK-SUM geprüft.

Nun das kniffelige:
eine normale Uart kann kein Break senden wegen der insgesamt 14-17 bits
dass musst du anders lösen ich habe dass so gemacht indem ich den UART 
deaktiviere und dann mit einem Timer den Tx Pin als I/O so steuere dass 
dass Break gesendet wird. Danach wird der Uart wieder eingeschalten.
dann gehts weiter mit Sync, Id usw.

Ausserdem gibt es eine Kommunikationstabelle:

was ich oben im Protokoll beschrieben habe gilt für einen Frame.
Jeder Frame gehört quasi zu einem Steuergerät.

eine solche Tabelle hat im Grunde 2 Spalten und x Zeilen ( X = Anzahl 
Frames bzw. Steuergeräte/ Sensoren) In den Spalten stehen dann die Delay 
zeiten zwischen den Frames und der eigentliche Frame mit ID.

Dann gibt es eine tick Funktion die z.B jede ms aufgerufen wird. In ihr 
wird entschieden oder das delay eines Frames erreicht ist. Wenn ja dann 
Frame senden und in der Tabelle in die nächste zeile springen und wieder 
bis zum nächsten delay höchzählen

Autor: Andreas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
PS. der LIN Tranceiver wird an RxD TxD und einen I/O PIN zum enablen 
angeschlossen

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
*abo

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Andreas,

  Was meinst Du mit Receiver aus- und Transceiver einschalten? Ich war 
der Meinung es gibt ein Receiver und ein Transmitter. Und ein 
Transceiver ist das Kunstwort für beides zusammen. Oder habe ich da was 
falsch verstanden.

Gruss, Stefan

Autor: Napni (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ein Transceiver ist das Kunstwort für beides zusammen.

Grüße, Napni

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.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

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