細說串口


一、硬件

二、通信幀

串口數據包的基本組成

由空閑位、起始位、數據位、校驗位、停止位組成      傳輸的數據是低位在前高位在后

空閑:

串口TX或RX數據線上沒有傳輸任何數據時,則該線處於為空閑狀態。空閑是TX和RX都是處於高電平。

起始位:

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

數據位:

可以選擇的值有5,6,7,8這四個值,可以傳輸多個值為0或者1的bit位。

這個參數建議為8,因為如果此值為其他的值時當你傳輸的是ASCII值時一般解析肯定會出問題。理由很簡單,一個ASCII字符值為8位,如果一幀的數據位為7,那么還有一位就是不確定的值,這樣就會出錯。

校驗位:

保證數據傳輸的可靠性

數據位加上這一位后,使得“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

停止位:

它是一幀數據的結束標志。可以是1bit、1.5bit、2bit個邏輯1的的數據位表示,它用來幫助接受信號方硬件重同步。

波特率

串口異步通訊,異步通訊中由於沒有時鍾信號(DB9接口中是沒有時鍾信號的),所以兩個通訊設備之間需要約定好波特率,即每個碼元的長度,以便對信號進行解碼。常見的波特率為4800、9600、115200 等。

 

實際傳輸速度
波特率115200 = 115200 (位/秒)
如果沒有校驗位,就應該除以 10,得到的是每秒字節數:
波特率115200 = 115200 (位/秒) = 11520 (字節/秒)
再除以 1024,就是每秒 KB 數:
波特率115200 = 115200 (位/秒) = 11.25 (KB/秒)
 
如果有一位奇偶校驗位,就應該除以 11,得到的是每秒字節數。
最后:波特率115200 = 115200 (位/秒) = 10.22 (KB/秒)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM