在處理器控制的系統中,功耗與處理器的時鐘速度成正比。如果處理器上的計算負載很小,則大部分功率都會被浪費。將處理器速度調制到盡可能慢的頻率,同時保持執行手頭任務的最低計算能力可以減少這種浪費。本應用筆記描述了使用DS1077通過PC主機控制來控制8051型微處理器的時鐘速度。
介紹
DS1077為固態CMOS振蕩器,能夠產生8kHz至133kHz的頻率 33.2MHz. 它可以用作固定頻率的獨立振蕩器,或用作處理器控制的頻率 發電機。兩個同步振蕩器輸出的頻率可由用戶調節,子倍數為 主頻率通過使用兩個片上可編程預分頻器和分頻器。頻率和 模式設置可“即時”配置,并使用1077線串行接口存儲在EEPROM中,該接口可以 在一條2線總線上最多可容納0個DS1。兩個數字控制輸入,CTRL1077 和 CTRL3 也是 能夠控制頻率或模式。此外,DS1077L是4V版本的 DS87,能夠產生66.66kHz至3.5MHz的頻率。在其余部分 除非另有說明,否則DS1077的1077V和<>V版本均參考 作為DS<>。
本應用筆記將舉例說明DS1077的使用實例。展示DS1077的使用方法代替晶體來為 8051微控制器和微芯片PIC 提供時鐘?微控制器。這 應用筆記還將說明如何在單條1077線總線上使用多個DS2。最后,示例 8051 包括固件,以展示如何實現2線主站以及下層通信與總線上每個DS1077通信的例程。
系統概述
圖1中的參考原理圖顯示了兩個相互獨立的系統。兩個系統 工作頻率由DS1077產生。在此示例中,盡管每個系統都獨立于 它們都由一個公共的2線主控器控制。該 2 線主站可以是更大主機的一部分 需要控制其子系統的系統。主站可以決定降低工作頻率 目前不需要的子系統,以節省電力,在某些情況下減少熱量,或者可能甚至減少電磁干擾。有時使用DS1077可以避免高頻運行 整個大型系統的時鐘,如背板上的時鐘。分發相對容易和安全得多低頻 2 線總線。同樣,也可以設想使用DS1077來減少系統。工作頻率而不是微控制器(許多微型處理器會降低其速度甚至進入低電平 當前睡眠模式),因為DS1077可以降低整個系統的頻率,而不僅僅是微型獨自。綜上所述,使用DS1077的應用可能很大很復雜,但為此,應用可能很復雜。 應用筆記中,示例原理圖已大大簡化,旨在說明幾點。它顯示了公共總線上的多個DS1077,也顯示了DS1077可以直接驅動一些流行的微控制器。
使用DS1077作為系統時鐘
在參考原理圖中,U1(DS1077Z-125)用于生成U3(8051 微控制器。用于開發附錄 A 中發現的固件的特定 8051 是 DS87C520.DS87C520的工作頻率高達33MHz。由于U1是125MHz版本 在DS1077中,OUT0只能產生125MHz、62.5MHz、31.025MHz和15.625MHz。雖然這會 如果我們的應用只需要全速和半速(使用66MHz版本的DS1077),那就沒問題了, 但同樣,對于固件的開發,希望將微控制器一直運行到千赫范圍。OUT0 沒有分頻器,只有一個除以 1、2、4 或 8 的預分頻器。另一方面,除了預分頻器之外,OUT1 還有一個分頻器,可以將頻率進一步除以 2 到 1025。因此,選擇了 OUT1 來為 8051 計時。然后,OUT0 仍可用于為系統的其他組件提供時鐘。為了簡單起見,沒有使用 CTRL0 和 CTRL1,而是與 GND 相關聯。然而 請注意,如果使用 CTRL0 和 CTRL1 輸入禁用輸出或輸入,則必須小心 省電模式,因為微控制器的晶體輸入浮動會導致不必要的振蕩或 錯誤時鐘。
圖1.參考原理圖。
參考原理圖所示的第二個系統為U2,DS1077為U1的OSC4引腳提供時鐘。 PIC 微控制器。同樣,DS1077代替固定頻率晶體。此處使用的事先知情同意 示例可以工作在高達 20MHz 的頻率,因此與 8051 示例一樣,使用 OUT1 以利用 的 2-1025 分頻器,僅由 OUT1 提供。OUT0 可由 系統。但是,如果未使用任一輸出,因此未連接,則明智的做法是禁用 使用相應的 CTRL 引腳未使用的輸出。這將導致供應明顯減少電流,以及降低不必要的EMI輻射的可能性。雖然,與 8051 系統一樣, 簡單性 CTRL0 和 CTRL1 未使用并接地。
像往常一樣,提供足夠的解耦很重要。同樣,重要的是 去耦電容C1和C2具有良好的高頻性能,并且物理位置很近盡可能使用短PCB走線,使每個DS1077都走線。
使用DS1077優于晶體的優勢
DS1077可能優于晶體有幾個重要原因。一、DS1077 頻率可以改變。實際上,它可以即時更改,甚至可以禁用。其次,DS1077提供 雙路、同步、可單獨控制的輸出。此外,DS1077 無需使用雜亂的油箱晶體在其諧波頻率之一下工作時的電路(對于高于30MHz的晶體)。最后, DS1077比晶體更不容易受到振動的影響。
控制DS1077
DS1077可用于固定頻率應用和變頻應用。在固定頻率下 應用中,不需要2線主站,CTRL輸入是可選的。但對于 需要控制頻率或模式、CTRL 輸入和/或 2 線主站的應用必須 根據所需的靈活性使用。
CTRL0 和 CTRL1 輸入
如果應用需要指示DS1077進入關斷模式以節省能源,或者如果 應用程序想要關閉(三態)振蕩器輸出,則必須使用 CTRL0 和 CTRL1。 雖然沒有特定的2線命令進入省電模式或禁用輸出,但有 可以在固件中完成的一些技巧以達到相同的結果。例如,當 CTRL 輸入是 在已知狀態下,可以設置或清除 MUX寄存器中的相應位,以打開和關閉所需的 功能。
2線接口
當應用需要生成除 1、2、4 或 8 以外的頻率時,則 2 線接口是必需的。與現有2線總線的接口很簡單。只需連接SDA和SCL(和GND)。確保 總線某處包含總線上拉電阻。這些是參考原理圖中的R1和R2。 雖然本例中(找元器件現貨上唯樣商城)使用了4.7kΩ電阻,但可能需要根據總線進行調整。電容、總線上的設備數量以及所需的通信速度。但是,4.7kΩ 會 適用于大多數應用程序。如果沒有現有的總線,則可以使用微型創建一個總線。附錄 A 中提供了 8051 微控制器的示例固件。此外,如果 2 線接口不會 在應用中使用,確保SDA和SCL綁定到明確定義的邏輯電平,而不是離開 浮動。
請注意,在本例中,同一總線上有多個DS1077。為了2線主站為了與每個DS1077單獨通信,每個DS8都需要有一個唯一的地址。總線中的三位寄存器允許總線上同時最多連接1077個DS1。U000被編程為地址為“2”,而U001 被編程為地址為“2”。有關1077線通信的示例,請參考DS1077或 DS<>L數據資料以及附錄A中列出的固件。
DS1077控制2線主機
讀到這里,人們可能想知道為什么在示例應用中使用額外的2線主站。 當有兩個精細的微控制器能夠生成所需的2線協議時 與DS1077通信。雖然可以做到,但很危險,必須格外小心。第一個所有,當微控制器的頻率發生變化時,2線例程的時序也會發生變化。此外,就像 對于 8051 示例和 PIC 示例,某些微器件可能具有最低工作頻率規格 添加到最大頻率。最后,禁用輸出是不可能的,因為微會不再計時,因此無法再發出命令以重新啟用振蕩器。但如果 必須這樣做,檢查正在使用的微控制器的數據表非常重要。
固件
基于 8051 的系統的固件包含在附錄 A 中。它旨在展示一個較低的示例需要與DS1077通信的層例程。但是,請注意,固件實現了開環 系統。閉環非常特定于應用程序。但為了說明示例 與DS1077通信,基于菜單的開環示例是有益的。一個PC終端程序是 用于發出DS1077s命令。然后可以在固件中查找命令以準確查看 正在執行什么。基本菜單命令如下:
讀取選定的DS1077并顯示寄存器
編輯多路復用字
編輯 DIV 字詞
編輯總線字
寫入DS1077,地址為“000”
寫入DS1077,地址為“000”
寫入DS1077,地址為“001”
寫入DS1077,地址為“001”
更改固件 2 線通信地址
由于DS1077設置存儲在EEPROM中,因此DS1077上電至存儲在EEPROM中的值。 可以使用相應的菜單命令寫入 MUX、DIV 和 BUS 寄存器的值。菜單命令 2 至 8 的固件顯示了如何執行 2 線寫入的示例,而菜單 命令 1 顯示 2 線讀取。最后,菜單命令 9 顯示了如何更改 2 線地址,該地址將 被解決。
以下是將1234h寫入DS1077地址“000”的DIV寄存器的示例:
LCALL START2WIRE ; 2-WIRE START
MOV A,#0B0H ; DEVICE IDENTIFIER, SLAVE ADDRESS, WRITE
LCALL WRITEBITS ; SEND COMMAND BYTE
LCALL ACKSLAVEWRITE ; CHECK FOR SLAVE ACKNOWLEDGE
MOV A,#01H ; ACCESS DIV COMMAND
LCALL WRITEBITS ; SEND COMMAND BYTE
LCALL ACKSLAVEWRITE ; CHECK FOR SLAVE ACKNOWLEDGE
MOV A,#12H
LCALL WRITEBITS ; SEND MSB
LCALL ACKSLAVEWRITE ; CHECK FOR SLAVE ACKNOWLEDGE
MOV A,#34H
LCALL WRITEBITS ; SEND LSB
LCALL ACKSLAVEWRITE ; CHECK FOR SLAVE ACKNOWLEDGE
LCALL STOP2WIRE ; 2-WIRE STOP
To write the same to the DS1077 at address ’001’ , simply replace:
MOV A,#0B0H ; DEVICE IDENTIFIER, SLAVE ADDRESS, WRITE
with the following:
MOV A,#0B2H ; DEVICE IDENTIFIER, SLAVE ADDRESS, WRITE
下面是在地址“1077”DIV寄存器處讀取DS000的示例。
LCALL START2WIRE ; 2-WIRE START
MOV A,#0B0H ; DEVICE IDENTIFIER, SLAVE ADDRESS, READ
LCALL WRITEBITS ; SEND COMMAND BYTE
LCALL ACKSLAVEWRITE ; CHECK FOR SLAVE ACKNOWLEDGE
MOV A,#01H ; READ DIVREG COMMAND
LCALL WRITEBITS ; SEND COMMAND BYTE
LCALL ACKSLAVEWRITE ; CHECK FOR SLAVE ACKNOWLEDGE
LCALL START2WIRE ; REPEATED 2-WIRE START
MOV A,#0B1H ; DEVICE IDENTIFIER, SLAVE ADDRESS, READ
LCALL WRITEBITS ; SEND COMMAND BYTE
LCALL ACKSLAVEWRITE ; CHECK FOR SLAVE ACKNOWLEDGE
LCALL READBITS ; READ DATA FROM DS1077 A
MOV DIVDATAMSB,A ; SAVE MUX MSB TO A VARIABLE
LCALL ACKSLAVEREAD ; ACK SLAVE SO WE CAN READNEXTBYTE
LCALL READBITS ; READ DATA FROM DS1077 A
MOV DIVDATALSB,A ; SAVE MUX LSB TO A VARIABLE
;LCALL ACKSLAVEREAD; NO ACK - NO MORE TO READ
LCALL STOP2WIRE ; 2-WIRE STOP
-
CMOS
+關注
關注
58文章
5621瀏覽量
234497 -
振蕩器
+關注
關注
28文章
3758瀏覽量
138505 -
微處理器
+關注
關注
11文章
2221瀏覽量
81984 -
時鐘
+關注
關注
10文章
1673瀏覽量
130963 -
DS1077L
+關注
關注
0文章
2瀏覽量
5082
發布評論請先 登錄
相關推薦
評論