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
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"?
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.
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.
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.
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.
... 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.
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.
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.
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.
Wobei die Tastatur- und Maus-Schnittstelle PS2 sehr wohl mit Start- und Stopbit arbeitet!
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.