用振蕩器為8051單片機實現高速串行通信的時鐘配置
引言
本文引用地址:http://www.j9360.com/article/172208.htm當今許多實時監測系統與通信設備領域中,經常需要進行遠距離的數據傳送。為此,如何實現高速、可靠及低成本的數據傳輸是作為前級機或發送級的8051單片機迫切需要解決的新技術。據此,我們采用由Dallas Semiconductor公司的芯片DSl075--Econ oscillator(高效型振蕩器)為8051系列的DS87C520高速型單片機提供時鐘的配置設計方案,實現單片機串行通信的高速波特率。
Econ oscillator(高效型振蕩器)含有一個內部振蕩器,用以產生一個基本頻率;還內置了一個分頻鏈,可以將基本頻率降低到需要的速度。Econ oscillator 的每種型號提供四種基本頻率(60MHz、66.67MHz、80MHz、100MHz),可調節的分頻系數最高可達2052。Econ oscillator能根據系統需要配置為任何類型的鐘控邏輯,包括單片機(微處理器)、FPGA、CPLD電路等。
選用時鐘時,應認真考慮兩個因素,即時鐘頻率和工作期限內的時鐘精度。在8051單片機系統中,時鐘頻率取決于所采用的串行通信RS-232。例如,考慮一個采用12MHz時鐘(早期8051的最高時鐘頻率)的異步模式1串行通信。表l列出了建立標準波特率所需的定時器1自動重新裝載值。
表l中實際波特率是按照以下計算公式得出的:波特率所需的定時器I自動重新裝載值。
其中:BaudRate為波特率;SMOD為波特率倍增位;fosc為振蕩頻率;THl為定時器l自動重新裝載值。
表1中數值基于以下定時器 1狀態:
·每12個時鐘周期定時器增l(單片機DS87C520的定時器可以每4個或12個時鐘周期增1)。
·自動重裝載模式。
·禁止波特率倍增(SMOD=0)。
表l為早期的單片機采用晶體時的波特率和波特率誤差。
一般情況下的RS-232串行通信.一旦波特率誤差超出3%,盡管數據傳送中有起始位或停止位進行同步,就有可能造成通信錯誤。3%的容許誤差使12MHz晶振時的最高通信速率限制在2400波特,這在90年代初還不算壞,但對今天的標準來講是一個不能忽略的大問題丁。
而現在適應于8051單片機串行通信的晶體:11.059MHz或22.118MHz,已開發出。單片機采用這種晶體后波特率有很大改善,見表2所示。數據傳送率可達57.6kps(使DS87C520單片機波特率倍增,當SMOD=1后可達115.2kps),這樣高的通信速率—波特率對于當前大多數單片機(或微處理器)系統已是很可觀了。隨著晶體11.059MHz或22.118MHz產品逐步市場化,使單片機應用糸統大為拓寬。
定時器1自動重裝載值
Fosc=11.059MHz時的波特率
Fosc=22.118MHz時的波特率
255
28,799.5
57598.9
254
14399.7
28799.5
253
9599.8
19199.6
250
4799.91
9599.83
244
2399.95
4799.91
232
1199.98
2399.95
208
599.98
119.98
160
299.99
599.99
64
149.99
299.99
注:波特率與規定速率的偏差3%對于時鐘精度提出了要求,即便采用專為RS-232串行通信優選的時鐘頻率,如果時鐘頻率變化超出3%,仍然會影響到通信的穩定.
評論