4.2. Работа с максимальным быстродействием

Помимо двух внешних генераторов, у STM32 имеется два внутренних RC-генератора. Сразу после сброса ядро Cortex синхронизируется внутренним высокочастотным генератором, номинальная рабочая частота которого составляет 8 МГц. Второй внутренний генератор - низкочастотный генератор на частоту 32,768 кГц. Данный генератор предназначен для совместной работы с часами реального времени и сторожевым таймером.

У МК STM32 используется достаточно сложная система синхронизации с двумя внешними и двумя внутренними генераторами, а также схемой ФАПЧ. В целях безопасности системы предусмотрена возможность мониторинга внешнего высокочастотного генератора

Процессор Cortex поддерживает возможность синхронизации внешним или внутренним высокочастотным генератором или от внутренней схемы ФАПЧ. Источником синхронизации схемы ФАПЧ может служить внутренний или внешний высокочастотный генератор. Таким образом, МК STM32 могут работать на частоте 72 МГц без использования внешнего генератора. Недостатком использования внутреннего генератора на частоту 8МГц является его невысокая точность и стабильность. Его нельзя использовать для синхронизации последовательных интерфейсов или для выполнения точных измерений временных интервалов. Независимо от выбранного генератора, чтобы добиться работы ядра Cortex на максимальной частоте 72 МГц, необходимо использовать ФАПЧ. Все регистры управления настройками генераторов, ФАПЧ и шин находятся в группе управления сбросом и синхронизацией (группа RCC).

Блок управления сбросом и синхронизацией воздействует на систему синхронизации, шинные преобразователи и домен с резервированием питания

4.2.1. Блок фазовой автоподстройки частоты

Сразу после сброса источником синхронизации ЦПУ является HSI-генератор. В таком состоянии МК его внутренний генератор отключен. Первым шагом по обеспечению работы STM32 с максимальным быстродействием является включение HSE-генератора и ожидание стабилизации его частоты.

После сброса МК STM32 работает от внутреннего высокочастотного генератора. Внешний генератор необходимо включить

RCC->CR |= 0x10000; //включение HSE

// Ожидание стабилизации частоты HSE-генератора

while(!(RCC->CR &0x00020000))

{

;

}

Включается внешний генератор с помощью регистра RCC_Control. Бит готовности сигнализирует о стабилизации частоты внешнего генератора. После того, как частота внешнего генератора станет стабильной, его можно выбрать как вход блока ФАПЧ. Выходная частота блока ФАПЧ зависит от заданного целочисленного значения коэффициента умножения частоты, которое хранится в регистре RCC_PLL_configuration. Если используется генератор на частоту 8 МГц, для генерации максимальной тактовой частоты 72 МГц необходимо задать коэффициент умножения 9. После настройки коэффициента умножения частоты, необходимо разрешить работу блока ФАПЧ посредством регистра управления. Как только выходная частота блока ФАПЧ станет стабильной, установится соответствующий флаг и выход ФАПЧ можно выбрать в качестве источника синхронизации ЦПУ Cortex.

После запуска HSE-генератора его сигнал можно подать на вход схемы ФАПЧ. По завершении переходных процессов внутри схемы ФАПЧ ее сигнал можно использовать для синхронизации системы

//Синхронизация HSE-генератором и умножением частоты на 9

RCC->CFGR = 0x001D0000; //Активизация ФАПЧ

RCC->CR |= 0x01000000;

while(!(RCC->CR & 0x02000000))

{

;

}

//Установка остальных полей управления

RCC->CR |= 0x00000001;

//Установка остальных полей конфигурации

RCC->CFGR |= 0x005D0402;

Соседние файлы в папке ПЦиПУ. материалы для Курсового проекта Тютякин А.В.