Внутрішній або зовнішній генератор


22

Я завжди використовую внутрішній осцилятор, який є у фотографій, оскільки я ніколи не знаходив необхідності запускати що-небудь на більш високій частоті, ніж 8 МГц (що найшвидше, ніж фотографії, які я використовую, як правило, можуть іти). Чи є якісь причини, окрім перевищення 8 МГц, що означають, що я повинен використовувати зовнішній генератор? Мені здається, ще одна річ зі мною пішла не так, але мені було б цікаво почути, що роблять інші.


" Чому іноді виникає потреба у зовнішньому кристалі, хоча MCU має внутрішній процесор? Факт, що MCU має внутрішній процесор, майже не має нічого спільного з тим, чому використовується внутрішній або зовнішній годинник. Ви плутаєте / плутаєте дві різні проблеми?
gbulmer

Це може допомогти вам зрозуміти повністю microcontrollerslab.com/oscillator-types-microcontrollers
Bilal Malik

Відповіді:


33

Як говорили інші, точна стабільність частоти і частоти є причиною використання зовнішнього керамічного резонатора або кристала. Резонатор в кілька разів точніший за внутрішній RC-генератор і досить хороший для зв'язку UART. Кристал набагато точніший і необхідний, якщо ви здійснюєте деякі інші види зв'язку, такі як CAN, USB або ethernet.

Ще одна причина зовнішнього кристала - вибір частоти. Кристали бувають у широкому діапазоні частот, тоді як внутрішній генератор, як правило, одна частота з можливістю вибору 4х PLL. Деякі новіші 24-бітові ядерні ПІК мають і множник, і дільник в тактовій ланцюзі, так що ви можете вражати широкий вибір частот від однієї внутрішньої частоти генератора.

Звичайно, існують різні програми, які по суті потребують точної частоти чи часу, крім зв’язку. Час - це властивість електроніки, яку ми можемо виміряти найточніше дешево, тому іноді проблема перетворюється на режим вимірювання часу або створення імпульсів з точним тимчасовим часом.

Потім є додатки, які потребують певної тривалої синхронізації з іншими блоками. Осцилятор на 1% буде вимкнено більше 14 хвилин на день, якщо він буде використаний в якості основи для годинника в режимі реального часу. Точний тривалий час може також знадобитися, не знаючи реального часу. Наприклад, припустимо, що ви хочете, щоб купа пристроїв малої потужності прокидалася один раз на годину, щоб обмінюватися даними протягом декількох секунд, а потім повертатися спати. Кристал 50ppm (отримати його дуже легко) вийде не більше 180 мс за годину. 1% RC генератор може вимкнутись за 36 секунд. Це додало б значних вчасно та, отже, вимог до енергії для пристроїв, яким потрібно спілкуватися лише пару секунд щогодини.


1
Поза темою, але я вважав, що CANbus був розроблений таким чином, щоб бути достатньо надійним для обробки змін частоти тактових частот між вузлами. Я нерозумію?
Стівен Коллінгс

1
@Remiel: CAN має положення для синхронізації вузлів, незважаючи на деяку різницю частоти тактових частот. Вузли все ще повинні бути досить близько. У більшості випадків вам в основному потрібен принаймні керамічний резонатор у кожному вузлі.
Олін Латроп

24
  1. Точність. Внутрішні годинники не точні, на них може впливати шум.

  2. Точність незалежна від температури. Типові осцилятори можуть сильно змінюватися. Спеціальні осцилятори, що компенсують температуру, можуть знадобитися для низьких або високих температур, або якщо температура різко змінюється.

  3. Швидкість. Внутрішні генератори можуть не досягати найвищої швидкості ІМС. Для цього можуть знадобитися зовнішні.

  4. Напруга. Швидкість внутрішнього таймера може залежати від напруги, на яку він працює.

  5. Потрібно кілька годин. Деякі програми хочуть ділитися осцилятором.

  6. Спеціальні програми, де внутрішній годинник не може бути легко використаний. Розділити внутрішній тактовий годинник може бути складніше, ніж кинути на нього дешевий 31 кГц годинний кристал для зберігання додатків.

На вершині моєї голови ATMEGA 328, який використовує ардуїно, вимагає зовнішнього кристала на 5 В для його максимальної швидкості. Версія лілійної колодки працює на 8 МГц, на внутрішньому генераторі, оскільки вона обмежена на 3,3 В. Пусковий блок MSP430 Value Line обмежений 10 МГц при 3 В, 8 при 2,5 В.


10
Приклад точності: USB потрібен точний годинник. Мікрочіпи PIC18F2550 можуть генерувати досить будь-яку тактову частоту всередині, але точність занадто погана для USB. Коли я спробував це, був відключення кожні 10-20 років. Це не сталося із зовнішнім генератором. Тим часом у них є PIC18F25k50, який може синхронізувати годинник на USB-сигнал і більше не потребує зовнішнього генератора для USB.
помер

1
Щоб бути педантичним, внутрішній тактовий частота 8 МГц - це RC генератор, а не кристал, отже, його низька точність.
Остін

@austin виправлений коментар.
Перехожий

13

Стабільність частоти буде вище при зовнішній. Тому якщо у вас є додаток, який дійсно залежить від mcu freq, можливо, вам доведеться скористатися зовнішнім.

