ออสซิลเลเตอร์ภายในหรือภายนอก


22

ฉันมักจะใช้ออสซิลเลเตอร์ภายในที่รูปนั้นมีเพราะฉันไม่เคยพบว่าจำเป็นต้องทำงานอะไรที่ความถี่สูงกว่า 8 MHz (ซึ่งเป็นรูปที่เร็วที่สุดที่ฉันใช้มักจะเป็นไปได้) มีเหตุผลใดบ้างที่นอกเหนือไปจาก 8 เมกะเฮิรตซ์นั่นหมายความว่าฉันควรใช้ออสซิลเลเตอร์ภายนอก? ดูเหมือนว่าจะมีอะไรอีกมากที่จะผิดกับฉัน แต่ฉันสนใจที่จะฟังสิ่งที่คนอื่นทำ


" ทำไมบางครั้งมีความจำเป็นต้องใช้คริสตัลภายนอกแม้ว่า MCU จะมีซีพียูภายใน " ข้อเท็จจริงที่ว่า MCU มีซีพียูภายในแทบไม่มีอะไรเกี่ยวข้องกับสาเหตุที่มีการใช้นาฬิกาภายในหรือภายนอก คุณกำลังทำให้สับสน / สับสนสองประเด็นที่แตกต่างกันอย่างไร
gbulmer

มันอาจช่วยให้คุณเข้าใจmicrocontrollerslab.com/oscillator-types-microcontrollers ได้
Bilal Malik

คำตอบ:


33

ดังที่คนอื่น ๆ พูดไว้ความแม่นยำของความถี่และความเสถียรของความถี่เป็นเหตุผลที่ใช้ตัวสะท้อนความร้อนแบบเซรามิกภายนอกหรือคริสตัล เครื่อง resonator มีความแม่นยำมากกว่าออสซิลเลเตอร์ RC ภายในหลายเท่าและดีพอสำหรับการสื่อสารแบบ UART คริสตัลมีความแม่นยำมากขึ้นและจำเป็นถ้าคุณทำการสื่อสารประเภทอื่นเช่น CAN, USB หรืออีเธอร์เน็ต

เหตุผลอีกประการสำหรับคริสตัลภายนอกคือตัวเลือกความถี่ คริสตัลมีความถี่หลากหลายในขณะที่ออสซิลเลเตอร์ภายในมักเป็นความถี่เดียวโดยอาจมีตัวเลือก 4x PLL ที่เปิดใช้งาน PIC หลัก 24 บิตที่ใหม่กว่าบางตัวมีทั้งตัวคูณและตัวแบ่งในห่วงโซ่นาฬิกาดังนั้นคุณสามารถเลือกความถี่ที่หลากหลายจากความถี่ออสซิลเลเตอร์ภายในเดียว

แน่นอนว่ามีแอปพลิเคชั่นหลากหลายที่ต้องใช้ความถี่หรือกำหนดเวลาที่แม่นยำนอกเหนือจากการสื่อสาร เวลาคือคุณสมบัติในอุปกรณ์อิเล็กทรอนิกส์ที่เราสามารถวัดค่าได้อย่างถูกต้องที่สุดดังนั้นบางครั้งปัญหาจะถูกเปลี่ยนเป็นเวลาหนึ่งในการวัดหรือผลิตพัลส์ด้วยจังหวะที่แม่นยำ

มีแอพพลิเคชั่นที่ต้องการการซิงโครไนซ์ระยะยาวกับบล็อกอื่น 1% oscillator จะถูกปิดโดยเกิน 14 นาทีต่อวันหากใช้เป็นพื้นฐานสำหรับนาฬิกาเรียลไทม์ อาจจำเป็นต้องใช้เวลาในระยะยาวที่แม่นยำโดยไม่ต้องรู้เวลาจริง ตัวอย่างเช่นสมมติว่าคุณต้องการให้อุปกรณ์พลังงานต่ำตื่นขึ้นทุก ๆ ชั่วโมงเพื่อแลกเปลี่ยนข้อมูลสักสองสามวินาทีจากนั้นกลับเข้าสู่โหมดสลีป คริสตัลขนาด 50ppm (หาได้ง่ายมาก) จะถูกปิดไม่เกิน 180ms ในหนึ่งชั่วโมง 1% RC oscillator สามารถปิดได้ภายใน 36 วินาที ซึ่งจะเพิ่มเวลาที่สำคัญและความต้องการพลังงานให้กับอุปกรณ์ที่จำเป็นเท่านั้นในการสื่อสารสองสามวินาทีทุกชั่วโมง


1
นอกหัวข้อ แต่ฉันคิดว่า CANbus ได้รับการออกแบบให้มีความแข็งแกร่งเพียงพอที่จะรองรับความถี่สัญญาณนาฬิการะหว่างโหนด ฉันเข้าใจผิดหรือเปล่า?
Stephen Collings

1
@Remiel: สามารถมีบทบัญญัติสำหรับโหนดที่ยังคงซิงค์แม้ว่าจะมีความแตกต่างของความถี่สัญญาณนาฬิกา โหนดยังคงต้องปิดอย่างสมเหตุสมผล ในกรณีส่วนใหญ่คุณจำเป็นต้องมี resonator เซรามิกอย่างน้อยในแต่ละโหนด
Olin Lathrop

24
  1. ความแม่นยำ นาฬิกาภายในไม่แม่นยำอาจได้รับผลกระทบจากเสียงรบกวน

  2. ความแม่นยำอุณหภูมิอิสระ ออสซิลเลเตอร์ทั่วไปอาจแตกต่างกันอย่างรุนแรง การชดเชยอุณหภูมิแบบพิเศษสามารถใช้ออสซิลเลเตอร์ในการใช้งานที่อุณหภูมิต่ำหรือสูงหรือหากอุณหภูมิแตกต่างกันไป

  3. ความเร็ว. ออสซิลเลเตอร์ภายในอาจไม่ถึงความเร็วสูงสุดของไอซี คนภายนอกสามารถต้องการสิ่งนั้นได้

  4. แรงดันไฟฟ้า. ความเร็วของตัวจับเวลาภายในอาจขึ้นอยู่กับแรงดันไฟฟ้าที่กำลังทำงานอยู่

  5. จำเป็นต้องมีนาฬิกาหลายเรือน แอพพลิเคชั่นบางตัวต้องการแชร์ออสซิลเลเตอร์

  6. แอปพลิเคชั่นพิเศษที่ไม่สามารถใช้นาฬิกาภายในได้อย่างง่ายดาย การแบ่งนาฬิกาภายในอาจจะยากกว่าการโยนนาฬิกาคริสตัลราคาถูกที่ 31 kHz สำหรับการใช้งานในช่วงเวลานั้น

ที่ด้านบนของหัวของฉัน ATMEGA 328 ที่ใช้ Arduino ต้องใช้คริสตัลภายนอกที่ 5V สำหรับความเร็วสูงสุด รุ่นลิลลี่แพดทำงานที่ 8 MHz บนออสซิลเลเตอร์ภายในเนื่องจาก จำกัด อยู่ที่ 3.3v Launchpad Value Line ของ MSP430 จำกัด ไว้ที่ 10 MHZ ที่ 3V, 8 ที่ 2.5V


10
ตัวอย่างสำหรับความแม่นยำ: USB ต้องการนาฬิกาที่แม่นยำ Microchips PIC18F2550 สามารถสร้างความเร็วสัญญาณนาฬิกาได้ค่อนข้างภายใน แต่ความแม่นยำนั้นแย่สำหรับ USB เมื่อฉันลองมันมีการตัดการเชื่อมต่อทุก 10-20s สิ่งนี้ไม่ได้เกิดขึ้นกับออสซิลเลเตอร์ภายนอก ในขณะเดียวกันก็มี PIC18F25k50 ซึ่งสามารถซิงโครไนซ์นาฬิกากับสัญญาณ USB และไม่จำเป็นต้องมีออสซิลเลเตอร์ภายนอกสำหรับ USB อีกต่อไป
sweber

1
นาฬิกา 8MHz ในตัวเป็น RC oscillator ไม่ใช่คริสตัลจึงมีความแม่นยำต่ำ
Austin

@austin แก้ไขความคิดเห็น
Passerby

13

ความเสถียรของความถี่จะสูงขึ้นเมื่อใช้อุปกรณ์ภายนอก ดังนั้นหากคุณมีแอปพลิเคชันที่ขึ้นอยู่กับ mcu freq จริงๆคุณอาจต้องใช้แอพภายนอก

แต่ mcu: s ที่ทันสมัยส่วนใหญ่มี osc ภายในที่ค่อนข้างเสถียรดังนั้นฉันคิดว่านี่เป็นคำถามที่ใหญ่กว่าเมื่อสองสามปีก่อน นอกจากนี้ยังมีวิธีเพิ่มเติมในการตัดขอบภายในและชดเชยการเบี่ยงเบนของอุณหภูมิ (ฯลฯ ฯลฯ )

