✍ 什麼是波特率,波特率怎麼計算➹
概述:
☆簡而言之,串口傳輸的波特率即爲每秒鐘傳輸二進制的位數。
☆脫離枯燥乏味的文字描述,我們用波形和數字來看看波特率是什麼吧☟。
☆說明:系統時鐘50M,波特率115200。
基礎知識:
因 | 果 |
---|---|
系統時鐘-50M | 時鐘週期 |
假設1個時鐘週期可以計數1次(其實FPGA就是這樣) | 50M時鐘1s計數50 000 000個 |
系統時鐘-50M | 計1個數需要s |
波特率-115200 | 1s傳輸二進制的位數115200bit |
波特率-115200 | 傳輸1bit需要 1/115200s=8.68us |
50M系統時鐘------波特率爲115200 | 傳輸1bit需要計數 |
以上重點是推導出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/…)怎麼來的。
★★★如有錯誤,歡迎指導。