実際のバイナリ値とオシロスコープ値の違い


14

オシロスコープでASCII「A」文字を表示しようとしましたが、実際のバイナリ値とオシロスコープ値が異なるのはなぜですか?ASCII「A」バイナリ値-01000001

オシロスコープには次のグラフが表示されます。

アスキーA

アスキーA

Arduino Unoを使用して、コードを使用してASCII値を送信します。

void setup() {  
  Serial.begin(9600);  
}  

void loop() {  
  Serial.println("A");  
  delay(1000);  
}

回答:


35

オシロスコープの波形の読み方は次のとおりです。時間をかけて波形画像を編集し、注釈を付けてどのビットがどのビットであるかを示しました。マイクロコントローラーは1文字につき10ビットを送信します。STARTは常に0、8データビット、STOPは常に1です。ラインも1にあるため、最初のSTART立ち下がりエッジで、バイトが来ていることがレシーバーに警告されます。ビットは最初にLSBで送信されるため、それらを文字通り「見」たい場合は、意味を理解するために水平にミラーリングする必要があります。各ビットの幅はボーレートによって決定され、トランスミッタとレシーバは両方ともボーレートが何であるかを知る必要があります。

次の図から、ASCII文字「A」、キャリッジリターン、ラインフィードの3つの文字が送信されていることがわかります。

ここに画像の説明を入力してください


シリアル通信の場合、waveはこのように与えます。正しい?CRおよびLFとは何ですか?CRやLFのような他のデータは何ですか?
ユーザー38701

1
CRはキャリッジリターン、LFは改行です。一緒に改行を形成します。たとえば、カーソルは次の行の先頭に移動します。それらは「ASCII」標準(「情報交換のためのアメリカ標準コード」)、グーグル「ASCIIチャート」などの一部です。
PkP

@ user38701:CRLFは、Enterキーを押すと発生します。技術的には、CRはリターンキーであり、LFはエンターキーであると想定されていますが、シリアルコンソールはエンターキーをCRLF(または単にLF)と解釈します。ほとんどのプログラミング言語では、CRは「\ r」、LFは「\ n」ですが、一部のコンパイラ/言語は「\ n」のCRLFを出力します
-slebetman

1
キャリッジリターンは簡単です。彼はprintlnコマンドを使用しました。つまり、文字列と「\ r \ n」を出力します。3つの文字だから、
ps95

1
ライン終端はシステム固有であることに注意してください。CRLFは主にWindowsおよびArduinoのライン終端です。Linuxのターミナルを「A」のソースとして使用して同じテストを繰り返した場合、LFのみが表示されます。
ニコラスホルトハウス

13

Arduinoのprintln()ドキュメントを見ると、最後にキャリッジリターンとラインフィードが追加されていることがわかります。したがって、10進数では65(A)、13(CR)、および10(LF)になり、バイナリでは次のように変換されます。

01000001 00001101 00001010

非同期シリアルデータは、LSBファーストで送信されるため、次のようになります。

10000010 10110000 01010000

あなたの信号はアイドルハイなので、スタートビットは0になり、ストップビットは1になるので、それを各バイトに追加すると、最終的には:

0100000101 0101100001 0010100001

ダイアグラムから正確なタイミングを計算するのは少し難しいですが、それは少なくともおおよそ一致しているようで、余分なビットの一部がどこから来て、なぜそれらが並べ替えられるのかを知る必要があります。Kvegaoroが提供するWikipediaリンクは、非同期シリアルデータに関する多くの優れた背景情報を提供します。


1

表示するストリームにAsynchronous serialがある場合、オシロスコープは対応する開始ビット、停止ビット、パリティビットを表示します。また、信号が反転されているかどうか、および最も重要なビットが最初であるか、重要なビットが最初であるかどうかを考慮してください。写真に示したシリアルストリームに関する詳細を追加すると、より詳細な回答を提供できます。それ以外の場合は、単なる推測に過ぎません

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.