Я всегда использую внутренний осциллятор, который есть на фотографиях, поскольку я никогда не нуждался в том, чтобы запускать что-либо на более высокой частоте, чем 8 МГц (это самые быстрые изображения, которые я использую, как правило, в состоянии идти). Есть ли какие-то причины, помимо выхода за пределы 8 МГц, которые означают, что я должен использовать внешний генератор? Мне кажется, что еще одна вещь пойдет не так, но мне было бы интересно услышать, что делают другие.
microcontroller
pic
design
oscillator
SimonBarker
источник
источник
Ответы:
Как уже говорили другие, точная частота и стабильность частоты являются причинами использования внешнего керамического резонатора или кристалла. Резонатор в несколько раз точнее внутреннего RC-генератора и достаточно хорош для связи UART. Кристалл гораздо точнее и необходим, если вы используете другие типы связи, такие как CAN, USB или Ethernet.
Другая причина внешнего кристалла - выбор частоты. Кристаллы имеют широкий диапазон частот, в то время как внутренний генератор обычно имеет одну частоту с возможностью выбора 4x PLL. Некоторые новые 24-битные PIC с ядрами имеют как множитель, так и делитель в цепи тактовых импульсов, поэтому вы можете выбирать широкий диапазон частот от частоты одного внутреннего генератора.
Конечно, существуют различные приложения, которые по своей природе требуют точной частоты или времени, отличных от связи. Время - это свойство электроники, которое мы можем измерить наиболее точно дешево, поэтому иногда проблема превращается в измерение времени или генерацию импульсов с точной синхронизацией.
Тогда есть приложения, которые требуют некоторой долгосрочной синхронизации с другими блоками. Осциллятор 1% будет отключен более чем на 14 минут в день, если его использовать в качестве основы для часов реального времени. Точное долгосрочное время также может потребоваться без необходимости знать в реальном времени. Например, предположим, что вы хотите, чтобы несколько устройств с низким энергопотреблением просыпались один раз в час, чтобы обмениваться данными в течение нескольких секунд, а затем возвращаться в режим сна. Кристалл на 50 частей на миллион (очень легко получить) будет отключен не более чем на 180 мс в час. Хотя 1% RC генератор может быть выключен на 36 секунд. Это добавило бы значительную своевременность и, следовательно, требования к питанию устройствам, которые должны были общаться только в течение нескольких секунд каждый час.
источник
Точность. Внутренние часы не точные, могут быть подвержены шуму.
Температурно-независимая точность. Типичные генераторы могут сильно различаться. Специальные генераторы с температурной компенсацией могут быть необходимы при низких или высоких температурах, или если температура сильно меняется.
Скорость. Внутренние генераторы могут не достигать максимальной скорости IC. Для этого могут понадобиться внешние.
Напряжение. Скорость внутреннего таймера может зависеть от напряжения, на котором он работает.
Нужно несколько часов. Некоторые приложения хотят использовать общий генератор.
Специальные приложения, где внутренние часы не могут быть легко использованы. Делить внутренние часы может быть сложнее, чем бросать в них дешевый часовой кристалл с частотой 31 кГц, чтобы сохранить время.
Вдобавок к моей голове, ATMEGA 328, который использует Arduino, требует внешнего кристалла на 5 В для максимальной скорости. Версия Lily Pad работает на частоте 8 МГц на внутреннем генераторе, потому что она ограничена на 3,3 В. Пусковая панель MSP430 Value Line ограничена 10 МГц при 3 В, 8 при 2,5 В.
источник
Стабильность частоты будет выше с внешней. Так что если у вас есть приложение, которое действительно зависит от частоты mcu, то вам может потребоваться использовать внешнее.
Но большинство современных mcu: s имеет довольно стабильный внутренний osc, поэтому я думаю, что это было большим вопросом пару лет назад. Также появляется все больше и больше способов обрезать внутренний и компенсировать температурный дрейф (и т. Д.).
С другой стороны, есть и другие способы убедиться, что вы синхронизированы, в некоторых странах стабильность частоты в сети составляет 50 Гц ± 0,01 Гц, а в других местах, таких как Швеция, на самом деле есть ± 0,001 Гц, и я видел проекты, использующие это для вещи в синхронизации. И тогда вы больше не зависите от mcu freq и можете использовать внутренний. Но это немного тема :)
источник
Стабильность частоты является основной, особенно для последовательной связи на высокой скорости. Но это также вызывает случайную потребность в кристалле с кажущейся нечетной частотой для получения точной скорости передачи из-за ограниченных возможностей, которые дают вам делители тактовых импульсов.
источник
Я действительно сталкивался со сценарием, где 1% не был достаточно хорош для UART.
Если кто-нибудь из вас слышал о плате разработчика микроконтроллера Teensy ++ v1.0, она имеет очень чувствительный UART. У меня была установлена скорость передачи в хосте 115200, а в 115200, и я долгое время не мог понять, почему он неправильно считывает данные. Оказывается, мой хост отправлял ближе к 114300 бод. (115200 - 114300) / 115200 = ошибка ~ 0,9%. Я попробовал это с двумя различными MCU, и они работали хорошо.
Дело в том, что независимо от вашего приложения, если большая точность тактовой частоты является преимуществом, вы должны использовать внешний резонатор, кристалл или даже генератор, если ваша микросхема не имеет необходимой схемы управления.
PS Интересно, есть ли у кого-нибудь понимание того, какой выбор дизайна низкого уровня они сделали на оборудовании UART, что делает его таким чувствительным?
источник
Внешние кварцевые генераторы более точны, чем внутренние часы, и их следует использовать, когда требуется точная синхронизация. Иногда, чтобы сэкономить деньги, дизайнеры используют внутренние.
источник