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