Внутренний или внешний генератор

22

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

SimonBarker
источник
« Почему иногда требуется внешний кристалл, даже если MCU имеет внутренний процессор? » Тот факт, что MCU имеет внутренний процессор, почти не имеет отношения к тому, почему используются внутренние или внешние часы. Вы путаете / путаете две разные проблемы?
gbulmer
Это может помочь вам полностью понять microcontrollerslab.com/oscillator-types-microcontrollers
Билал Малик

Ответы:

33

Как уже говорили другие, точная частота и стабильность частоты являются причинами использования внешнего керамического резонатора или кристалла. Резонатор в несколько раз точнее внутреннего RC-генератора и достаточно хорош для связи UART. Кристалл гораздо точнее и необходим, если вы используете другие типы связи, такие как CAN, USB или Ethernet.

Другая причина внешнего кристалла - выбор частоты. Кристаллы имеют широкий диапазон частот, в то время как внутренний генератор обычно имеет одну частоту с возможностью выбора 4x PLL. Некоторые новые 24-битные PIC с ядрами имеют как множитель, так и делитель в цепи тактовых импульсов, поэтому вы можете выбирать широкий диапазон частот от частоты одного внутреннего генератора.

Конечно, существуют различные приложения, которые по своей природе требуют точной частоты или времени, отличных от связи. Время - это свойство электроники, которое мы можем измерить наиболее точно дешево, поэтому иногда проблема превращается в измерение времени или генерацию импульсов с точной синхронизацией.

Тогда есть приложения, которые требуют некоторой долгосрочной синхронизации с другими блоками. Осциллятор 1% будет отключен более чем на 14 минут в день, если его использовать в качестве основы для часов реального времени. Точное долгосрочное время также может потребоваться без необходимости знать в реальном времени. Например, предположим, что вы хотите, чтобы несколько устройств с низким энергопотреблением просыпались один раз в час, чтобы обмениваться данными в течение нескольких секунд, а затем возвращаться в режим сна. Кристалл на 50 частей на миллион (очень легко получить) будет отключен не более чем на 180 мс в час. Хотя 1% RC генератор может быть выключен на 36 секунд. Это добавило бы значительную своевременность и, следовательно, требования к питанию устройствам, которые должны были общаться только в течение нескольких секунд каждый час.

Олин Латроп
источник
1
Не по теме, но я подумал, что CANbus спроектирован так, чтобы быть достаточно надежным, чтобы обрабатывать изменения тактовых частот между узлами. Я неправильно понимаю?
Стивен Коллингс
1
@Remiel: CAN имеет условия для синхронизации узлов, несмотря на некоторую разницу тактовых частот. Узлы все еще должны быть достаточно близко. В большинстве случаев вам нужен как минимум керамический резонатор в каждом узле.
Олин Латроп
24
  1. Точность. Внутренние часы не точные, могут быть подвержены шуму.

  2. Температурно-независимая точность. Типичные генераторы могут сильно различаться. Специальные генераторы с температурной компенсацией могут быть необходимы при низких или высоких температурах, или если температура сильно меняется.

  3. Скорость. Внутренние генераторы могут не достигать максимальной скорости IC. Для этого могут понадобиться внешние.

  4. Напряжение. Скорость внутреннего таймера может зависеть от напряжения, на котором он работает.

  5. Нужно несколько часов. Некоторые приложения хотят использовать общий генератор.

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

Вдобавок к моей голове, ATMEGA 328, который использует Arduino, требует внешнего кристалла на 5 В для максимальной скорости. Версия Lily Pad работает на частоте 8 МГц на внутреннем генераторе, потому что она ограничена на 3,3 В. Пусковая панель MSP430 Value Line ограничена 10 МГц при 3 В, 8 при 2,5 В.

проезжий
источник
10
Пример точности: для USB нужны точные часы. Микросхемы PIC18F2550 могут генерировать практически любую тактовую частоту, но это слишком плохо для USB. Когда я попробовал это, каждые 10-20 секунд происходило отключение. Этого не произошло с внешним генератором. Между тем, у них есть PIC18F25k50, который может синхронизировать свои часы с сигналом USB и больше не требует внешнего генератора для USB.
Sweber
1
Просто чтобы быть педантичным, внутренние 8 МГц тактовые частоты представляют собой RC-генератор, а не кристалл, поэтому его низкая точность.
Остин
@austin фиксированный комментарий.
Прохожий
13

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

