Вкладка Clock Configuration файла .ioc
При работе с STM32CubeIDE в файле .ioc доступна вкладка Clock Configuration, которая позволяет настраивать систему тактирования микроконтроллера. С её помощью можно выбрать источник тактового сигнала (внешний или внутренний генератор), задать частоты шин (AHB, APB1, APB2), а также настроить делители и умножители для получения нужных параметров. Благодаря визуальному интерфейсу и автоматическим расчетам эта вкладка упрощает настройку тактирования, обеспечивая стабильную работу периферии и оптимальную производительность устройства. Чтобы с ней эффективно работать необходимо знать для чего нужен каждый элемент этой вкладки. Давайте разберемся, как с ней работать и какие возможности она предоставляет.
Заходим в CubeIDE в наш проект в файл Project.ioc в вкладку Clock Configuration
Открывается вот такой вид. Для каждого микроконтроллера он свой, у меня конкретно STM32F407VGT6. Здесь я обозначил каждый элемент подчеркнутыми цифрами для удобства, в самом CubeIDE их конечно нет.
Рассмотрим низкочастотную схему тактирования
1 — Input frequency — это параметр, задающий частоту внешнего низкоскоростного кварцевого резонатора LSE(Low-Speed External).LSE работает на частоте 32.768 кГц и обычно используется для тактирования часов реального времени (RTC), а также в некоторых режимах энергосбережения.
2 — LSE (Low-Speed External) — кварцевый резонатор с частотой 32.768 кГц Эта частота стандартна для работы RTC, так как она делится на 2^15, чтобы получить 1 Гц (1 тик в секунду).
Пару слов о настройках внешнего тактового сигнала. Чтобы включить возможность использовать внешний сигнал необходимо в настройках System Core в закладке RCC в строке Low Speed Clock выбрать Crystal/Ceramic Resonator или BYPASS Clock Source. Если вы работаете с RTC и подключаете стандартный кварцевый резонатор 32.768 кГц, вам нужно выбрать Crystal/Ceramic Resonator.Если у вас нестандартный проект, где частота приходит с внешнего генератора (например, сигнал от другой микросхемы), выберите LSE Bypass Clock Source. При этом становятся активными выводы PC14 PC15.
3 — LSI (Low-Speed Internal) RC-генератор — внутренний низкоскоростной генератор.
4 — Тактовая частота внешнего кварцевого резонатора (8 позиция ) деленная на 2
5 — Мультиплексор RTC Clock Mux позволяет выбрать один из нескольких доступных источников тактовой частоты для RTC
6 — RTC (Real-Time Clock) — это встроенный модуль микроконтроллера, предназначенный для отсчета реального времени
7 — IWDG (Independent Watchdog) — это независимый аппаратный модуль предназначенный для защиты системы от зависания или сбоев. IWDG работает независимо от основной системы тактирования и всегда готов к восстановлению системы, даже если основной процессор перестает функционировать корректно.
Перейдем к высокочастотной части схемы
8 — Input frequency — входящая частота внешнего высокоскоростного кварцевого резонатора (HSE). Чаще всего используется как основной генератор тактовой частоты для всей системы. Имеет меньшие отклонения по частоте по сравнению с внутренним генератором (HSI), что важно для точных временных расчетов и работы коммуникационных интерфейсов.
Чтобы включить, заходите во вкладку Pinout&Configuration — RCC — HSE и выбираете Crystal/Ceramic Resonator
9 — HSE (High-Speed External clock) — сам внешний высокочастотный источник тактирования для микроконтроллера. HSE обычно подключается к внешнему кварцевому резонатору, чтобы обеспечить стабильный и точный сигнал тактирования для системы.
10 — HSI(High-Speed Internal clock) — внутренний высокоскоростной источник тактирования микроконтроллера. В отличие от HSE, HSI не требует внешних компонентов, поскольку использует встроенный RC-генератор для создания тактового сигнала.Обладает фиксированной частотой, быстро запускается и может использоваться как основной или резервный источник тактирования. Однако он менее точен, чем HSE, поэтому не всегда подходит для критичных задач, требующих высокой стабильности.
11 — PLL source Mux (Phase Locked Loop) — мультиплексор выбора источника тактирования для PLL. Позволяет выбрать входной сигнал для PLL из HSI, HSE.
12 — / M делитель частоты
Определяет коэффициент деления входного сигнала (HSI или HSE) перед его подачей в фазовую автоподстройку частоты (PLL).
13- * N умножает выходной сигнал после делителя /M, увеличивая частоту.
14 — / P делитель частоты. Делит результат после умножения, формируя основную системную тактовую частоту (SYSCLK).
15 — /Q делитель частоты. Чтобы он стала активен вам необходимо включить один из модулей USB, RNG, SDIO.
16 — System Clock Mux это мультиплексор, который выбирает основной источник тактового сигнала для системной частоты fSYSCLKf. Это ключевая настройка, так как fSYSCLKf используется для работы ядра процессора. Имеет три варианта выбора HSI HSE PLLCLK. А так же систему защиты тактового сигнала (Clock Security System, CSS). .Она предназначена для автоматического переключения на резервный источник тактового сигнала в случае сбоя основного.Включение CSS позволяет избежать аварийной остановки микроконтроллера при сбое внешнего кварцевого резонатора (HSE). ( Для включения CSS кликните по блоку )
17 — SYSCLK — основная частота для микроконтроллера, шин и большинства периферийных устройств
18 — AHB Prescaler — делитель частоты, который формирует тактовую частоту для шины AHB (Advanced High-performance Bus) на основе системного тактового сигнала.
19 — HCLK (High-Speed Clock) —тактовая частота, которая подается на высокоскоростную шину AHB (Advanced High-performance Bus)
20 — Ethernet PTP clock — тактовый сигнал, используемый для поддержки PTP (Precision Time Protocol)
21 — HCLK to AHB bus, core, memory and DMA — тактовая частота используемая для:
- Ядра процессора,
- Высокоскоростной шины AHB,
- Доступа к памяти (SRAM, Flash),
- DMA.
22 — To Cortex System Timer(SysTick) — частота, подаваемая на SysTick — системный таймер, часто используемый для работы с RTOS или точного отсчёта времени.
23 — FCLK Cortex Clock — основной системный тактовый сигнал.Эта настройка влияет на производительность микроконтроллера, так как процессор выполняет инструкции с этой частотой.
24 — APB1 peripheral clocks. Частота для периферийных устройств, подключенных к шине APB1 (например, UART, I2С, SPI, CAN)
25 — APB1 Timer Clocks — отвечает за настройку тактовых частот для таймеров, подключенных к шине APB1.
26 — APB2 peripheral clocks — частота для периферийных устройств, подключенных к шине APB2 (например, ADC, USART, SPI)
27 — APB2 Timer Clocks — частота для таймеров на шине APB2
28 — Частота для USB, RNG, SDIO
29 — Частота для I2S clocks. Чтобы включить надо активировать I2S в закладке multimedia
30 — *N Множитель для мультиплексора I2S
31 — /R Делитель для мультиплексора I2S
32 — I2C source mux — Мультиплексор для I2S. Позволяет выбрать источник частоты.
33 и 34 — Мультиплексоры вывода MCO. MCO расшифровывается как «Microcontroller Clock Output», и это полезная функция для диагностики и синхронизации внешних устройств. Проще говоря на выходе ножки микроконтроллера можно получить заданную частоту.Это позволяет использовать тактовые сигналы микроконтроллера для других внешних устройств или для диагностики работы системы.
Мы разобрали блоки представленные в Clock Configuration файла .ioc(для микроконтроллера STM32F407VGT6 ) Эта статья больше полезна тем, кто никогда не работал с этой вкладкой, чтобы при виде всех этих блоков понимать за что отвечает каждый. Конечно, в процессе работы вы познакомитесь более подробно с каждым из них и научитесь правильно их настраивать.