Guten Tag Ich habe eine sehr spezifische Frage, vielleicht kann die jemand beantworten. Ich habe einen STM8S007C8 an welchem eine UART angehängt ist (an UART1). Wir betreiben die UART mit einer Baudrate von 19'200. Über diese UART empfängt der STM8 Befehle (können mehrere Bytes lang sein). Manchmal werden diese Befehle jedoch verschluckt. Wir haben nun einmal das Signal aufgezeichnet. Dabei haben wir festgestellt, dass das Startbyte des nächsten Bytes minimal zu früh kommt (wenn eigentlich das Stopbit noch nicht fertig ist). Leider ist dies sehr schwer "bewusst zu generieren", da einige Elemente stark temperaturabhängig sind und dieser Effekt besonders bei höheren Temperaturen vorkommt (~80°C). Aus dem Datenblatt (Seite 329) habe ich gesehen, dass jedes Bit "16x" abgetastet wird, wobei nur in der Mitte die Werte geprüft werden. Was passiert nun, wenn das Startbit kommt, bevor das Stopbit zum 16ten Mal abgetastet wurde? Werden die nachfolgenden Bits um diesen 1 Abtastzeitpunkt verschoben oder synchronisiert sich der STM8 neu? Freundliche Grüsse LukiLeu
LukiLeu schrieb: > Aus dem Datenblatt (Seite 329) habe ich gesehen, dass jedes Bit "16x" > abgetastet wird, wobei nur in der Mitte die Werte geprüft werden. Was > passiert nun, wenn das Startbit kommt, bevor das Stopbit zum 16ten Mal > abgetastet wurde? Werden die nachfolgenden Bits um diesen 1 Ublich sind 10-16 Samples pro bit, wobei fur Databits 3 Samples (von 16) in der Mitte verwendet werden und fur Stopbit 3 Samples (von 10) im letzten Drittel. Es wird "majority voting" verwendet, also 2 aus 3. Beim Stopbit werden die letzten 3 Samples ausgewertet, also kann der Stopbit max. 5% Abweichung haben. Wenn der Stopbit kurzer ist, wird der gerade empfangene Byte zwar als richtig erkannt, aber die Startdetection Logic furs nachste Byte wird wahrscheinlich nicht richtig funktionieren. Abhilfe: Sender sendet mit 2 Stopbits, beim Empfanger wird der zweite Stopbit niemals gepruft.
Besten Dank für deine Antwort. Marc V. schrieb: > Beim Stopbit werden die letzten 3 Samples ausgewertet, also > kann der Stopbit max. 5% Abweichung haben. Beim vorliegenden STM8 ist es gemäss Datenblatt (Seite 330) so: > 1 Stop Bit: Sampling for 1 stop Bit is done on the 8th, 9th and 10th samples Ich gehe davon aus, dass beim Stopbit auch mit 16 Samples gearbeitet wird (ich habe jedenfalls keine andere Angabe gefunden). Trifft hier auch zu dass die Startdetection Logik nicht funktioniert, das Stopbit würde ja in der Mitte des Bits bereits als richtig erkannt und nicht erst am Ende. Hier noch der Link zum Datenblatt (falls es jemanden interessiert): http://www.st.com/web/en/resource/technical/document/reference_manual/CD00190271.pdf
LukiLeu schrieb: > Beim vorliegenden STM8 ist es gemäss Datenblatt (Seite 330) so: >> 1 Stop Bit: Sampling for 1 stop Bit is done on the 8th, 9th and 10th samples > Ich gehe davon aus, dass beim Stopbit auch mit 16 Samples gearbeitet > wird (ich habe jedenfalls keine andere Angabe gefunden). Kann auch sein, dann ist die Rechnung noch schlimer: max. 3.1% Error oder max. - 1.6us. Sollte aber jede Hardware-UART locker einhalten, allerdings nicht bei 80°C - da lauft jeder Quartz ein bisschen schneller, somit rutscht der Empfanger mit jedem empfangenem bit etwas aus der Mitte um am Ende ausserhalb des bits zu landen. Vor dem Stopbit war schon 9*Fehler, also... Ich wurde auch mal die Bitzeiten genau ausmessen.
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.