Задание частоты тактирования Xmega от внешнего генератора

    Данный пример хоть и является одним из простейших, однако для тех, кто только начинает работу на микропроцессорах Xmega может быть вполне актуален.
    Начнем с того, что в микропроцессорах Xmega разработчики из Atmel отказались от выбора диапазона частот, а также внешнего или внутреннего тактирования с помощью Fuse-битов, как это было в семействе ATmega и ATtiny. Процессор при включении питания или сбросе всегда начинает работать от внутреннего RC-генератора с частотой 2 МГц. С одной стороны это позволяет сократить работу на настройку процессоров и исключить ошибки связанные с неверной установкой Fuse-битов программистами, приводящие к выходу процессора из рабочего режима, а с другой, увеличивает время необходимое для запуска основного цикла программы (при необходимости работы на высокой частоте), т.к. время инициализации и установки источника тактирования существенно увеличилось.
    Xmega поддерживает генераторы внешней частоты до 16 МГц.
    Подключение внешнего генератора выполняется по следующей схеме:
Рис.1. Подключение кварцевого резонатора
    Нагрузочные конденсаторы С1 и С2 могут отсутствовать. Рекомендуемые значения нагрузочных конденсаторов указаны в следующей таблице:
    При тактировании процессора от внешнего сигнала используется следующая схема подключения:
Рис.2. Подключение внешнего источника тактирования
    Микропроцессоры Xmega имеют встроенный блок PLL (фазовой автоподстройки частоты), который предназначен для повышения частоты системной синхронизации. Возможно задание коэффициент умножения частоты от 1 до 31. Выходная частота fOUT равна произведению входной fIN на коэффициент умножения частоты PLL_FAC. Частота на выходе блока PLL не должна быть меньше 10 МГц.
    При работе с блоком PLL необходимо придерживаться следующего алгоритма:
    - Разрешить работу источника опорной частоты.
    - Задать коэффициент умножения частоты и выбрать источник опорной частоты для блока PLL.
    - Дождаться установления источника опорной частоты.
    - Разрешить работу блока PLL.
    Процессоры Xmega имеют весьма полезную возможность - функцию обнаружения отказа внешнего источника тактирования, которая включается программным путем. Но в данном уроке, работа этой функции не рассматривается.
    Задание частоты от внешнего генератора выполняется следующим образом:
     - Настройка регистра управления внешним генератором
     - Выбор в регистре управления генератором режима внешнего генератора
     - Ожидание включения режима тактирования от внешнего генератора
     - Настройка режима работы блока PLL (если требуется увеличение частоты выше частоты внешнего генератора)
     - Выбор в регистре управления генератором включения блока PLL (если требуется увеличение частоты выше частоты внешнего генератора)
     - Ожидание включения режима тактирования от внешнего генератора (если требуется увеличение частоты выше частоты внешнего генератора)
     - Включение защиты от изменения конфигурации
     - Настройка режима системной синхронизации от блока PLL
     - Отключение системной синхронизации от внутреннего RC-генератора частотой 2 МГц
      Вот описание основных регистров для задания частоты от внешнего генератора:
    Регистр управления генераторами CTRL
Биты 7:5 - Res: резервные биты
Бит 4 - PLLEN: разрешение работы блока PLL
Бит 3 - XOSCEN: разрешение работы внешнего генератора
Бит 2 - RC32KEN: разрешение работы внутреннего RC-генератора частоты 32 кГц
Бит 1 - RC32MEN: разрешение работы внутреннего RC-генератора частоты 32 МГц
Бит 0 - RC2MEN: разрешение работы внутреннего RC-генераторы частоты 2 МГц
    По умолчанию, 2-мегагерцевый генератор является включенным в работу, а бит 0 - установленным.
    STATUS - регистр статуса генераторов
Биты 7:5 - Res: резервные биты
Бит 4 - PLLRDY: флаг готовности блока PLL. Флаг PLLRDY устанавливается после того, как блок PLL переходит в режим захвата выбранной частоты и и становится готовым к использованию в качестве источника системной синхронизации.
Бит 3 - XOSCRDY: флаг готовности внешнего источника синхронизации.
Бит 2 - RC32KRDY: готовность внутреннего RC-генератора частоты 32 кГц
Бит 1 - RC32MRDY: готовность внутреннего RC-генератора частоты 32 МГц
Бит 0 - RC2MRDY: готовность внутреннего RC-генератора частоты 2 МГц
    XOSCCTRL - регистр управления внешний генератором XOSC
