Перейти к содержанию

MCO — вывод тактового сигнала

Чтобы проверить, на какой частоте на самом деле работает микроконтроллер, или затактировать от него другую микросхему, в STM32 есть специальный выход — MCO. На него можно вывести один из внутренних тактовых сигналов.

Обновлено Редакция GAW

MCO (microcontroller clock output) — вывод STM32, на который можно подать один из внутренних тактовых сигналов. У STM32F103 это PA8, а источник выбирают битами MCO[2:0] регистра RCC_CFGR (RM0008, разд. 7.2.10 и 7.3.2):

MCO[2:0]Сигнал на выводе
0xxнет
100SYSCLK
101HSI
110HSE
111PLL / 2

Вывод при этом переводят в режим выхода альтернативной функции — как это делается, показано в статье о GPIO STM32. Сигнал SYSCLK на MCO не должен превышать 50 МГц — это предел скорости вывода STM32F103. При старте и при смене источника на выходе возможны укороченные периоды.

У STM32F405/407 таких выводов два (RM0090, разд. 7.2.10): MCO1 на PA8 (HSI, LSE, HSE или PLL) и MCO2 на PC9 (HSE, PLL, SYSCLK или PLLI2S), у каждого свой делитель от 1 до 5, а предел — 100 МГц.

Для чего нужен

  • Проверка частоты генератора. Щуп осциллографа на выводах кварца добавляет ёмкость и сам сдвигает частоту, а может и сорвать генерацию. Частоту HSE или HSI выводят на MCO и меряют там — так советует и схема «Кварцевый генератор микроконтроллера».
  • Проверка настройки PLL. Если UART или USB работают с неверной скоростью, вывод PLL / 2 на MCO сразу показывает, верна ли частота на выходе дерева тактирования.
  • Тактирование другой микросхемы. Так сделаны платы Nucleo-64: микроконтроллер отладчика ST-LINK выдаёт со своего MCO 8 МГц на вход OSC_IN целевого STM32, работающего в режиме HSE bypass (UM1724, разд. 7.9.1).

Не путать с выходом ШИМ таймера: его частота задаётся предделителем и периодом таймера, а MCO выдаёт сам тактовый сигнал: у STM32F1 — без деления или PLL / 2, у STM32F4 — через делитель от 1 до 5.

Частые вопросы

На каком выводе MCO у STM32F103?

На PA8 — это его альтернативная функция по умолчанию (DS5319, табл. 5). Вывод нужно настроить как выход альтернативной функции, а источник выбрать битами MCO[2:0] регистра RCC_CFGR: 100 — SYSCLK, 101 — HSI, 110 — HSE, 111 — PLL, делённый на 2.

Можно ли вывести на MCO 72 МГц?

У STM32F103 — нет: по RM0008 SYSCLK на MCO не должен превышать 50 МГц, это предельная скорость вывода. Поэтому при PLL 72 МГц выбирают вариант PLL / 2 = 36 МГц или выводят HSE. У STM32F407 предел — 100 МГц, а у каждого из двух выводов MCO есть свой делитель от 1 до 5.

Зачем выводить частоту на MCO, если есть осциллограф?

Щуп на выводах кварца сам меняет частоту и может сорвать генерацию: его ёмкость добавляется к нагрузочной. MCO — обычный выход, отделённый от цепи генератора, и частоту на нём можно мерить частотомером, не трогая кварц.

Источники

  1. STMicroelectronics. RM0008 Rev 21. Reference manual: STM32F101xx, STM32F102xx, STM32F103xx, STM32F105xx and STM32F107xx — разд. 7.2.10: на вывод MCO выводится SYSCLK, HSI, HSE или PLL / 2, вывод настраивают как альтернативную функцию; разд. 7.3.2: биты MCO[2:0] регистра RCC_CFGR — 0xx нет сигнала, 100 SYSCLK, 101 HSI, 110 HSE, 111 PLL / 2; при старте и смене источника возможны укороченные периоды; SYSCLK на MCO — не выше 50 МГц (предел скорости вывода)
  2. STMicroelectronics. DS5319 Rev 20 (July 2025). STM32F103x8, STM32F103xB datasheet — табл. 5 (описание выводов): MCO — альтернативная функция PA8 по умолчанию
  3. STMicroelectronics. RM0090 Rev 21 (June 2024). Reference manual: STM32F405/415, STM32F407/417, STM32F427/437 and STM32F429/439 — разд. 7.2.10: два вывода — MCO1 (PA8: HSI, LSE, HSE, PLL) и MCO2 (PC9: HSE, PLL, SYSCLK, PLLI2S), делители 1–5 (поля MCO1PRE и MCO2PRE), не выше 100 МГц
  4. STMicroelectronics. UM1724 Rev 17. STM32 Nucleo-64 boards (MB1136) — разд. 7.9.1: вариант MCO from ST-LINK — 8 МГц с выхода MCO микроконтроллера ST-LINK на вывод OSC_IN целевого STM32

Нашли ошибку?