找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3147|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

串口模塊

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:105323 發(fā)表于 2016-2-23 17:44 | 只看該作者 回帖獎勵 |倒序?yàn)g覽 |閱讀模式
串口傳輸還有另一個重要參數(shù)就是“波特率”。很多朋友都誤解“波特率”是串口傳輸
的傳輸速度,這樣的理解在宏觀上是無誤。但是在微觀上“波特率”就是串口傳輸中“一
個位的周期”,換句話說亦是“一個位所逗留的時間”。
常用的波特率有9600 bps 和115200 bps ( bit per second )。“9600 bps”表示每秒可
以傳輸9600 位。但是經(jīng)過公式計(jì)算“一個位的周期”就會暴露出來。
一個位的周期= 1 / bps
= 1/ 9600
= 0.000104166666666667
從上述的公式,我們明白一個事實(shí)9600 bps ,一位數(shù)據(jù)占用0.000104166666666667s時
間。如果是一幀11 位的數(shù)據(jù),就需要
0.000104166666666667 x 11 = 0.00114583333333334
那么一秒鐘內(nèi)可以傳輸
1 / 0.00114583333333334 = 872.727272727268
872.727272727268 個幀數(shù)據(jù)。
當(dāng)然這只是在數(shù)字上計(jì)算出來而已,但是實(shí)際上還有許多看不見的延遲因數(shù)。
串口傳輸數(shù)據(jù)“從最低位開始,到最高位結(jié)束”。?




圖2?


如上圖所示,數(shù)據(jù)采集都是在“每位數(shù)據(jù)的中間”進(jìn)行著。?
9600 bps 傳輸速度使一位數(shù)據(jù)的周期是0.000104166666666667s 。以20Mhz 時鐘頻率
要得到上述的定時需要:N = 0.000104166666666667 / ( 1 / 20Mhz ) =2083如果從零開始算起2083 - 1 亦即2082 個計(jì)數(shù)。?
assign BPS_CLK = ( Count_BPS == 12'd1041 ) ? 1'b1 :1'b0;這行代碼是在傳輸時鐘的中間采集數(shù)據(jù)。?
串口接收主要看控制芯片自己寫的時鐘如圖2。也就是說,RX_Pin_In數(shù)據(jù)的時鐘是由發(fā)送端控制,bps_module的時鐘由芯片控制。發(fā)送端按波特率(一定的時鐘頻率)發(fā)送過來的時候,我們自己寫出一個時鐘,這個時鐘恰好在發(fā)送端的時鐘的?中間,所以可以這樣來穩(wěn)定接收數(shù)據(jù)!
串口發(fā)送主要看bps_module的時鐘圖4,發(fā)送周期依然是2082。
“怎么定時發(fā)送是發(fā)生在Count_BPS 計(jì)數(shù)的一半?”
圖3?


圖4?


圖3是產(chǎn)生3 個“定時發(fā)送”。每個“定時發(fā)送”是在計(jì)數(shù)12'd1041發(fā)生。讀者嘗試數(shù)數(shù)看,兩個“定時發(fā)送”的之間到底相差了多少個計(jì)數(shù)?沒錯,是12'd2082個計(jì)數(shù)。這下明白怎么一回事了吧!上一個定時的產(chǎn)生與下一個定時產(chǎn)生的之間才是重點(diǎn),也就說“一位數(shù)據(jù)的周期"定義在兩個定時的之間。

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表