LIN-Bus mit Arduino

OP #5532640
Lesenswert?
• ▲
▼
Hallo zusammen,

ich versuche gerade einen Automotive Sensor mittels LIN-Bus und einem 
Arduino nano auszulesen.

Als Tranciever kommt ein MCP2004 zum Einsatz welcher an der 
Hardware-Uart vom Arduino hängt und als Master arbeitet.

Der Sensor antwortet auf meine Anfrage, jedoch passt die empfangene 
Antwort im Uart Einganspuffer irgendwie nicht.

Ich sende ein LIN-Bus Start-Bit, eine 0x55 als Sync Byte gefolgt von 
einem Identifier Byte. Als Antwort erwarte ich ein Byte vom Slave, im 
Einganspuffer vom Arduino befinden sich jedoch zwei Byte.

Ich habe zwei Scopes, einmal mit angeschlossenem Slave und Response, 
einmal ohne Slave und entsprechend ohne Response.

Irgendwie komme ich mit dem Flanken interpretieren nicht weiter, kann 
mir jemand sagen was da als Response gesendet wird?

Im Uart Einganspuffer befinden sich 4 Byte, die zwei vom Master 
gesendeten plus zwei empfangene: 0x55, E7, C0, 57
Angehängte Dateien:
Gast #5532860
Lesenswert?
• ▲
▼
Paperlapap. Fast Jeder macht Lin mit einem Uart. Man muss halt in der 
Software darauf gefasst sein, dass Alles, was man sendet umgehend auch 
empfangen wird. Schwieriger ist da schon die Erzeugung des Sync-Break. 
Aber das hat der Fragesteller ja schon längst gemeistert.
Was ihn verwirt ist wohl die Prüfsumme der Lin-Botschaft, die hinter den 
Nutzdaten noch kommt.
Gast #5533902
Lesenswert?
• ▲
▼
Rudolph schrieb:
> H.Joachim S. schrieb:
>> Beim Lin wird bitweise zurückgelesen und mit dem verglichen, was
>> eigentlich gesendet wurde (Kollisionserkennung, ähnlich wie beim CAN).
>
> Welche Kollisionserkennung? CAN ist Multi-Master, LIN ist Master/Device.
> Senden zwei gibt es eben Error-Frames über die Checksumme.

Die kann er doch selbst machen, sofern er Hardware-UART nimmt! Einfach 
schauen was beim Senden empfangen wurde. Ist da der Stream falsch -Y 
Kollision
Gast #5533969
Lesenswert?
• ▲
▼
Alex W. schrieb:
>> Welche Kollisionserkennung? CAN ist Multi-Master, LIN ist Master/Device.
>> Senden zwei gibt es eben Error-Frames über die Checksumme.
>
> Die kann er doch selbst machen, sofern er Hardware-UART nimmt! Einfach
> schauen was beim Senden empfangen wurde. Ist da der Stream falsch -Y
> Kollision

Wofür? LIN hat keine.
#5534080
Lesenswert?
• ▲
▼
P:S. schrieb:
> Kollisionen können bei Verwendung von Event Triggered Frames auftreten.

Schön. Und?
Es ging nicht darum, dass keine Kollisionen auftreten können, sondern 
das LIN keine Kollisionserkennung auf Bit-Ebene hat.

In dem Sonderfall passt doch auch bestenfalls die Checksumme nicht. Wenn 
die doch passen würde bekäme der Master die Kollision nicht mal mit und 
würde somit mindestens eins von zwei Events verlieren.

Antwort schreiben

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.

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.