UART_RECV详细设计方案
1.????? UART_RECV簡介:
串口是用的非常多的一種接口,實現原理比較簡單,基本所有CPU芯片都配置有串口,所以經常被用來作為調試接口。
?
2.????? UART_RECV規格:
實現9600波特率的串口接收,上位機串口軟件發送的數據,可以被接收到。
?
3.????? 實現原理
以波特率9600為例子說明,波特率9600發送一個bit的時間為1s/9600=104us,即每隔104us發送一個數據。
?
104us = 104000ns 50M時鐘的一個周期時間為20ns要遠小于104000ns,所以可以用50M時鐘產生的計數器來計數,然后根據時間來采樣數據。
起始位可以用一個下降沿檢測電路,這個在沿檢電路一節有詳細簡介,此處只做使用,簡介見檢電路一節。
采樣數據有個基本要求就是要在數據穩定時候采樣,這樣可以最好的滿足寄存器的建立時間和保持時間,得到一個穩定的值,從時序圖上可以看出,在數據bit位的中間位置數據最為穩定,所以我們采樣點設在中間。如下圖紅色線條所示:
?
?
?
?
?
?
?
下圖對應采樣點的時間:
新建一個計數器,50Mhz為時鐘,那么計數器變化一次時間為20ns。
由于一次完整數據接收需要有1144000ns時間,所以計數器必須記到1144000ns時間。
1144000ns/20ns = 57200,所以需要16位計數器。
?
由于9600波特率一個傳輸周期為104us,所以第一個紅線位置為104us+104us/2=156us,其他位置依次類推,所以對應的計數器如下計算:
?
D0 對應計數器的156000ns/20ns = 7800
D1 對應計數器的260000ns/20ns = 13000
D2 對應計數器的364000ns/20ns = 18200
D3 對應計數器的468000ns/20ns = 23400
D4 對應計數器的572000ns/20ns = 28600
D5 對應計數器的676000ns/20ns = 33800
D6 對應計數器的780000ns/20ns = 39000
D7 對應計數器的884000ns/20ns = 44200
總結
以上是生活随笔為你收集整理的UART_RECV详细设计方案的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: UART_SEND详细设计方案
- 下一篇: 良好的代码编写风格(二十五条)