Но большинство современных mcu: s имеет довольно стабильный внутренний osc, поэтому я думаю, что это было большим вопросом пару лет назад. Также появляется все больше и больше способов обрезать внутренний и компенсировать температурный дрейф (и т. Д.).

С другой стороны, есть и другие способы убедиться, что вы синхронизированы, в некоторых странах стабильность частоты в сети составляет 50 Гц ± 0,01 Гц, а в других местах, таких как Швеция, на самом деле есть ± 0,001 Гц, и я видел проекты, использующие это для вещи в синхронизации. И тогда вы больше не зависите от mcu freq и можете использовать внутренний. Но это немного тема :)

Johan
источник
3
Обратите внимание, что эти значения частоты сети являются долгосрочной стабильностью. Это нормально, чтобы держать время точно в течение недель или месяцев, но в течение короткого периода (часов) у вас могут возникнуть серьезные отклонения. Однако вряд ли вам когда-нибудь придется настраивать время на цифровых часах.
Stevenvh
Хороший вопрос @stevenvh, также обратите внимание, что есть и другие источники, которые также могут быть использованы для проверки долгосрочной стабильности. У систем gps и gsm очень хорошие часы, но их сложнее использовать.
Йохан
3
хотя есть много других приложений, которым это требуется, есть одно, которое определенно вызывает много проблем без точной временной базы - последовательная связь.
JustJeff
Я не знаю никакой стабильности частоты, которая не была бы выше с внешним кварцевым кристаллом. Вы не получите точность менее 0,1% с кремниевым генератором.
Джейсон С
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, что делает его таким чувствительным?

NickHalden
источник
Основным требованием для UART является то, что приемник производит выборку каждого бита, пока он действителен. В идеале, приемник должен замечать точный момент, когда прибыл стартовый бит, и дискретизировать данные точно 1,5 раза позже, затем 2,5, 3,5 и т. Д. До 8,5 раза позже. На практике обычно наблюдается некоторый спад, когда приемник обнаруживает стартовый импульс, и после этого может быть больше спада. Например, можно попытаться получить 2400 бод, используя процессор, выполняющий 8192 инструкции в секунду ....
суперкат
Это можно сделать, если время передачи идеально чистое, но выборка не будет выполняться с точными интервалами в 417 секунд. Вместо этого это произойдет с некоторыми интервалами 366us и некоторые из 488us. Когда приемник «требователен», это часто означает, что он осуществляет выборку данных гораздо раньше или позже, чем когда это необходимо, но в то время, когда идеальный передатчик будет выводить ожидаемый бит данных.
суперкат
@supercat Почему они когда-либо проектировали это, чтобы пробовать раньше, чем позже? Кажется, что выборка на .5, как вы описали, всегда будет лучше. Вот как я реализовал свое программное обеспечение UART пару лет назад ... мне даже не пришло в голову сделать это каким-либо другим способом. Это просто учитывает большую погрешность на передатчике.
NickHalden
@JGord: Если сэмплирование контролируется часами, которые намного быстрее, чем скорость передачи данных, все замечательно, но это не всегда так. Предположим, например, что кто-то пытался получить 115 200 бод, используя 6502 с тактовой частотой 1,0 МГц и без UART. Цикл, ожидающий стартовый бит, займет 7 мксек, а возможности опроса запланированы с интервалом в 1 мкс. Существует неопределенность в 8 с, когда 6502 будет опрашивать бит, но поскольку биты имеют длину 8,6, можно успешно получать данные, если ...
суперкат
... скорость передачи была точной, время нарастания и спада было равномерным и симметричным, и никакого другого дрожания не было. Я не знаю о плате Teensy, но я не удивлюсь, если бы она использовала программное обеспечение UART, чтобы вывести контроллер за пределы его обычных возможностей.
суперкат
1

Внешние кварцевые генераторы более точны, чем внутренние часы, и их следует использовать, когда требуется точная синхронизация. Иногда, чтобы сэкономить деньги, дизайнеры используют внутренние.

Махмуд Хоссейнипур
источник
2
Это не добавляет ничего к существующим ответам.
Адам Хаун