一文看懂,用示波器查看串口UART的波形,什麼是數據位、起始位、奇偶校驗位

先介紹一些概念。

起始位:先發出一個邏輯”0”的信號,表示傳輸數據的開始。

校驗位:數據位加上這一位後,使得“1”的位數應爲偶數(偶校驗)或奇數(奇校驗),以此來校驗數據傳送的正確性。就比如傳輸“A”(01000001)爲例。 (字符‘A’的二進制是 0100 0001)

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

此位還可以去除,即不需要奇偶校驗位。 
停止位:它是一幀數據的結束標誌。可以是1bit、1.5bit、2bit的空閒電平。可能大家會覺得很奇怪,怎麼會有1.5位~沒錯,確實有的。所以我在生產此uart信號時用兩個波形點來表示一個bit。這個可以不必深究。。。 


空閒位:沒有數據傳輸時線路上的電平狀態。爲邏輯1。 
傳輸方向:即數據是從高位(MSB)開始傳輸還是從低位(LSB)開始傳輸。比如傳輸“A”(字符‘A’的二進制是 0100 0001)

如果是MSB那麼就是0100 0001(如圖-2),如果是LSB那麼就是10000010


uart傳輸數據的順序就是:剛開始傳輸一個起始位——傳輸數據位——校驗位(可不需要此位)——停止位。

這樣一幀的數據就傳輸完了。接下來接着像這樣一直傳送。在這裏還要說一個參數。 
幀間隔:即傳送數據的幀與幀之間的間隔大小,可以以位爲計量也可以用時間(知道波特率那麼位數和時間可以換算)。比如傳送”A”完後,這爲一幀數據,再傳”B”,那麼A與B之間的間隔即爲幀間

實驗:

用串口工具發送0XD6,即二級制 1101 0110 ,在示波器上如此顯示。

串口設置:波特率9600,停止位1位,無奇偶校驗位。

在示波器上,最左邊一個低電平表示0,起始位;然後依次是0110 1011,正好和發送的數據最高位和最低位反過來。如下圖。

這就是所謂的LSB.

________傳輸方向:即數據是從高位(MSB)開始傳輸還是從低位(LSB)開始傳輸


 

再來個例子:用串口發送0x75,就是二進制 0111 0101,如下圖所示。

串口設置:波特率9600,停止位1位,無奇偶校驗位。

同理,最左側的爲起始位,低電平0, 然後LSB傳輸。 1010 1110依次傳輸到示波器。

第三個例子:用串口發送0x75,就是二進制 0111 0101,

串口設置:波特率9600,停止位1位,奇校驗

奇校驗就是要保證這一幀裏的所有BIT 有1的數爲奇數,0x75已經有5個1了,所以奇偶校驗位爲0即可。如下圖所示。

 

 

同理,如果爲偶校驗,那麼最後一位應該是高電平1,就會有6個1,以此保證所有的1的數量爲偶數。

 

最後,連發發送兩個16進制數據0x75(0111 0101) 0x6B (0110 1011)

串口設置:波特率9600,停止位1位,無奇偶校驗位。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章