題:
解碼/分析以下UART信號
user405714
2020-05-25 21:15:41 UTC
view on stackexchange narkive permalink

我使用UART發送了2和9。波特率為9600,沒有奇偶校驗,並且有8個數據位。

我們知道9以二進制形式表示為1001。但是,這是我從UART信號中得到的:

enter image description here

A 2表示為0010,但這是我從UART信號中得到的結果: enter image description here 我知道我必須注意起始位,但除此之外,我很難理解該信號中的邏輯。

NOTE:

信號有效,但我只需要幫助分析它即可。

甚至不看波形,您可能會混淆二進制數字和ASCII字符代碼,例如,數值2與具有ASCII代碼0x32的字符“ 2”。另外,請不要使用隨機標籤,標籤是關於*問題*的問題,現在正切切涉及到什麼,但在您的帖子中不起作用。
您的示波器看起來足夠現代,可以進行UART解碼,儘管也許它還很新,您必須為此付出代價。
五 答案:
Michael Karas
2020-05-25 21:37:18 UTC
view on stackexchange narkive permalink

讓我們註釋您的第一個瞄準鏡。當我們這樣做時,請注意,二進制值的最低位首先被發送。此字段中的常規表示法是按如下順序對字節中的位進行排序:

[位7] [位6] [位5] [位4] [位3] [位2] [位1] [位0]

因此,當我進行批註然後評估時,位的位置會從已批註的範圍鏡頭上顯示的位置翻轉。

enter image description here

那裡表示的位模式是0b00111001。

與0x39相同。

0x39是'9'字符的ASCII碼。

讓我們為第二個範圍鏡做同樣的事情。

enter image description here

此處的位模式表示為0b00110010。

與0x32相同。

0x32是'2'字符的ASCII碼。

ASCII解釋是合理的,但我不明白為什麼跳過了位0。
對於字符9,您只需寫入0b00111001,但是如果我們包含位0,則它將為0b100111001
起始位始終是零電平位,並且寬度相同。您的第二張圖片紅線實際上標記了位1。不跳過位0。
停止位始終是一個一級位,並且寬度相同。停止位不是UART 8位數據的一部分。
您是說位0是起始位嗎?
不。起始位在我的註釋中清楚地標出,而不是位0。
但是,為什麼不將它包括在您當時寫下的位模式中呢?
尤其是如果像第一個圖片中的位0是“ 1”。
我只寫了UART傳輸的8位數據部分的位模式。我沒有包括開始和停止位。
那麼,當圖片中停止位之前的最後一位為“ 0”時,如何在0b00111001的末尾得到“ 1”?在這種情況下,我正在談論第一張照片。
我是說您寫下的位模式看起來不像我在圖片中看到的位模式。
您正在反向閱讀它們。LSB表示最低有效位在前。您需要將它們左右反轉。
我在圖片中標明了位數。在本學科中,位0是最低有效位。
Mattman944
2020-05-25 21:27:51 UTC
view on stackexchange narkive permalink

您可能發送了ASCII 9,而不是二進制9。ASCII9是0x39。位首先發送LSbit。

0011 1001反轉為1001 1100

enter image description here

Andy aka
2020-05-25 21:26:34 UTC
view on stackexchange narkive permalink

UART通常首先發送最低有效位,因此您得到9並降低2:-

enter image description here

UART字符框架:-

enter image description here

噢,痛苦,沮喪的人-有人覺得自己足以承擔這個責任嗎?
我沒有投票,但是您的答案是唯一沒有提到ASCII的答案。
Justme
2020-05-25 21:27:15 UTC
view on stackexchange narkive permalink

首先,它們不是數字9和2,而是ASCII字符符號“ 9”和“ 2”,分別等於0x39和0x32。

這些位也首先發送LSB。這就是為什麼您看到前導0起始位,然後看到“ 9”為10011100,而“ 2”為01001100的原因。

aMike
2020-05-25 21:24:17 UTC
view on stackexchange narkive permalink

您發送的 2 實際上是字符二,而不是十進制值2。2的ASCII碼是0x32或0b00110010,與您的其中一個匹配圖片。而且,這些位是從LSB發送到MSB的,因此您在“作用域”上看到的電平從左到右分別為0,1,0,0,1,1,0,0。



該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 4.0許可。
Loading...