新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 如何在6M晶振下得到更高的波特率

如何在6M晶振下得到更高的波特率

作者: 時間:2016-11-09 來源:網(wǎng)絡 收藏
在一些對電磁干擾要求嚴格的電路中盡量降低晶體的振蕩頻率是必要的,而如果又需要獲得更高的串口通信頻率,這時可以考慮使用8052中的T2作波特率發(fā)生器來解決問題,僅僅只有6M的晶振卻可以得到38400b/s的波特率。

下面先來看看用T1做波特率發(fā)生器時的情況,晶振為6M:

本文引用地址:http://butianyuan.cn/article/201611/317915.htm

若用T1作波特率發(fā)生器,它只能作為8位定時器使用,為得到更高的波特率,可以設置SMOD=1,則它的波特率公式為:BAUND=2*fOSC/(32*12*(256-X)),其中X為定時器T1的初值。若BAUND=4800,則X=249.5,取整為0xf9,或舍入為0xfa,發(fā)送10個s,在超級終端觀察,得到一個字母k或空。在選擇BAUND=9600,則X=252.7,取整為0xfc或舍入為0xfd,在超級終端得到“]iM”或“^^”,而且出現(xiàn)的結果也不是必然的,可以預期用T1作波特率發(fā)生器不能得到4800及以上穩(wěn)定的波特率。

仍然以6M晶振來討論,而改用T2作波特率,情況大有改觀:

先寫出T2一段初始化程序:

voidInitialSerialPort()

{

SCON=0x50;//方式1,允許接收

C_T2=0;

RCLK=1;

TCLK=1;

RCAP2H=0xff;

RCAP2L=0xd8;//波特率=4800的設置值

TR2=1;

}

T2的波特率公式為:BAUND=fOSC/[32*65536-(RCAP2H,RCAP2L)],以下是各種波特率下RCAP2L的取值:

RCAP2H=0xff;

RCAP2L=0xd8;//波特率=4800

//RCAP2L=0xec;//波特率=9600

//RCAP2L=0xf6;//波特率=19200

//RCAP2L=0xfb;//波特率=38400

上述各種波特率情況下串口超級中斷顯示接收數(shù)據(jù)正常:都為10個s。

選用8952中的T2作波特率發(fā)生器可以得到比T1高得多的波特率。



關鍵詞: 6M晶振波特

評論


技術專區(qū)

關閉