Ich habe versucht, ein ASCII-Zeichen "A" mit einem Oszilloskop zu sehen, aber der tatsächliche Binärwert und die Oszilloskopwerte sind unterschiedlich. Warum ist das so? ASCII "A" Binärwert - 01000001
Das Oszilloskop zeigt dieses Diagramm an:
Ich benutze ein Arduino Uno, um den ASCII-Wert mit dem Code zu senden:
void setup() {
Serial.begin(9600);
}
void loop() {
Serial.println("A");
delay(1000);
}
quelle
println
Befehl, was bedeutet, dass der String gedruckt wird, sowie ein "\ r \ n". Also drei ZeichenWenn Sie sich die Arduino println () -Dokumentation ansehen, werden Sie feststellen, dass am Ende ein Wagenrücklauf und ein Zeilenvorschub angehängt werden. In Dezimalform erhalten Sie 65 (A), 13 (CR) und 10 (LF), was in Binärform übersetzt bedeutet:
Asynchrone serielle Daten werden zuerst per LSB gesendet, so dass:
Ihr Signal ist im Leerlauf hoch, so dass das Startbit 0 und das Stoppbit 1 ist. Fügen Sie dies zu jedem Byte hinzu und Sie erhalten:
Es ist ein bisschen schwierig, das genaue Timing aus Ihrem Diagramm herauszufinden, aber das scheint zumindest in etwa zu stimmen und sollte Ihnen eine Vorstellung davon geben, woher einige der zusätzlichen Bits kommen und warum sie neu angeordnet werden. Der von Kvegaoro bereitgestellte Wikipedia-Link bietet viele gute Hintergrundinformationen zu asynchronen seriellen Daten.
quelle
Wenn es sich bei dem Stream, den Sie anzeigen , um einen asynchronen seriellen Stream handelt , zeigt das Oszilloskop die entsprechenden Start-, Stopp- und Paritätsbits an. Berücksichtigen Sie auch, ob Ihr Signal invertiert ist oder nicht und ob es zuerst das höchstwertige Bit oder zuerst das niedrigstwertige Bit ist. Wenn Sie weitere Details zu dem seriellen Stream hinzufügen, den Sie in der Abbildung dargestellt haben, können wir Ihnen eine detailliertere Antwort geben. Andernfalls handelt es sich nur um eine fundierte Vermutung
quelle