Forum: Mikrocontroller und Digitale Elektronik RS232 synchron


von Klaus (Gast)


Lesenswert?

Hallo,

zum Übertragen größerer Datenmengen will ich eine synchrone 115,2kBaud
Verbindung vom einem MC zum PC mittels RS232 hinbekommen.
USB oder asynchrone Übertragung kommt leider nicht in Frage.

Wer hat schon mal mit dem synchronen Modus gearbeitet und kann mir
darüber berichten?

Zum Beispiel würde ich gerne wissen, wer Master, bzw Slave sein muss
und damit den Takt zur Verfügung stellt. Wie teile ich dem PC mit, dass
er zu einem bestimmten Zeitpunkt Daten einlesen soll ( Evtl. als Master
den Takt starten, oder aber per Hardware-Handshake?)?

Danke für eure Antworten

Klaus

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Die serielle Schnittstelle des PC ist eine asynchrone, eine synchrone
Betriebsart unterstützt die Hardware des PCs (8250, 16450, 16550 etc.)
nicht.

Was spricht gegen die asynchrone Betriebart? Die zehn Bits pro Byte,
die die Nutzdatenrate auf 11,520 Byte/sec "reduzieren"?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Nachtrag:

  11,520 Byte/sec

soll natürlich

  11520 Byte/sec

heißen.

von Klaus (Gast)


Lesenswert?

Danke erstmal für deine Antwort!

Also, ich muss mit 96kb/s netto übertragen. Sind bei der asynchronen
Übertragung die 115,2k brutto (inklusive Start und Stop-bit) oder
netto? Falls brutto, kommt man nämlich netto nur auf 92,2kb/s, also
knapp unter 96kb/s.

Sollten jedoch die 115,2k netto übertragen werden können, wäre mein
Problem gelöst.

von A.K. (Gast)


Lesenswert?

115200 Bits/Sek sind bei 10 Bit pro Byte 11520 Bytes/Sek.

Allerdings sind bei PCs bisweilen auch mehr als 115200 drin, 256000
wird mir von diversen Terminalprogrammen auch angeboten.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Die Standardhardware (8250, 16450, 16550 und Konsorten) wird im PC mit
einem 1.8432 MHz-Quarz zur Baudratenerzeugung angesteuert. Da die UART
das durch 16 teilt, ist die höchst mögliche erzielbare Baudrate 115200
Baud. Höhere Baudraten sind nur mit anderer Hardware (PCI-Karten oder
USB-Adapter) möglich; daß irgendwelche Terminalprogramme irgendwelche
Baudraten anbieten, hat leider überhaupt keine Aussagekraft über die
tatsächlichen Möglichkeiten der Schnittstellenhardware.

von A.K. (Gast)


Lesenswert?

Offiziell hört die Welt bei 115,2 auf. Inoffiziell

Zu den Standardbausteinen für Onboard-Peripherie gehört der Winbond
W83627. Und der bietet nicht nur 1.8MHz an, sondern auch 2.0MHz,
14,7MHz und 24MHz.

Und da 128000 und 256000 im Windows API offiziell vorgesehen sind,
stehen die Chancen vielleicht doch nicht so schlecht.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

... die Chancen stehen nur dann nicht so schlecht, wenn ein anderer als
der Standarddevicetreiber verwendet wird. Der nämlich geht bestenfalls
von einem 16550 aus ... mit eben einem externen Takt von 1.8432 MHz. Es
müsste also ein Treiber von/für Winbond verwendet werden, der die
erweiterten Betriebsarten zulässt.

Verwendet man beispielsweise eine der UARTs von Oxford Semiconductor,
wie sie auf manchen besseren seriellen Schnittstellenkarten zu finden
sind, bietet der zugehörige Treiber noch ganz andere Funktionen an, so
beispielsweise eine RS485-Betriebsart mit automatischer
Sender-/Empfänger-Umschaltung ... und deutlich größere Fifos als die 16
Bytes des 16550.

Mir ist allerdings keine API bekannt, mit der ein Anwendungsprogramm
die von einer seriellen Schnittstelle tatsächlich unterstützten
Baudraten ermitteln kann; soweit ich weiß, muss man das im Einzelfall
ausprobieren bzw. der Dokumentation des Treibers/Bausteins entnehmen.

von Rolf (Gast)


Lesenswert?

Was soll denn synchron genau heissen?
Mit RTS/CTS oder wie?

Und ich habe bisher keine serielle Schnittstelle oder auch nur einen
USB-RS232-Adapter gefunden, der nicht 4 Mbit/s schaffte; das Problem
war dabei bisher nur, dass der Mikrocontroller am anderen Ende der
Leitung Probleme hat, alle Daten schnell genug zu verarbeiten.
Mit nur 1,5 MBaud gibt's aber beim MSP430 erfahrungsgemäss keine
Probleme.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Synchrone serielle Schnittstelle bedeutet, daß es keine Start- und
Stopbits gibt und daß zusätzlich zu den Daten eine Taktleitung
verwendet wird.

Das in vielen Microcontrollern verbaute SPI-Interface ist ein schönes
Beispiel für eine synchrone serielle Schnittstelle, die
"PS/2"-Tastatur- oder Mausschnittstelle von PCs ebenfalls.

von Rolf (Gast)


Lesenswert?

Achso, aber das das hat mit RS232 oder V24 nichts zu tun.
Mit dem PC könnte man das noch hinbekommen, über den Parallelport und
mit Pin-Wackeln sowie einem harten Echtzeit-OS. Mit Linux +RTAI habe
ich bis zu 400 kHz hinbekommen. Das reicht für bis zu 200 kBaud.

von TravelRec. (Gast)


Lesenswert?

Wobei die Tastatur- und Maus-Schnittstelle PS2 sehr wohl mit Start- und
Stopbit arbeitet!

von Klaus (Gast)


Lesenswert?

Hi zusammen,

danke für die zahlreichen Antworten. Ich denke, der synchrone Modus ist
wohl nicht zu realisieren. Die zu sendenden Daten sollen von mehreren
PC's empfangen werden können, d. h. auch wenn der eine PC mehr als
115kb/s schaffen sollte, muss das mit einem anderen PC nicht unbedingt
genauso sein.
Geschwindigkeitsmässig würde der MC auch locker 1 Mb/s schaffen; das
Problem liegt auf der PC-Seite.
Aus Zeitgründen geht das mit dem USB-Adapter leider auch nicht. Habe
noch nie damit gearbeitet und müsste daher wahrscheinlich erst einmal
längere Zeit damit herumexperimentieren.

Ich denke, ich werde den Datenstrom irgendwie kürzen, und dann ganz
konventionell asynchron versenden.

MfG

Klaus

von Anton W. (antonwert)


Lesenswert?

Wie währe eine Lösung mit USB? Hat heute praktisch jeder PC, und mit 2.0
ist so einiges drin :-)

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.