ในอีกทางหนึ่งมีวิธีอื่น ๆ เพื่อให้แน่ใจว่าคุณได้รับการซิงโครไนซ์ในบางประเทศความเสถียรของความถี่ในการใช้พลังงานคือ 50Hz ± 0.01Hz และที่อื่น ๆ เช่นสวีเดนมีค่า± 0.001Hz และฉันได้เห็นโครงการต่างๆ สิ่งที่อยู่ในซิงค์ จากนั้นคุณจะไม่พึ่งพา mcu freq อีกต่อไปและคุณสามารถใช้ภายในได้ แต่นี่เป็นหัวข้อเล็กน้อย :)


3
โปรดทราบว่าตัวเลขความถี่ไฟเมนเหล่านั้นมีความเสถียรในระยะยาว ไม่เป็นไรที่จะรักษาเวลาอย่างแม่นยำในช่วงสัปดาห์หรือเป็นเดือน แต่ในช่วงเวลาสั้น ๆ (ชั่วโมง) คุณอาจประสบกับการเบี่ยงเบนที่ร้ายแรง คุณแทบจะไม่ต้องปรับเวลาในนาฬิกาดิจิตอล el cheapo เลย
stevenvh

@stevenvh จุดที่ดีโปรดทราบว่ามีแหล่งข้อมูลอื่น ๆ ที่สามารถใช้ในการตรวจสอบความมั่นคงในระยะยาวเช่นกัน ทั้งระบบ gps และ gsm มีนาฬิกาที่ดีมาก แต่มันก็ซับซ้อนกว่าที่จะใช้
Johan

3
แม้ว่าจะมีแอปพลิเคชั่นอื่น ๆ อีกมากมายที่จำเป็นต้องใช้ แต่ก็มีแอปพลิเคชันที่ทำให้เกิดปัญหาจำนวนมากโดยไม่ต้องใช้การสื่อสารแบบอนุกรมฐานเวลาที่แม่นยำ
JustJeff

ฉันไม่รู้ความเสถียรของความถี่ใด ๆ ซึ่งไม่น่าจะสูงกว่านี้ด้วยคริสตัลควอตซ์ภายนอก คุณจะไม่ได้รับความแม่นยำของ sub-0.1% ด้วย silicon oscillator
Jason S

1
@Johan - DCF77 / WWVB มีความแม่นยำเท่ากับ GPS หรือ GSM และทำงานได้ง่ายขึ้นด้วย (การเต้นของหัวใจ 1Hz)
stevenvh

2

ความเสถียรของความถี่เป็นหลักโดยเฉพาะอย่างยิ่งสำหรับการสื่อสารแบบอนุกรมที่ความเร็วสูง แต่นั่นก็ทำให้ความต้องการคริสตัลเป็นครั้งคราวด้วยความถี่คี่ดูเหมือนจะได้รับอัตราการรับส่งข้อมูลที่แน่นอนเนื่องจากตัวเลือกที่ จำกัด ที่ตัวแบ่งนาฬิกาให้คุณ


1

ฉันเจอสถานการณ์จริงแล้วที่ 1% ไม่ดีพอสำหรับ UART

หากพวกคุณคนใดเคยได้ยินบอร์ด dev ของไมโครคอนโทรลเลอร์ Teensy ++ v1.0 แสดงว่ามันมี UART ที่มีความสำคัญมาก ฉันมีโฮสต์ baud ของฉันที่ 115200 และมันตั้งไว้ที่ 115200 และเป็นเวลานานไม่สามารถเข้าใจได้ว่าทำไมมันถึงไม่อ่านข้อมูลอย่างถูกต้อง ปรากฎว่าโฮสต์ของฉันส่งสัญญาณไปที่ 114300 บอด (115200 - 114300) / 115200 = ข้อผิดพลาด 0.9% ฉันลองกับ MCU สองตัวที่แตกต่างกันและพวกเขาก็ทำงานได้ดี

จุดคือ: โดยไม่คำนึงถึงแอปพลิเคชันของคุณหากความแม่นยำของความถี่สัญญาณนาฬิกาเป็นประโยชน์คุณควรใช้เครื่อง resonator ภายนอกคริสตัลหรือแม้แต่ออสซิลเลเตอร์ถ้าชิปของคุณไม่มีวงจรการขับที่จำเป็น

