題:
內部或外部振盪器
SimonBarker
2011-06-15 13:16:49 UTC
view on stackexchange narkive permalink

我總是使用圖片所具有的內部振盪器,因為我從未發現需要以高於8 MHz的頻率運行任何東西(這是我使用的圖片能夠達到的最快速度)。除了高於8 MHz之外,是否還有其他原因意味著我應該使用外部振盪器?對我來說,似乎錯了另一件事,但我很想听聽別人的所作所為。

“ *為什麼即使MCU具有內部CPU,有時也需要外部晶振?*” MCU具有內部CPU的事實與使用內部或外部時鐘的原因幾乎沒有關係。您是否在混淆/混淆兩個不同的問題?
它可以幫助您完全了解http://microcontrollerslab.com/oscillator-types-microcontrollers/
七 答案:
Olin Lathrop
2011-06-15 17:47:16 UTC
view on stackexchange narkive permalink
正如其他人所說,準確的頻率和頻率穩定性是使用外部陶瓷諧振器或晶體的原因。諧振器的精度比內部R-C振盪器高出幾倍,並且足以用於UART通信。晶體要精確得多,如果要進行其他類型的通信(例如CAN,USB或以太網),則是必需的。

使用外部晶體的另一個原因是頻率的選擇。晶體具有很寬的頻率範圍,而內部振盪器通常是一個頻率,可以選擇啟用4x PLL。一些較新的24位核心PIC在時鐘鏈中同時具有乘法器和分頻器,因此您可以從單個內部振盪器頻率中獲得多種頻率。

當然,各種應用固有地需要精確的頻率。或通訊以外的時間。時間是電子產品中可以最便宜地進行最精確測量的屬性,因此有時問題會轉變為測量時間或以準確的時序產生脈沖之一。

然後是一些需要與之進行長期同步的應用其他街區。如果將1%的振盪器用作實時時鐘的基礎,則每天將關閉14分鐘以上。可能需要準確的長期時間,而不必知道實時時間。例如,假設您希望一堆低功率設備每小時喚醒一次,以交換數據幾秒鐘,然後再進入睡眠狀態。一個50ppm的晶體(非常容易獲得)在一小時內將關閉不超過180ms。不過,一個1%的R-C振盪器可能會關閉36秒。這將增加大量的開機時間,並因此對每小時僅需要通信幾秒鐘的設備的功率要求。

偏離主題,但我認為CANbus的設計足夠強大,可以處理節點之間時鐘頻率的變化。我誤會了嗎
@Remiel: CAN可以為節點提供同步,儘管時鐘頻率存在一些差異。節點仍需要合理關閉。在大多數情況下,基本上每個節點至少需要一個陶瓷諧振器。
Passerby
2015-12-08 15:11:41 UTC
view on stackexchange narkive permalink
  1. 精度。內部時鐘不精確,可能會受到噪聲的影響。

  2. 與溫度無關的精度。典型的振盪器變化很大。在低溫或高溫應用中,或者溫度變化劇烈時,都可能需要專用的溫度補償振盪器。

  3. 速度。內部振盪器可能無法達到IC的最高速度。為此可能需要外部的。

  4. 電壓。內部計時器的速度可能取決於其運行電壓。

  5. 需要多個時鐘。一些應用程序希望共享一個振盪器。

  6. 內部時鐘可能不容易使用的特殊應用。為了保持時間,內部時鐘的分頻可能比向其扔一個廉價的31 kHz時鐘晶體更難。

  7. ol>

    在我的頭頂上,arduino使用的ATMEGA 328需要一個5V的外部晶體以使其達到最大速度。百合墊版本在內部振盪器上以8 MHz運行,因為它限於3.3v。 MSP430 Value Line啟動板在3V時限制為10 MHZ,在2.5V時限制為8 MHZ。

精度示例:USB需要精確的時鐘。Microchip PIC18F2550可以在內部產生幾乎任何時鐘速度,但是對於USB而言,其精度太差了。當我嘗試時,每10到20秒就會斷開一次連接。使用外部振盪器不會發生這種情況。同時,它們具有PIC18F25k50,可以將其時鐘與USB信號同步,並且不再需要USB的外部振盪器。
只是為了講究技巧,內部的8MHz時鐘是一個RC振盪器,而不是晶體,因此其準確性很差。
@austin固定評論。
Johan
2011-06-15 13:46:51 UTC
view on stackexchange narkive permalink

外部穩定器的頻率穩定性更高。因此,如果您有一個真正依賴於單片機頻率的應用程序,那麼您可能需要使用一個外部單片機。

但是大多數現代的mcu:s都具有相當穩定的內部osc,因此我認為這曾經幾年前是一個更大的問題。還有越來越多的方法來修整內部電路,並補償溫度漂移(等)。

另一方面,還有其他方法可以確保您保持同步,在某些國家/地區,電網的頻率穩定度為50Hz±0.01Hz,而其他地方(如瑞典)實際上為±0.001Hz,而已經看到項目使用此工具使事情保持同步。然後,您不再依賴於單片機頻率,而可以使用內部的頻率了。但這只是一個話題:)

