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
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
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)?
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?
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
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
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?
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.
"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. :-)
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.