COM Port Reaktionszeit: USB2Serial vs. HC06

Gast #5127872
Hallo zusammen,

ich möchte Daten zwischen einem STM32 Mikrocontroller und dem Windows 7 
PC in beide Richtungen übertragen.
Vorerst sieht der Aufbau folgendermaßen aus:

- STM32 sendet ein Byte
- PC empfängt dieses Byte und sendet es zurück.
RX und TX Leitungen hängen am Oszi.

Verwende ich ein USB2Serial Kabel, dauert es ca 500 - 1000 
Mikrosekunden, bis der PC das Antwortbyte auf den Bus legt (mit Oszi 
gemessen).

Wenn ich einen Bluetooth Adapter verwende, dauert die Reaktion 15 - 25 
Millisekunden (mit Oszi gemessen).

In beiden Fällen ist die Software auf dem STM32 und auf dem PC die 
gleiche.

Beim Bluetooth Adapter dauert es im Vergleich eine halbe Ewigkeit, bis 
der Bluetooth Treiber die Daten in den Stream legt.

Kennt jemand dieses Problem? Kann man in den Tiefen des Windows noch 
irgendetwas einstellen?

Gruß
Andreas
Gast #5127876
> Beim Bluetooth Adapter dauert es im Vergleich eine halbe Ewigkeit, bis
> der Bluetooth Treiber die Daten in den Stream legt.
>
> Kennt jemand dieses Problem?

Wer Funk kennt, nimmt Draht.

> Kann man in den Tiefen des Windows noch
> irgendetwas einstellen?

FORMAT C:
Gast #5127899
Andreas schrieb:
> Kann man in den Tiefen des Windows noch
> irgendetwas einstellen?

Einfach den Systick hoch skillen.

Schnittstellen wie USB oder Ethernet sind darauf ausgelegt
grosse Datenmengen auf einmal zu transportieren. Bei
wenigen einzelnen Zeichen sind sie dagegen von der
Datenrate her ineffizient.
#5127969
Andreas schrieb:
> Beim Bluetooth Adapter dauert es im Vergleich eine halbe Ewigkeit, bis
> der Bluetooth Treiber die Daten in den Stream legt.

Welcher Adapter wird beim µC verwendet? STM32 kennen kein natives 
Bluetooth IIRC. Die BT2UART Adapter haben oft lange Timeouts, um über 
Funk mit größeren Datenpaketen arbeiten zu können.

Andreas schrieb:
> Verwende ich ein USB2Serial Kabel, dauert es ca 500 - 1000
> Mikrosekunden, bis der PC das Antwortbyte auf den Bus legt (mit Oszi
> gemessen).

Wenn Du da noch einen USB2.0 High speeed Hub davor setzt, verringert 
sich das auf 0,25-0,5ms - offenbar läuft dann der Host Scheduler 
schneller.
Gast #5128464
...tja eigentlich kann man hier doch nur mutmaßen an was es liegen 
könnte da man die interner/firmware dieser Adapter ja nicht wirklich 
kennt und auch nicht wirklich genau wissen kann was windows da noch so 
zwischendurch rum werkelt, aber plausibel klingt das schon das evtl. der 
Adapter "wartet" bis irgendwelche Puffer gefüllt sind oder ein timeout 
abgelaufen ist.
Probier doch einfach mal aus ob sich was an den Zeiten ändert wenn du 
ganze Pakete a 32 oder 64 bytes versendest.
Gast #5128608
> Kennt jemand dieses Problem?

Ja, das ist völlig normal und der Grund, warum einige alte Geräte, die 
für "echte" serielle Ports gedacht waren, jetzt nicht mehr zuverlässig 
oder gar nicht mehr funktionieren.

Generell ist Windows nicht echtzeitfähig. Wenn du Schaltvorgänge zu ganz 
bestimmten Zeiten ausführen möchtest und die Abweichung garantiert unter 
100ms sein soll, dann musst du einen externen µC mit Uhr benutzen, demm 
du VORHER Befehle sendest, wann er was tun soll.

Deswegen hat jede zeitkritische Peripherie einen eigenen Mikrocontroller 
(z.B. Maus, Drucker, Motorsteuerungen, etc).

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 9 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.