Але у більшості сучасних mcu: s є досить стабільний внутрішній осі, тому я думаю, що це було великим питанням пару років тому. Крім того, існує все більше і більше способів обрізати внутрішній та компенсувати зниження температури (тощо).

З іншого боку, є інші способи переконатися, що ви синхронізовані, в деяких країнах частота стабільності в мережі живлення становить 50 Гц ± 0,01 Гц, а в інших місцях, таких як Швеція, фактично є ± 0,001 Гц, і я бачив проекти, які використовують це для збереження синхронізовані речі. І тоді ви вже не настільки залежні від частоти mcu freq, і можете використовувати внутрішній. Але це трохи теми :)


3
Зауважте, що ці показники частоти електромережі мають довгострокову стабільність. Це нормально, щоб точно тримати час протягом тижнів чи місяців, але за короткий період (години) ви можете відчути серйозні відхилення. Однак навряд чи вам доведеться налаштовувати час на цифровий годинник el cheapo.
stevenvh

@stevenvh хороший момент, також зауважте, що є й інші джерела, які також можуть бути використані для перевірки довгострокової стабільності. І системи gps, і gsm мають дуже гарні годинники, але використовувати їх складніше.
Йоган

3
хоча є багато інших програм, які потребують цього, є одне, яке конкретно викликає безліч проблем без точної часової бази - послідовний зв'язок.
JustJeff

Я не знаю жодної стабільності частоти, яка не була б вищою при зовнішньому кварцовому кристалі. Ви не збираєтеся отримувати нижчу 0,1% точність з кремнієвим осцилятором.
Джейсон S

1
@Johan - DCF77 / WWVB настільки точний, як GPS або GSM, і працювати набагато простіше (серцебиття 1 Гц)
stevenvh

2

Стабільність частоти є основною, особливо для серійних комірок з високою швидкістю. Але це також викликає періодичну потребу в кристалі з начебто непарною частотою, щоб отримати точну швидкість передачі даних, через обмежені можливості, які дають вам подільники годин.


1

Я насправді натрапив на сценарій, коли 1% не було хорошим для UART.

Якщо хтось із вас, хлопці, чув про платформу розробників мікроконтролерів Teensy ++ v1.0, вона має надзвичайно чутливий UART. У мене ход бод був встановлений у 115200, а він встановлений у 115200 і довгий час не міг зрозуміти, чому він не читає дані правильно. Виявляється, мій господар послав ближче до 114300 бод. (115200 - 114300) / 115200 = ~ 0,9% помилка. Я спробував це з двома різними MCU, і вони працювали чудово.

Суть полягає в тому, що незалежно від вашої програми, якщо більша точність тактової частоти приносить користь, вам слід використовувати зовнішній резонатор, кристал або навіть генератор, якщо мікросхема не має необхідної схеми руху.

PS Цікаво, чи хтось має уявлення про те, який низький рівень дизайну він зробив на апаратному забезпеченні UART, який робить його настільки чутливим?


Основна вимога для UART полягає в тому, щоб приймач вибирав кожен біт, поки він дійсний. В ідеалі одержувач помітив би точний момент, коли стартовий біт прийшов, і відібрав дані точно через 1,5 рази, потім 2,5, 3,5 і т.д. до 8,5 біт раз. На практиці зазвичай виникає певна помилка, коли приймач виявляє пусковий імпульс, і після цього може бути більше шалених. Наприклад, можна спробувати отримати 2400 бодів за допомогою процесора, який працює 8,192 інструкцій в секунду ....
supercat

Таку річ можна зробити, якщо час передачі ідеально чистий, але вибірка не відбудеться через точні інтервали 417usec. Натомість це станеться через проміжки 366us та 488us. Коли приймач "прискіпливий", це часто означає, що це вибірки даних набагато раніше або пізніше, ніж коли слід, але в той момент, коли ідеальний передавач виводить очікуваний біт даних.
supercat

@supercat Чому б вони коли-небудь проектували його для вибірки раніше, ніж пізніше? Здається, що вибірки у .5, як ви описали, завжди були б найкращими. Ось так я реалізував своє програмне забезпечення UART пару років тому ... мені навіть не спало на думку зробити це іншим способом. Це просто дозволяє отримати максимальну кількість помилок на передавачі.
NickHalden

@JGord: Якщо вибірку контролює годинник, який набагато швидше, ніж швидкість передачі даних, все чудово, але це не завжди так. Припустимо, наприклад, хтось намагався отримати 115200 бодів, використовуючи 6502, що працює на частоті 1,0 МГц, і без UART. Цикл, який чекає на початковий біт, займе 7us, а можливості опитування заплановані з інтервалом 1us. Існує невпевненість у 8us щодо того, коли 6502 трохи опитатиметься, але оскільки біти довжиною 8,6us, можна було б успішно отримувати дані, якщо ...
supercat

... швидкість передачі була точною, часи підйому та падіння були рівномірними та симетричними, а іншого тремтіння не було. Я не знаю про плату Teensy, але я не був би здивований, якби вона використовувала програмне забезпечення UART для витіснення контролера за рамки його нормальних можливостей.
supercat

1

Зовнішні кришталеві кристалічні осцилятори є більш точними, ніж внутрішні годинники, і їх слід використовувати, коли потрібні точні моменти часу. Іноді для економії коштів дизайнери використовують внутрішні.


2
Це, здається, не додає нічого до існуючих відповідей.
Адам Хаун
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.