Биты 7:6 - FRQRANGE[1:0]: выбор частотного диапазона кварцевого генератора. Данные биты необходимы для задания частотного диапазона, подключенного к процессору кварцевого резонатора, согласно таблице:
    Бит 5 - X32KLPM: экономичный режим работы кварцевого генераторы частоты 32 кГц. Установка данного бита активизирует экономичный режим работы кварцевого генератора частоты 32 кГц, в котором уменьшается размах напряжения на выводе TOSC2.
    Бит 4 - Res: резервный бит
    Биты 3:0 - XOSCSEL[3:0]: настройка кварцевого генератора. С помощью данных бит выбирается тип и время запуска кварцевого генератора (внешний кварцевый или керамический резонатор подключается к выводам XTAL). После установки бита XOSCEN в регистре CTRL изменить рассматриваемые настройки невозможно. Варианты настроек кварцевого генератора представлены в следующей таблице:
    XOSCSEL[3:0] Групповое имя Выбранный источник синхронизации Время запуска
Прим.:
(1) - Данную опцию нужно использовать только в том случае, когда стабильность частоты во время запуска не важна. Опция не подходит для кварцевых резонаторов.
(2) - Данная опция ориентирована на керамические резонаторы и гарантирует стабильность частоты во время запуска. Ее также можно использовать, если стабильность частоты во время запуска не важна.
    PLLCTRL - регистр управления блоком PLL
Прим.:
(1) - 32-кГц-ый генератор TOSC не может быть источником синхронизации блока PLL. Если используется внешний источник синхронизации, то его частота должна быть не менее 0.4 МГц.
Бит 5 - Res: резервный бит
Биты 4:0 - PLLFAC[4:0]: коэффициент умножения.Биты PLLFAC задают коэффициент умножения частоты блока PLL, значения которого лежат в пределах от 1 до 31. Частота на выходе блока PLL должна быть не более 200 МГц, но и не менее 10 МГц.
На практике при использовании кварцевого генератора на 16 МГц при установке коэффициента умножения больше 3 процессор отказывался работать.
    CTRL - регистр управления системной синхронизацией
Биты 7:3 - Res: резервные биты
Биты 2:0 - SCLKSEL[2:0]: настройка системной синхронизации. Биты SCLKSEL предназначены для выбора источника системной синхронизации. Процесс изменения источника системной синхронизации длится 2 цикла (периода) предыдущего источника синхронизации и еще 2 цикла нового. Данные биты защищены механизмом защиты от изменения конфигурации. Биты SCLKSEL нельзя изменить, если выбираемый новый источник нестабилен. Доступные варианты для выбора приведены в следующей таблице:

    Вот, в общем, то и вся необходимая информация для тактирования микропроцессора от внешнего источника частоты.
    Ну, и на последок, пример программы настройки основной частоты синхронизации на 3-х кратную частоту внешнего генератора. При частоте генератора 12-16 МГц результирующая основная частота 36-48 МГц соответственно.
OSC.XOSCCTRL = 0xCB;                  // выбор внешнего генератора с временем запуска 16 тыс. CLK и частотой 12-16 МГц 
OSC.CTRL = 0x08; // разрешение работы внешнего генератора
while((OSC.STATUS & 0x08) == 0 ) ; // ожидание появления в регистре статуса бита включения синхронизации от внешнего генератора
OSC.PLLCTRL = 0xC3; // настройка блока PLL на синхронизацию от внешнего источника и 3-х кратоное умножение
OSC.CTRL = OSC.CTRL | 0x10; // разрешение работы блока PLL
while((OSC.STATUS & 0x10) == 0 ) ; // ожидание появления в регистре статуса бита включения блока PLL
CCP = 0xD8; // включение защиты от изменения регистров ввода-вывода на время изменения синхронизации
CLK.CTRL = 0x04; // настройка системной синхронизации от блока PLL
OSC.CTRL = OSC.CTRL & 0xFE; // отключение системной синхронизации от внутреннего RC-генератора частотой 2 МГц
    Blogger Comment
    Facebook Comment

0 коммент.:

Отправить комментарий