hallo zusammen,
ich habe ein Wlan Module, das ich auf 54Mb/s eingestellt habe.
ich sende zu diesem Module daten per UART serielle schnittestelle mit datenrate 115200 Kbit/s manchmal mehr und von diesem Module wird die daten per funk (wlan) zum anderem wlan modul (gleich wie die erste Module )übertragen.
Die Übertragung funktioniert schon aber sie ist so langsam, obwohl die Einstellungen bei beiden module gleich und Datenrate hoch ist.
Kann jemand mir hilfen, an was diesem Problem liegt.
Ich wäre euch sehr dankbar, wenn ihr mir helfen würden
sicher, dass du den uart mit 115200kbit/s betreibst? denn üblicherweise schafft ein uart nur 115200baud (oder halt noch etwas mehr) - was aber nur 115200bit/s entspricht. ein uart mit 115mbit wäre dann doch etwas fix… kleiner kommafehler. kann ja mal passieren 
sorry ich meinte 115200 bit/s
sorry ich meinte 115200 bit/s
aber dann solltest du auch maximal diese geschwindigkeit bekommen können. klar, zwischen den wlan modulen sollte es mit voller geschwindigkeit gesendet werden, aber vom sender zum empfänger wirst du maximal diese 115200bit/s bekommen können. oder habe ich das problem nicht verstanden?
ja das muss so sein und auch von UART zum wlan sollte auch schnell sein
Hallo,
Die Übertragung funktioniert schon aber sie ist so langsam,
Was heißt ‚langsam‘? Wie hast Du das gemessen?
Gruß
loderunner
hallo;
ich habe meine rechnung gemacht z.b 30Kbytes = 30000Bytes = 30000*8 = 240000.
t=240000/115200 = 2,08s und diese t ist die Zeit, was die UART eigentlich braucht, um 30Kbytes zu übertragen aber im praxis(bei mir) das dauer über 15 s
und ich weiss es nicht an was es liegt
Grüße
1kByte == 1024byte (und nicht 1000byte)! und dann kommen ja noch die pausen zwischen den bytes dazu. das geht ja nicht ohne unterbrechung durch (zumindest üblicherweise nicht), sondern es kommt meist eine pause in der länge von 2-3bit dazu - je nach verwendeter hardware auch länger (-> interruptbearbeitung). und dann ist die frage, ob zu deinen 30kb noch protokolldaten dazukommen? je nach dem können da auch noch mal bis zu 50% zusätzlich dazukommen.
ach ja, je nach protokoll wird ja auch für jede sendung eine bestätigung erwartet…
die 2s, die du berechnet hast wären theoretisch möglich, wenn nur die 30k gesendet werden und es zu keiner unterbrechung kommt…
Hallo Fragewurm,
ich habe meine rechnung gemacht z.b 30Kbytes = 30000Bytes =
30000*8 = 240000.
t=240000/115200 = 2,08s und diese t ist die Zeit,
Hier ist schon ein Fehler in der Rechnung.
Du hast noch mindestens Start- und Stopbit vergessen. Ob noch ein Paritybit dabei ist, wissen wir nicht.
Also:
30’000*10 = 300’000
300’000/115’200 = 2.6s
Das sind schon mal +30%
was die UART
eigentlich braucht, um 30Kbytes zu übertragen aber im
praxis(bei mir) das dauer über 15 s
und ich weiss es nicht an was es liegt
-
Die wenigsten Geräte und PCs schaffen wirklich 115.2kbits/s als Durchschittsrate. Da sind meist Pausen zwischen den Zeichen.
-
115 kbit/s entspricht etwa 90µs pro Zeichen. Mit deinen Angaben 30kiBytes/15s ergeben sich um die 500µs pro Zeichen.
Neben den eigentlichen Datemleitungen, hat dein UART auch noch Statusleitungen. Nach dem Übertragen der Daten über das WLAN, muss auch der Status zurückübertragen werden, bevor weitere Daten gesendet werden können.
Hinzu kommt noch, dass WLAN nicht für die Übertragung von einzelnen Bytes, sondern für Datenblöcke ausgelegt ist. Der Overhead um ein einzelnes Zeichen zu übertragen ist enorm, bei Datenblöcken fällt er nicht so ins Gewicht. Zudem ist WLAN nicht Fullduplex, es können also nur immer Daten in eine Richtung Zeitgleich übertragen werden.
Dann stellt sich noch die Frage nach dem verwendeten Übertragungsprotokoll auf der seriellen Verbindung. Wird esr gesendet, wenn das gesendete Zeichen bestätigt wurde, bringen auch Buffer nichts, diese werden dann byteweise, über einen Timeout gesendet.
MfG Peter(TOO)