什麼是波特率,波特率怎麼計算

✍ 什麼是波特率,波特率怎麼計算➹

概述:
  ☆簡而言之,串口傳輸的波特率即爲每秒鐘傳輸二進制的位數。
  ☆脫離枯燥乏味的文字描述,我們用波形和數字來看看波特率是什麼吧☟。
  ☆說明:系統時鐘50M,波特率115200。
  
基礎知識:

系統時鐘-50M 時鐘週期150106{{\rm{1}} \over {{\rm{50*1}}{{\rm{0}}^{\rm{6}}}}}
假設1個時鐘週期可以計數1次(其實FPGA就是這樣) 50M時鐘1s計數50 000 000個
系統時鐘-50M 計1個數需要150106{{\rm{1}} \over {{\rm{50*1}}{{\rm{0}}^{\rm{6}}}}}s
波特率-115200 1s傳輸二進制的位數115200bit
波特率-115200 傳輸1bit需要 1/115200s=8.68us
50M系統時鐘------波特率爲115200 傳輸1bit需要計數(50106/115200)=434({\rm{50*1}}{{\rm{0}}^{\rm{6}}}/{\rm{115200}}) = 434

以上重點是推導出50M系統時鐘—波特率爲115200條件下傳輸1bit需要計數個數爲434。

串口傳輸格式
●我們通常用的串口傳輸格式爲:1bit起始位+8bit數據位+1bit停止位(無奇偶校驗位),如下圖所示:
在這裏插入圖片描述
所以傳輸1Byte數據串口需要傳輸10bit數據。上面計算得傳輸1Bit需要的時間爲8.68us,則傳輸1Byte需要時間爲8.68*10=86.8us。

波特率
  由基礎知識知50M系統時鐘—波特率爲115200條件下傳輸1bit需要計數個數爲434。那麼1Byte(串口傳輸格式爲:1bit起始位+8bit數據位+1bit停止位)是不是循環計數10次434就可以傳輸完畢。
直接上圖:圖中描述了1Byte數據傳輸的示意圖,重點都在圖裏!!!。
在這裏插入圖片描述
✍什麼時候去採樣串口線上的數據呢?
  ★觀察上圖,Buad_Flag信號(通道2)表示了傳輸1Bit傳輸的間隔,每遇到1個Buad_Flag=1的信號,數據線上切換1次數據,所以兩個Buad_Flag=1之間的數據是穩定的數據,根據抽樣定理是不是應該在兩個Buad_Flag=1信號的中間去採樣數據呢,其實就是在1bit數據持續期間的中間點採樣,才能得到最穩定的數據。見下圖,重點都在圖裏!!!
  在這裏插入圖片描述
  ★圖中序號①-⑩分別爲10bit數據的採樣點,採樣點處提取數據爲1010_1010(0xAA)。

★★★至此,從下往上再看一遍,就明白了我們所熟悉的波特率(115200/9600/…)怎麼來的。

★★★如有錯誤,歡迎指導。

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