UART Protokoll

Gast #126475
Lesenswert?
• ▲
▼
Hallo Oli,

Eine RS232 in Software zu emulieren ist eine recht zeitkritische Sache.
Und ein Protokoll ist in der Spec. der RS232 nicht vorgegeben. Die Spec.
beschreibt lediglich die Hardware. Aber ich glaube, das ist auch gar
nicht das, was Du wirklich willst.

Vielleicht beschreibst Du die Aufgabe nochmal etwas genauer:
Was hast Du? PC, Mikrocontroller, oder was?

Was willst Du damit ansteuern? Modem, Kartenleser, anderen PC oder µC?

Gruß,

Markus_8051
Gast #126476
Lesenswert?
• ▲
▼
Da gibt es kein "Protokoll", es sei denn, du definierst dir eins.
Schnapp dir mal das Datenblatt eines beliebigen MC mit USART und lies
dir den entsprechenden Abschnitt durch, dort steht alles prima
beschrieben drin (zumindest bei den ATMegas). Von welcher Seite aus
willst du ihn ansteuern (PC oder MC)?
Gast #126477
Lesenswert?
• ▲
▼
Ich möchte einen UART empfänger in einem FPGA implementieren. Dazu
brauche ich die genauen Spezifikationen. Sollte bei RS232 nicht das
Startbit gleich lang sein wie alle anderen? und ist danach ein high
impuls vorgeschrieben?
Gast #126478
Lesenswert?
• ▲
▼
Aha, da kommen wir der Sache doch schon näher. Hast Du hier im
programmierbare Logik Forum schon nach FPGA und UART gesucht?

Ansonsten:
1) Bei der seriellen asynchronen Übertragung sind alle Bits gleich
lang, sonst funktioniert es nicht, und zwar genau so lang, wie es die
Baudrate vorgibt (zur Info: die Einheit Baud bedeutet bit pro Sekunde)

2) Nach dem Startbit ist kein highimpuls vorgeschrieben. Die Begriffe
high und low sind hier auch sehr unglücklich gewählt. Laut RS232-Spec.
entspricht eine logische 1 nämlich -12 Volt und eine logische 0 +12
Volt. Ein Pegelwandler (z.B.:MAX232 von Maxim) kann das in
(FPGA-freundlichen) TTL-Pegel umsetzen (-12 -> +5, +12 -> 0)

3) Sprich, Du wartest zunächst auf die erste Flanke, und samplest dann
immer in der Mitte der Taktfenster die Datenleitung. Zwischendurch
auftretende Flanken (bei einer 255 kommen davon aber nicht so viele)
kannst Du zur Synchronisation verwenden.
Zum Schluß noch evtl. das Parity und Stopbit auswerten und wieder von
vorn anfangen.

Viel Erfolg,

Markus_8051
Gast #126479
Lesenswert?
• ▲
▼
ok, da kein highimpuls vorgeschrieben ist (schade eigentlich) kann ich
das startbit also nicht zur baudratenerkennugn verwenden. Ich hatte
nämlich vor die Baudrate a nder lägne des startbits zu erkennen.

gruss Oli
Gast #126480
Lesenswert?
• ▲
▼
Bei asynchronen seriellen Schnittstellen ist eine automatische
Baudratenerkennung nur möglich, wenn dazu ein definiertes Bitmuster
gesendet wird - da kann man sich natürlich nicht drauf verlassen.

Ein Beispiel dafür sind die berühmten "AT"-Befehle des
Hayes-Modem-Befehlssatzes; hier werden auch noch Wortlänge und Parity
ermittelt.

Übliche UARTs verwenden übrigens zum Abtasten oft den 16fachen Bittakt
...

Wenn Du das Rad nicht neu erfinden willst, kannst Du ja mal nachsehen,
ob es von einem der folgenden ICs auch eine VHDL-Implementierung gibt:
Motorola 6850 (simpel, externer Taktteiler erforderlich)
Rockwell 6551 (programmierbarer Baudratengenerator)
Intel (und andere) 8250 (der Urvater aller PC-Schnittstellen)
National (und andere) 16550 (dasselbe in neuer mit
Sende/Empfangsfifos)
Exar 68681 (mal was für Freunde der 68K-Prozessoren)

(die Liste ließe sich fortsetzen)

Wenn Du das Rad neu erfinden willst: Warum? Akademischer Lustgewinn?
Gast #126481
Lesenswert?
• ▲
▼
Im übrigen halte ich es für durchaus korrekt, von einem Protokoll zu
sprechen. Ein Low-Level-Protokoll, klar, aber auch ein Rahmen für eine
Bitfolge (Startbit, LSB first, Stopbits, Parity Bits) ist ein
Protokoll. Daß man auf diesem Protokoll noch ein anderes implementiert
und darüber evtl. noch ein paar, ändert nichts daran, daß es sich auch
hier um ein Protokoll handelt.
Gast #126482
Lesenswert?
• ▲
▼
"Startbit, LSB first, Stopbits, Parity Bits" sind aber nicht
definiert. Wenn Du meinst, daß RS-232 ein fest definiertes Protokoll
nicht implementiert, könntest Du richtig liegen, aber dann ist es
genauso sinnvoll zu sagen, daß ein Stückchen Punschtorte nicht die
genauen Spezifikationen eines 74HC164 erfüllt.

Wenn Du die schlichten Aussagen, daß es Drähte gibt, auf denen +12 oder
-12 Volt anliegen (nichtmal das, sind ja recht große Bereiche, afaik 3 -
12 oder sogar nach oben hin mehr?), und das eine Space und das andere
Mark entspricht, auch Protokoll nennen willst, dann hast Du recht, dann
gibt es ein RS-232 Protokoll.

Die Mehrheit der Leute sagen allerdings einstimmig, daß es kein
Protokoll für RS-232 gibt, sondern es sich nur um eine Spezifikation
handelt. Ich halte mich da besser raus. :-)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren