你真的瞭解串列埠嗎(示波器串列埠波形分析)

東小東發表於2020-12-20

串列埠是最常用的外設了,串列埠基本都是微控制器的標配。串列埠通訊只需要3條線組成,分別為RX、TX、GND。下面將重點分析串列埠資料幀組成。

一、    串列埠通訊幀

 串列埠通訊幀資料如此,每幀由空閒位、起始位、資料位、校驗位、停止位組成

傳輸的資料是低位在前高位在後

l  空閒:

串列埠TX或RX資料線上沒有傳輸任何資料時,則該線處於為空閒狀態。空閒是TX和RX都是處於高電平。

l  起始位:

標識資料起始,由一個邏輯0(低電平)的資料位表示。

l  資料位:

可以選擇的值有5,6,7,8這四個值,可以傳輸多個值為0或者1的bit位。這個引數最好為8,因為如果此值為其他的值時當你傳輸的是ASCII值時一般解析肯定會出問題。理由很簡單,一個ASCII字元值為8位,如果一幀的資料位為7,那麼還有一位就是不確定的值,這樣就會出錯。

l  校驗位:

保證資料傳輸的可靠性

資料位加上這一位後,使得“1”的位數應為偶數(偶校驗)或奇數(奇校驗),以此來校驗資料傳送的正確性。就比如傳輸“A”(01000001)為例。

1、當為奇數校驗:”A”字元的8個bit位中有兩個1,那麼奇偶校驗位為1才能滿足1的個數為奇數(奇校驗)。

2、當為偶數校驗:”A”字元的8個bit位中有兩個1,那麼奇偶校驗位為0才能滿足1的個數為偶數(偶校驗)。

此位還可以去除,即不需要奇偶校驗位。

校驗位一般都是硬體處理的,如STM32。但是51的校驗位是需要位元組集手動處理,設定為9位資料位即可收到校驗值。

校驗可選設定:

無校驗 (no parity):資料包不包含校驗位

奇校驗 (odd parity):如果字元資料位中"1"的數目是偶數,校驗位為"1",如果"1"的數目是奇數,校驗位應為"0"。保證資料位+校驗位的“1”為奇數

偶校驗 (even parity):如果字元資料位中"1"的數目是偶數,則校驗位應為"0",如果是奇數則為"1"。保證資料位+校驗位的“1”為偶數

mark parity:校驗位始終為1

space parity:校驗位始終為0

l  停止位:

它是一幀資料的結束標誌。可以是1bit、1.5bit、2bit個邏輯1的的資料位表示

二、    串列埠波特率(位元率)

 

uart中的波特率就可以認為是位元率,即每秒傳輸的位數(bit)。

一般選波特率都會有9600,19200,115200等選項。

波特率其實意思就是每秒傳輸這麼多個位元位數(bit)。

 

波特率是串列埠傳輸速率的關鍵作用引數,9600bps就是每秒傳輸9600bit(位)的意思,也就相當於:1/9600=1.041666666666667e-4秒為每個bit的傳輸時間

 

三、    抓波形(8-1-NONE)

串列埠傳送資料

傳送的配置:8位資料位、1位停止位、無校驗位

傳送的資料:0x55 = 0101 0101

波形檢視

 0和11為空閒電平(高電平)

1為起始位(一個資料大小的低電平)

 2、3、4、5、6、7、8、9組成8位資料,為10101010,但是資料是低位在前,所以真是的資料位01010101

10為停止位,高電平,可以選擇一個1、1.5、2個資料大小的時間

四、    抓波形(8-1-EVEN)

串列埠傳送資料

傳送的配置:8位資料位、1位停止位、偶校驗(資料+校驗的1為偶數)

傳送的資料:0x55 = 0101 0101

波形檢視

0和12為空閒電平(高電平)

1為起始位(一個資料大小的低電平)

2、3、4、5、6、7、8、9組成8位資料,為10101010,但是資料是低位在前,所以真是的資料位01010101

10為校驗位,因為是偶校驗計算方式是資料位+校驗位的1為偶數即可

11為停止位,高電平,可以選擇一個1、1.5、2個資料大小的時間

五、    抓波形(x-1-NONE)

串列埠傳送資料

傳送的配置:(8,7,6,5)位資料位、1位停止位、無檢驗

傳送的資料:0x13 = 0001 0011

8位資料位

7位資料位

 

6位資料位

5位資料位

5位資料位,使用奇校驗(ODD)

分析:

*  資料的長度會根據奇偶校驗位選擇及資料位選擇動態變化。

*  資料位設定長度小於值本身的長度,將會出現擷取現象,將自動擷取低位,然後傳送

* 校驗位只校驗真實傳送的資料


 

相關文章