複製鏈接
請複製以下鏈接發送給好友

傳輸率

鎖定
所謂傳輸率就是指每秒傳輸多少位,傳輸率也常叫波特率。國際上規定了一個標準波特率系列,標準波特率也是最常用的波特率,標準波特率系列為110、300、600、1200、4800、9600和19200。
中文名
傳輸率
外文名
Baud rate
別    名
波特率
定    義
每秒傳輸多少位
單    位
bit/s
學    科
通信科技

目錄

傳輸率簡介

所謂傳輸率就是指每秒傳輸多少位,傳輸率也常叫波特率。國際上規定了一個標準波特率系列,標準波特率也是最常用的波特率,標準波特率系列為110、300、600、1200、4800、9600和19200。
傳輸率是指每秒鐘傳送二進制數碼的位數(也稱比特數),單位是bit/s。波特率是串行通信的重要指標,用於表徵數據傳送的速率。波特率越高,數據傳輸速度越快。字符的實際傳送速率與波特率不同,字符的實際傳送速率是指每秒鐘內所傳字符幀的幀數,與字符幀格式有關。
圖1 圖1
例如,波特率為2400bit/s的通信系統,若採用圖1 a)的字符幀,則字符的實際傳送速率為(2400/11)幀/s=218.18幀/s;若採用圖1b)的字符幀,則字符的實際傳送速率為(2400/14)幀/s=171.43幀/s。
每位的傳送時間定義為波特率的倒數。通常,異步通信的波特率在50~9600bit/s之間。波特率不同於發送時鐘和接收時鐘,時鐘頻率常是波特率的1、16或64倍。在異步串行通信中,接收設備和發送設備保持相同的傳送波特率,並以字符數據的起始位與發送設備保持同步。起始位、奇偶校驗位和停止位的約定在同一次傳送過程中必須保持一致,這樣才能成功地傳送數據。 [1] 

傳輸率設計

在串行通信中,收發雙方或接收的數據速率要有一定的約定,通過軟件對8051串行口編程可約定4種工作方式。其中,方式0和方式2的波特率是固定的,而方式1和方式3的波持率是可變的,由定時器T1的溢出率來決定。串行口的4種工作方式對應着3種波特率。由於輸入的移位時鐘的來源不同,所以,各種方式的波特率計算公式也不同。
波特率的計算方法
(1)方式0波特率
串行口方式0的波特率由振盪器的頻率所確定:
方式0波特率=振盪器頻率/12
(2)方式2波特率
串行口方式2的波特率由振盪器的頻率和SMOD(PCON.7)所確定:
方式2波特率=
×振盪器頻率_/64
SMOD為0時,波特率等於振盪器頻率的1/64;SMOD為1時,波特率等於振盪器頻率的1/32。
(3)方式1和方式3的波特率
串行口方式1和方式3的波特率由定時器T1或12(8052等單片機)的溢出率和SMOD所確定。Tl和r12是可編程的,可以選的波特率範圍比較大,因此串行口方式l和方式3是最常用的工作方式。 [2] 
波特率的產生
(1)用定時器T1產生波特率
當定時器T1作為串行口的波特率發生器時,串行口方式1和方式3的波特率由下式確定:
方式1和方式3波特率=
×(T1溢出率)/32
其中,溢出率取決於計數速率和定時器的預置值。計數速率與TMOD寄存器中C/T的狀態有關。當C/T=o時,計數速率=振盪器頻率/12;當C/T=1時,計數速率取決於外部輸入時鐘頻率。
當定時器T1作波特率發生器使用時,通常選用可自動裝入初值模式(工作方式2),在工作方式2中,TL1作計數用,而自動裝入的初值放在TH1中,設計數初值為X,則每過“256一X”個機器週期,定時器T1就會產生一次溢出。為了避免因溢出而引起中斷,此時應禁止T1中斷。這時有:
溢出週期=12/振盪器頻率x(256一X)
溢出率為溢出週期的倒數,所以有:
波特率=
×振盪器頻率/[32×12×(256一X)]
此時,定時器Tl在工作方式2時的初值為:
(2)用定時器T2產生波特率
8052等單片機內的定時器12也可以作為串行口的波特率發生器,置位T2CON中的TCLK和RCLK位,T2就工作於串行口的波特率發生器方式。
T2的波特率發生器方式和計數初值常數自動再裝入方式相似,若C/T2=0,以振盪器的二分頻信號作為T2的計數脈衝,C/T2=0時,計數脈衝是外部引腳T2(P1.0)上的輸入信號。T2作為波特率發生器時,當T2計數溢出時,將RCAP2H和RCAP2L中常數(由軟件設置)自動裝入TH2、TL2,使T2從這個初值開始計數,但是並設置“1”TF2,RCAP2H和RCAP2L中的常數由軟件設定後,T2的溢出率是嚴格不變的,因而使串行口方式1和3的波特率非常穩定,其值為
方式1和方式3波特率=振盪器頻率/32×[65536一(RCAP2H)(RCAP2L)]
T2工作於波特率發生器方式時,計數溢出時不會置“l”TF2,不向CPU請求中斷,因此不必禁止T2的中斷。如果EXEN2為1,當T2EX(P1.1)上輸入電平發生“1”至“0”的負跳變時,也不會引起RCAP2H和RCAP2L中的常數裝入TH2、TL2,僅僅置位EXF2,向cpu請求中斷,因此T2EX可以作為一個外部中斷源使用。
在T2計數過程中(TR2=1)不應該對TH2、TL2進行讀/寫。如果讀,則讀出結果不會精確(因為每個狀態加1);如果寫,則會影響T2的溢出率,使波特率不穩定。在T2的計數過程中,可以對RCAP2H和RCAP2L進行讀,但不能寫,如果寫也將使波特率不穩定。因此,在初始化中,應先對TH2、TL2、RCAP2H、RCAP2L初始化編程以後才置“1”TR2,啓動T2計數。 [2] 
參考資料
  • 1.    邱春玲,李肅義,李春生,楊光編,單片機與嵌入式系統基礎,機械工業出版社,2016.02,第106頁
  • 2.    趙德安主編;孫運全,盛佔石副主編,單片機與嵌入式系統原理及應用,機械工業出版社,2016.07,75-78