請注意,這些電源頻率數字是*長期*穩定性。可以在數週或數月內準確地保留時間,但是在短時間內(數小時),您可能會遇到嚴重偏差。但是,您幾乎不必調整任何廉價數字時鐘上的時間。
@stevenvh的好處,還請注意,還有其他來源也可用於驗證長期穩定性。 gps和gsm系統都有很好的時鐘,但是使用它們要復雜得多。
儘管還有許多其他應用程序需要使用它,但是有一個應用程序專門導致很多問題,這些問題沒有準確的時基-串行通信。
我不知道任何頻率穩定性,如果使用外部石英晶體,則不會*更高。矽振盪器不會獲得低於0.1%的精度。
@Jason外部osc總是更穩定,問題是何時/是否需要額外的穩定性? Olin Lathrop在串行通信方面有兩個很好的例子。
@Johan-DCF77 / WWVB的精度與GPS或GSM一樣,並且更易於使用(1Hz心跳)
@stevenvh我認為DCF77是那些無線電時鐘中使用的時鐘,我知道DCF77僅在房屋的某些部分有信號。因此,是否可以使用它取決於您在世界上的位置。但是+1很酷
@Johan:那麼為什麼不將“外部設備的頻率穩定性有時會更高”編輯為“外部設備的頻率穩定性會更高”呢?
@Johan-我在公寓的任何地方都可以接收DCF77信號,我不能說GPS。但是比利時比瑞典離法蘭克福更近了。 (順便說一句,您必須將磁性天線垂直於法蘭克福方向放置)
@stevenvh我認為您可以從維基百科http://upload.wikimedia.org/wikipedia/commons/b/b4/Dcf_weite.jpg接收到此地圖上的第二個圓圈
@Johan-選擇的發射器功率(和位置)可以使您在整個歐洲大部分地區擁有良好的覆蓋範圍,因此看起來可以達到[2000 km](http://www.timetools.co.uk/support/ dcf-signal-coverage.htm)。如果您在基律納(Kiruna),可能會收到不好的接待:-)。儘管我聽說過在7,000公里外的巴基斯坦卡拉奇偶爾會接待的消息(!)
Martin
2011-06-15 16:24:51 UTC
view on stackexchange narkive permalink

頻率穩定性是主要的穩定性,特別是對於高速串行通信。但是,由於時鐘分頻器為您提供的選擇有限,因此偶爾也需要以似乎奇怪的頻率獲得準確的波特率的晶體。

NickHalden
2011-06-15 19:04:45 UTC
view on stackexchange narkive permalink

我實際上遇到了一種情況,其中1%對於UART來說不夠還不夠。

如果你們中有人聽說過Teensy ++ v1.0微控制器開發板,它具有非常敏感的UART。我將主機波特設置為115200,並將其設置為115200,最長的時間無法弄清為什麼它無法正確讀取數據。原來我的房東正在發送接近114300的波特率。 (115200-114300)/ 115200 =〜0.9%誤差我在兩個不同的MCU上進行了嘗試,並且它們都可以正常工作。您的芯片沒有必要的驅動電路。

P.S。我想知道是否有人對他們在UART硬件上所做的使它如此敏感的低級設計選擇有任何見識?

UART的基本要求是,接收器在有效時對每個位進行採樣。理想情況下,接收器會注意到起始位到達的確切時刻,並在1.5個位次之後精確地對數據進行採樣,然後在8.5個位次之後精確進行2.5、3.5等的採樣。實際上,當接收器檢測到起始脈衝時,通常會有一些斜率,此後可能會有更多的斜率。例如,人們可能會嘗試使用每秒運行8,192條指令的處理器來接收2400波特...。
如果發送時序完全乾淨,則可以執行此操作,但是不會在精確的417usec間隔內進行採樣。相反,它將以366us和488us的間隔發生。當接收器“挑剔”時,這通常意味著它要比應該接收的數據早或晚採樣數據,但此時理想的發射器將輸出預期的數據位。
@supercat為什麼他們會設計得早於採樣?似乎像您描述的那樣以.5採樣總是最好的。幾年前,這就是我實現軟件UART的方式……我什至沒有想到要以其他方式實現它。這只是允許發射機上的最大誤差容限。
@JGord:如果採樣是由一個比波特率快得多的時鐘控制的,則情況雖然不錯,但並非總是如此。例如,假設有人試圖使用運行在1.0MHz且沒有UART的6502接收115,200波特。等待起始位的循環將花費7us,並且輪詢機會的間隔為1us。關於6502何時輪詢某個位,存在8us的不確定性,但是由於位的長度為8.6us,因此如果...
...傳輸速度精確,上升和下降時間均勻一致,並且沒有其他抖動。我不了解Teensy板,但是如果它使用軟件UART將控制器推超出其正常功能,我不會感到驚訝。
@supercat我非常確定它是一個硬件UART,它基於AT90USB646芯片,該芯片肯定具有一個硬件UART(實際上是em的2)。另外,它的時鐘是16 MHz ...但是無論如何,我都知道會出現問題。在這種情況下,似乎不應該這樣做。真有趣。
@JGord:即使設備具有硬件UART,也通常將其限制為時鐘速率的某些整數倍。有時人們使用軟件UART來加快速度。人們已經使用6502的1.0227MHz頻率發送和接收了115,200波特(例如Apple [])。接收軟件無法對數據進行任何處理,而是對其進行緩衝(發送方必須在每個數據包之後等待),但是即使這樣,115,200也比57,600好。
Mahmoud Hosseinipour
2015-12-08 14:26:36 UTC
view on stackexchange narkive permalink

外部晶體振盪器比內部時鐘更為精確,應在需要精確定時的情況下使用它們。有時為了省錢,設計師使用內部的。

這似乎沒有為現有答案添加任何內容。
Marcelo Coronel
2020-06-23 23:32:40 UTC
view on stackexchange narkive permalink

與振盪器有關的另一個未提及的問題是功耗。但這並沒有太大的區別。 查看PIC16F628A數據表中的下一張圖表:

enter image description here

您首先會注意到,頻率越高,功耗就越大。它可以在低功耗應用中有所作為。

關於內部與外部的疑問,在相同的頻率下,INTOSC的功耗比XT多,大約多30%。

此信息是否相關,取決於應用程序。



該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
Loading...