www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik UART Protokoll


Autor: Oliver Bründler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kann mir Jemand ein Protokoll oder eine Pszifikation der UART (RS 232)
Schnittstelle besorgen? ICh möchte nämlich eine Ansteuerung dafür
selbst programmieren.

Gruss Oli

Autor: Markus_8051 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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)?

Autor: Oliver Bründler (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Markus_8051 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Oliver Bründler (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Rufus T. Firefly (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Philipp Sªsse (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Zotteljedi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

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.