PS ฉันสงสัยว่าใครมีข้อมูลเชิงลึกเกี่ยวกับตัวเลือกการออกแบบระดับต่ำที่พวกเขาทำบนฮาร์ดแวร์ UART ที่ทำให้มันอ่อนไหวมาก?


ข้อกำหนดพื้นฐานสำหรับ UART คือผู้รับรับตัวอย่างแต่ละบิตในขณะที่มันถูกต้อง ตามหลักแล้วผู้รับจะสังเกตเห็นช่วงเวลาที่แน่นอนว่าบิตเริ่มต้นมาถึงและตัวอย่างข้อมูลได้อย่างแม่นยำ 1.5 หนึ่งบิตต่อมาจากนั้น 2.5, 3.5 และอื่น ๆ มากถึง 8.5 บิตต่อมา ในทางปฏิบัติมักจะมีการตกหล่นเมื่อผู้รับตรวจจับชีพจรเริ่มต้นและอาจมีการตกมากขึ้นหลังจากนั้น ตัวอย่างเช่นอาจลองรับ 2400 baud โดยใช้โปรเซสเซอร์ที่รัน 8,192 คำสั่งต่อวินาที ....
supercat

สิ่งนี้สามารถทำได้หากระยะเวลาการส่งสัญญาณสมบูรณ์แบบ แต่การสุ่มตัวอย่างจะไม่เกิดขึ้นในช่วงเวลา 417usec ที่แม่นยำ แต่จะเกิดขึ้นในช่วงเวลา 366us และ 488us เมื่อผู้รับคือ "จู้จี้จุกจิก" สิ่งที่มักจะหมายถึงคือการสุ่มตัวอย่างข้อมูลเร็วกว่าหรือมากเกินกว่าที่ควร แต่ในเวลาที่ตัวส่งสัญญาณในอุดมคติจะส่งออกบิตข้อมูลที่คาดหวัง
supercat

@supercat ทำไมพวกเขาเคยออกแบบตัวอย่างก่อนหน้าในภายหลัง ดูเหมือนว่าการสุ่มตัวอย่างที่. 5 อย่างที่คุณอธิบายไว้จะดีที่สุดเสมอ นั่นเป็นวิธีที่ฉันใช้ซอฟแวร์ของฉัน UART เมื่อสองสามปีที่แล้ว ... ไม่ได้เกิดขึ้นกับฉันที่จะทำอย่างอื่น ที่ช่วยให้เกิดข้อผิดพลาดมากที่สุดบนเครื่องส่งสัญญาณ
NickHalden

@JGord: หากการสุ่มตัวอย่างถูกควบคุมโดยนาฬิกาที่เร็วกว่าอัตราการรับส่งข้อมูลสิ่งต่าง ๆ น่าอัศจรรย์ แต่นั่นก็ไม่ได้เป็นเช่นนั้นเสมอไป ตัวอย่างเช่นสมมติว่ามีคนพยายามรับ 115,200 บอดโดยใช้ 6502 ที่ความเร็ว 1.0MHz และไม่มี UART การวนซ้ำที่รอบิตเริ่มต้นจะใช้เวลา 7us และโอกาสการโพลถูกกำหนดไว้ที่ 1us เป็นระยะ มีความไม่แน่นอนของ 8us ว่าเมื่อใดที่ 6502 จะสำรวจความคิดเห็นเล็กน้อย แต่เนื่องจากบิตมีความยาว 8.6us เราจึงสามารถรับข้อมูลได้สำเร็จถ้า ...
supercat

... ความเร็วในการส่งมีความแม่นยำสูงขึ้นและลดลงเป็นช่วงเวลาที่สม่ำเสมอและสมมาตรและไม่มีความกระวนกระวายใจอื่น ๆ ฉันไม่รู้เกี่ยวกับบอร์ด Teensy แต่ฉันจะไม่แปลกใจหากใช้ UART ซอฟต์แวร์เพื่อผลักดันคอนโทรลเลอร์เกินความสามารถปกติ
supercat

1

ออสซิลเลเตอร์คริสตัลคริสตัลภายนอกนั้นมีความแม่นยำมากกว่านาฬิกาภายในและควรใช้เมื่อจำเป็นต้องใช้เวลาที่แม่นยำ บางครั้งเพื่อประหยัดเงินนักออกแบบก็ใช้เครื่องมือภายใน


2
ดูเหมือนจะไม่เพิ่มอะไรเลยในคำตอบที่มีอยู่
Adam Haun
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.