Выбор правильного генератора для вашего микроконтроллера
Внутренний или внешний? Кварц или керамика? Кварцевый генератор или кремниевый генератор? Так много вариантов тактовой синхронизации... какой из них подойдет для вашего проекта?
Варианты генерирования тактового сигнала
Каждому микроконтроллеру нужен источник тактового сигнала. Процессор, шина памяти, периферия – тактовые сигналы находятся внутри микроконтроллера. Они определяют скорость, с которой процессор выполняет инструкции, скорость передачи сигналов по последовательной связи, количество времени, необходимое для выполнения аналого-цифрового преобразования, и многое другое.
Всё это тактирующее действие приводит к источнику тактового сигнала, а именно к генератору. Поэтому вам необходимо убедиться, что ваш генератор сможет поддерживать любую производительность, которую вы ожидаете от своего микроконтроллера. Однако, в то же время некоторые варианты генераторов более сложны или дороги, по сравнению с другими. Поэтому ваш выбор генератора должен также основываться на важности снижения затрат и сложности, когда это возможно.
Существует довольно много способов формирования тактового сигнала для микроконтроллера. Техническое описание для вашего конкретного устройства должно содержать достаточно много информации о том, какие типы генераторов вы можете использовать, и как реализовать их таким образом, чтобы это было совместимо с аппаратным обеспечением устройства. В данной статье основное внимание будет уделено преимуществам и недостаткам различных источников тактовых импульсов, чтобы вы могли осмысленнее сделать выбор среди вариантов генераторов, описанных в техническом описании на ваш микроконтроллер.
Итак, давайте начнем со списка, а затем обсудим каждый вариант:
- внутренний:
- обычно (насколько я знаю, всегда) схема резистор-конденсатор;
- петля фазовой автоподстройки частоты с дальнейшим умножением частоты;
- внешний:
- генератор на CMOS логике;
- кварцевый резонатор;
- керамический резонатор;
- резистор-конденсатор;
- только конденсатор.
Внутренние генераторы: принцип KIS
Я сторонник принципа KIS («Keep it simple», «не усложняй»), следовательно, я высоко ценю внутренние генераторы и призываю вас использовать внутренний генератор, когда это возможно. Внешние компоненты не требуются. Вы можете смело предположить, что частота соответствует выбранной, поскольку генератор был разработан теми же людьми, что всё остальное в микроконтроллере. Кроме того, основные технические характеристики – например, начальная точность, коэффициент заполнения (скважность), зависимость от температуры – (будем надеяться) указаны непосредственно в техническом описании.
Основным недостатком внутренних генераторов является малые точность и стабильность частоты. Частота зависит от значений пассивных компонентов, составляющих схему генератора, а допуски для значений этих пассивных компонентов не особенно жесткие. Кроме того, на емкость и сопротивление влияет температура окружающей среды, поэтому внутренние RC-генераторы подвержены температурному дрейфу, то есть изменения температуры приводят к изменениям частоты.
По моему опыту, многие приложения могут терпеть недостатки внутреннего генератора, особенно когда частота была откалибрована на заводе. В старых микроконтроллерах частота внутреннего генератора может иметь допуск до ±20%. Однако более новое устройство может дать вам точность ±1,5% (или лучше), что достаточно точно для связи по RS-232 и даже (в сочетании со схемой восстановления тактового сигнала) для USB.
Другим способом расширения возможностей внутреннего генератора является ручная «подстройка» – если у вашего микроконтроллера есть регистр подстройки/калибровки, вы можете регулировать частоту, изменяя значение в этом регистре. Это очень практичный метод для небольших проектов: просто измерьте тактовую частоту с помощью осциллографа или частотомера, а затем, соответствующим образом, подстройте генератор.
Разновидностью внутреннего генератора является использование петли фазовой автоподстройки частоты (ФАПЧ, PLL). ФАПЧ позволяет низкокачественному высокочастотному внутреннему генератору извлекать выгоду из стабильности и точности внешнего генератора. В целом, ФАПЧ не помогает вам избежать внешних компонентов, поскольку для нее требуется эталонный тактовый сигнал, который обычно получают с помощью кварцевого резонатора. Тем не менее, если у вас где-то на плате есть высококачественный тактовый сигнал, но вы не хотите использовать его для микроконтроллера, потому что он слишком медленный, вы можете использовать PLL, чтобы умножить этот тактовый сигнал до приемлемой частоты.
Генератор на CMOS логике
Другой простой способ синхронизации – это так называемый «генератор CMOS логике», который подпадает под категорию «из-за отсутствия лучшего термина». «Генератор CMOS логике» – расплывчатый (хотя и удобный) способ обращения к любому тактовому сигналу, создаваемому каким-либо другим компонентом на плате. Генератор CMOS логике – это отличный вариант, если в вашем проекте уже есть генератор тактового сигнала с 1) подходящей частотой и 2) электрическими характеристиками, совместимыми с входной CMOS схемой тактового сигнала микроконтроллера. Однако часто это не так, поэтому давайте рассмотрим два варианта формирования тактовых импульсов на CMOS логике.
Во-первых, это «кварцевый генератор». Сейчас самое время указать, что кварцевый резонатор – это не генератор; скорее, это центральный компонент схемы кварцевого генератора, который может выглядеть примерно так:
Кварцевые генераторы – это удобные устройства, которые состоят из кварцевого резонатора и дополнительной схемы, необходимой для генерирования стандартного цифрового тактового сигнала. Таким образом, вы получаете стабильность и точность кварца, не беспокоясь о нагрузочной емкости и тщательности компоновки печатной платы, необходимой для обеспечения надежной работы микроконтроллера с отдельным кварцевым резонатором.
Второй вариант – «кремниевый генератор». Этот термин относится к микросхемам генераторов, которые не основаны на кварцевых или керамических резонаторах. Эти устройства универсальны и просты в использовании, и они могут быть довольно точными. Например, для серии LTC6930 от Linear Tech требуется только один блокировочный конденсатор, а подавляющее большинство моделей таких микросхем обеспечивают точность номинальной частоты в пределах 0,05%:
Кремниевые генераторы более надежны, чем кварцевые и керамические резонаторы, особенно в суровых условиях, подверженных ударам или вибрации. Но они дороже.
Кварцевые и керамические резонаторы
Если вам нужна действительно высокая точность и стабильность без дополнительных затрат на микросхему генератора на основе кварцевого резонатора, выбирайте вариант с одиночным кварцевым резонатором. На рынке широко доступны компоненты с допуском менее 20 миллионных долей (т.е. 0,002%). Схема генератора, показанная выше, частично интегрирована в микроконтроллеры, которые поддерживают конфигурацию с отдельным кварцем; вам нужно будет только обеспечить правильные нагрузочные конденсаторы. Общая емкость нагрузки (Cнагр.общ.) указывается в техническом описании на кварцевый резонатор, а нагрузочные конденсаторы выбираются следующим образом:
\[C_{нагр.общ.} = {C_{нагр.1} \cdot C_{нагр.2} \over C_{нагр.1} + C_{нагр.2}} + C_{пар.}\]
где Cпар. представляет любую паразитную емкость. Этот расчет на практике довольно прост: выберите разумное значение для Cпар. (скажем, 5 пФ), вычтите его из Cнагр.общ., и затем умножьте результат на два. Таким образом, если техническое описание указывает нагрузочную емкость 18 пФ, мы имеем
\[C_{нагр.1} = C_{нагр.2} = (18пФ - 5пФ) \cdot 2 = 26 пФ\]
Керамические резонаторы менее точны, чем кварцевые; допуски обычно составляют от 1000 до 5000 милилонных долей. Они могут сэкономить вам несколько центов, если вам не нужна точность кварца. Но, на мой взгляд, главное преимущество заключается в том, что вы можете получить керамические резонаторы со встроенными нагрузочными конденсаторами.
Последний и наименее распространенный...
Существует не так много ситуаций, когда требуется генератор на внешних резисторе-конденсаторе или только на конденсаторе. Если по какой-то причине вам не подходят варианты внешних генераторов, рассмотренные выше, выбирайте микроконтроллер с внутренним генератором и используйте его. Однако, если вы полны решимости откопать один или два пассивных компонента из своей коробки запчастей, обратитесь к техническому описанию микроконтроллера за инструкциями по подключению и проектированию схемы генератора. Ниже показаны примеры подключения компонентов, взятые из технического описания на микроконтроллеры C8051F12x – 13x от Silicon Labs:
И вы можете обратиться к странице 190 этого же технического описания для получения информации о выборе значений компонентов.
Заключение
Надеюсь, что теперь вы знаете достаточно, чтобы в следующий раз, когда вам нужно будет выбрать генератор для микроконтроллера, принять обоснованное и уверенное решение. Вот мои рекомендации в двух словах:
- используйте внутренний генератор, когда это возможно;
- используйте кремниевый генератор, если его точность адекватна, а стоимость приемлема – в противном случае, используйте кварцевый резонатор.