新聞中心

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

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

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

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

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

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

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

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

voidInitialSerialPort()

{

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

C_T2=0;

RCLK=1;

TCLK=1;

RCAP2H=0xff;

RCAP2L=0xd8;//波特率=4800的設(shè)置值

TR2=1;

}

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

RCAP2H=0xff;

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

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

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

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

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

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



關(guān)鍵詞: 6M晶振波特

評(píng)論


技術(shù)專區(qū)

關(guān)閉