Forum: Mikrocontroller und Digitale Elektronik Kommunikation auf LIN-Bus über UART


von Johannes (Gast)


Lesenswert?

Hallo!

Hat hier jemand Erfahrung damit Daten per UART vom LIN-Bus auszulesen 
bzw. auf den LIN-Bus zu schreiben?
Mich würde interessieren wie ihr das Empfangen der Daten umgesetzt habt? 
Switcht ihr da zwischen verschiedenen Baudraten hin und her? Denn die 
LIN-Botschaften sind ja nicht völlig UART-konform...

Danke im voraus,
Johannes

von chris (Gast)


Lesenswert?

Eigentlich doch, sollte die Schnittstelle einen hw-Break unterstützten.

von Johannes (Gast)


Lesenswert?

Leider nicht, hw-break wird nicht unterstützt. Also der Syncbreak ist 
realisiert durch das Switchen auf eine niedrigere Baudrate. Aber wie 
behandele ich das ganze in Empfangsrichtung am besten?

von Bensch (Gast)


Lesenswert?

Dann nimm ne UART, die das kann.

von MichiB (Gast)


Lesenswert?

Hi,

dafür gibt es Transceiver-Bausteine

z.B. MCP2021

von Bensch (Gast)


Lesenswert?

> dafür gibt es Transceiver-Bausteine

Die machen aber kein Break-Commando, das muss die UART können.

von Johannes (Gast)


Lesenswert?

Ja ... also ein LIN-Tranceiver habe ich natürlich, aber der ist ja kaum 
mehr als ein "dummer" Verstärker...
Also die Frage ist, wie ich die LIN-Botschaften am besten empfangen kann 
wenn ich nur eine Standard-UART am µC habe.
Kann mir da jemand Tipps geben, bzw. hat das schonmal jemand gemacht?

Danke im voraus!
Johannes

von MichiB (Gast)


Lesenswert?

Hi,

schau mal bei Microchip nach App-Notes zu diesem Thema,
die haben da einiges.

von chris (Gast)


Lesenswert?

Der Standart-Uart kann einen Break (hw-uart, kein billiger usb-dongle).

von Bruno (Gast)


Lesenswert?

Atmel hat da auch was. Auf der HP nach AVR140 und AVR308 suchen.

von marcel (Gast)


Lesenswert?

Bei einem Slave kann man den Sync-Break per Framing Error detektieren. 
Beim Master muss man die Baudrate halbieren (oder 14400).

von Johannes (Gast)


Lesenswert?

Danke schonmal für die Antworten!
@Chris: Bei welchem Ereignis sollte ich denn die Baudrate ändern? Also 
woher weiß ich wann ich die Baudrate ändern soll...?

von Bensch (Gast)


Lesenswert?

> Beim Master muss man die Baudrate halbieren (oder 14400).

Blödsinn. Gib der UART das Break-Commando und gut is.

von Bruno (Gast)


Lesenswert?

Ich stehe gerade vor dem gleichen Problem.
Meine Vorgehensweise wollte ich in etwa so machen.
Frame error der UART sollte meinen synck-break erkennen.
Im Vorfeld UART auf den externen Interrupt legen und die Pulslänge vom 
synch-field ausmessen.
UART stoppen und dann mit neu berechnetem Wert initialisieren. Mann kann 
das auch über die Frequenz vom internen Oszil. machen. Natürlich nur 
wenn man den verwendet. Was bei mir aber nicht der Fall ist.

von marcel (Gast)


Lesenswert?

Weil auch jede UART das Break-Commando besitzt.

von Johannes (Gast)


Lesenswert?

Ja, also wie gesagt, ich habe auch kein Break-Kommando zu Verfügung ...
@Bruno: Wäre nett, wenn du dich bei mir mal melden könntest! Vielleicht 
kann man sich dann mal austauschen...
Du kannst mich erreichen unter: joohaannes ät googlemail.com

von Bruno (Gast)


Lesenswert?

Werde ich machen. Habe einen Kontakt bei Atmel den ich mal über die 
genaue Vorgehensweise ausquetschen werde. Leider habe ich ihn 
telephonisch nicht erreicht. Wird diese Woche auch nichts mehr werden. 
Wenn das der Fall ist melde ich mich aber. Habe mir auch überlegt das 
SBF über den externen Timer zu erkennen. Timerstart bei der ersten 
fallenden Flanke und bei der ersten steigenden Flanke wieder Triggern. 
Wenn der Timer einen bestimmten Wert überschritten hat war es das Break.

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
Noch kein Account? Hier anmelden.