Что такое тактирование микроконтроллера
Перейти к содержимому

Что такое тактирование микроконтроллера

  • автор:

Arduino.ru

У меня под рукой оказались ATMega8 и ATMega88. Потом узнал, что все характеристики одинаковы, кроме частот. Частота ATMega8 — 16МГц, а частота ATMega88 — 20 МГц. Потом начал думать, зачем это частота? Можете подробнее рассказать о них. И для чего эти частоты? В практике нужно ли знать частоту микроконтроллера?

  • Войдите на сайт для отправки комментариев

Сб, 05/10/2019 — 13:11
Зарегистрирован: 09.07.2016

На самом деле есть ещё несколько небольших отличий, но. вы серьёзно?

Частота определяет, сколько элементарных операций микроконтроллер может выполнить за секунду. Если вам нужно выполнять немного вычислений, то сойдёт и медленный процессор, вроде avr88. Нужно больше — берёте более быстрый процессор, какой-нибудь стм32 или есп32 на 72 или 160 МГц. Нужно ещё больше — берёте арм или мипс на 1000 МГц, это всякие тв-боксы, вайфай роутеры. Ещё больше — это уже процессоры для компьютеров i3, i5, i7 — с частотой 3-4 ГГц.

  • Войдите на сайт для отправки комментариев

Сб, 05/10/2019 — 13:15

dimax аватар

Зарегистрирован: 25.12.2013

мега 88 это модификация меги8. В меге 8 помимо меньшей частоты меньше PWM ног, нет групповых прерываний.

  • Войдите на сайт для отправки комментариев

Сб, 05/10/2019 — 13:31

DetSimen аватар

Зарегистрирован: 25.01.2017
Behzod пишет:
Можете подробнее рассказать о них. И для чего эти частоты?

с какой целью интересуешса?

  • Войдите на сайт для отправки комментариев

Сб, 05/10/2019 — 14:38

ЕвгенийП аватар

Зарегистрирован: 25.05.2015
Behzod пишет:

Зачем нужен частота микроконтроллера?

Вам — низачем не нужен.

  • Войдите на сайт для отправки комментариев

Сб, 05/10/2019 — 16:31
Зарегистрирован: 27.04.2014

Achtung. Troll detected.

  • Войдите на сайт для отправки комментариев

Сб, 05/10/2019 — 19:29
Зарегистрирован: 28.09.2019

Значит, частота — это производительная мощь микроконтроллера. Так?

  • Войдите на сайт для отправки комментариев

Сб, 05/10/2019 — 19:32

ua6em аватар

Зарегистрирован: 17.08.2016
Behzod пишет:
Значит, частота — это производительная мощь микроконтроллера. Так?

насчёт производительной мощи это вы погорячились )))

  • Войдите на сайт для отправки комментариев

Сб, 05/10/2019 — 19:33
Зарегистрирован: 20.08.2018
Behzod пишет:
это производительная мощь микроконтроллера. Так?

Да . Чем больше частота, тем быстрее закипит чайнег, положенный на дурдуину . ДаёшЪ разгон дурдуины до 2 кВт .

  • Войдите на сайт для отправки комментариев

Сб, 05/10/2019 — 19:38
Зарегистрирован: 29.03.2016

Вашу мать. пойду за водкой. ТС похоже, что-то не понимает.

  • Войдите на сайт для отправки комментариев

Сб, 05/10/2019 — 19:43
Зарегистрирован: 20.08.2018

Нисцы! Тут понимающих сразу видно, а непонимающие пробуждают перманентное желание нажраццо! Деда и иго кота — жалко, сапЪюццо.

  • Войдите на сайт для отправки комментариев

Сб, 05/10/2019 — 19:51
Зарегистрирован: 29.03.2016

Я с ними . С обоими. Тема понятна.Непонятен её владелец.

  • Войдите на сайт для отправки комментариев

Сб, 05/10/2019 — 22:12
Зарегистрирован: 09.07.2016
Behzod пишет:
Значит, частота — это производительная мощь микроконтроллера. Так?

Нет, частота — это и есть частота, рабочая тактовая частота, это базовое понятие. Это не производительная мощь, так как в некоторых вычислениях более современный процессор, работающий с частотой 1000 МГц побьёт более старые процессоры, работающие на частоте, скажем, 1500 МГц. И это вообще не мощь :), «мощь» измеряется в Ваттах или хорспаверах и характеризует совсем другое.

Если на секунду предположить, что тс не узбекский тролль и действительно задаёт такой вопрос, ибо не понимает, но хочет, то как вот объяснить человеку, зачем нужен тактовая частота?

Вот есть всякие детальки, электронные схемы можно собирать. Можно собирать аналоговые, обрабатывающие течение электрического тока через детальки, а можно цифровые, работающие по логическому принципу «напряжение есть/напряжения нет». Все цифровые схемы — это манипуляция этими самыми импульсами, логически есть цифровой вход и выход, на вход(ы) подали напряжение, убрали напряжение, в зависимости от этого на выходе цифровая схема переключилась или не переключилась. И как только схема становится чуть посложнее, чем 2И-НЕ, ей становится нужным синхронизироваться с другими цифровыми схемами, чтобы в ней был смысл, чтобы она вообще могла работать. Поэтому придумали тактирование, подачу импульсов «напряжение есть/нет» на специальный вход, много раз в секунду, чтобы детальки переключались одновременно и выполняли полезную работу. Подсчитать количество этих импульсов за секунду — вот и получится частота. Чем она больше, тем чаще будут переключаться маленькие цифровые схемки, части микроконтроллера, и тем больше он успеет выполнить полезной вычислительной работы за единицу времени.

  • Войдите на сайт для отправки комментариев

Тактирование микроконтроллера

Тактовая частота микроконтроллера это количество тактов в секунду которые выполняет микроконтроллер. Получается чем больше тактовая частота МК тем большее количество операций он может выполнить за 1 секунду.

К примеру тактовая частота в 8 МГц означает что МК за 1 секунду выполнить 8000000 различных операций таких как сложение, вычитание, запись данных в регистры и чтение данных т.д. Такая частота кажется довольно большой но как показывает практика это далеко не так, к примеру частота тактирования современных процессора компьютера составляет уже от 2 ГГц, а некоторые модели уже имеют частоту в 4 ГГц.

  • использовать внутренний RC-генератор;
  • использовать внешний кварц;
  • использовать внешний генератор;
  • использовать RC-цепочку.

Давайте в вкратце рассмотрим каждый из этих способов тактирования микроконтроллера. Выбор того или иного способа осуществляется путем выставления фьюз битов микроконтроллера.

Тактирование микроконтроллера от внутреннего RC генератора

При этом способе нам не нужно подключать какие либо внешние детали. Тактирование осуществляется от RC генератора который находится внутри и который может работать на частотах 1,2,4,8 МГц. А если вам требуется какая нибудь другая частота, то этот способ не подходит. Так же этот способ не подойдет если вам нужны точные интервалы времени, дело в том что задающая частота RC генератора плавает в зависимости от температуры.

Тактирование микроконтроллера от внешнего кварцевого резонатора

Внешний вид кварцевого резонатора на 8 МГц

Этот способ несколько сложнее, для того чтобы его подключить нам нужно знать расположение выводов микроконтроллера и их название, далее находим выводы «XTAL1» и «XTAL2».

Тактирование микроконтроллера от внешнего кварцевого резонатора

Схема подключения кварцевого резонатора к микроконтроллеру

taktirovanie-mikrokontrollera1

Емкость конденсаторов должана быть в интервале от 15 до 22 пФ, один вывод подсоединятеся к резонатору а другой к земле.

Тактирование микроконтроллера от RC-цепочки

В представленной схеме тактирования конденсатор берется емкостью не менее 22 пФ, а резистор от 10 Ом до 100 кОм. Внешний RC генератор так же как и внутренний имеет нестабильную частоту которая «плавает » в зависимости от температуры. Но если в проектах не нужна стабильная частота то можно использовать эти два способа.

taktirovanie-mikrokontrollera2

Частота тактирования рассчитывает по формуле

F-это частота в Герцах;

R- номинал сопротивления в Ом;

C — емкость конденсатора в Фарадах.

По дефолту все МК AVR (за исключением страх AT90S2313 и AT90S8535 и другие) настроены так чтобы испольщовать внутренний тактовый генератор. Получается как только мы подаем на него напряжение то МК сразу начинает работать.

За выбор источника тактирования отвечает биты CKSEL

выставляя биты нужным образом получаем нужный нам источник тактирования.

CKSEL3. 0=0000 — это внешний источник тактового синнала.

CKSEL3. 0=0100 — внутренний RC генератор 8 МГц.

  • CKSEL3. 0=0101 — частота менее 0.9 МГц;
  • CKSEL3. 0=0110 — от 0.9 МГц до 3 МГц;
  • CKSEL3. 0=0111 — от 3 МГц до 8 МГц;
  • CKSEL3. 0=1000 — от 8 МГц до 12 МГц.

Микроконтроллеры AVR

Микроконтроллер ATmega328P имеет возможность тактирования как внешними, так и внутренними средствами. Выбор режима осуществляется исходя из требований, предъявляемых для разрабатываемого устройства. Так, для большей стабильности и максимальной производительности стоит выбрать использование внешнего кварцевого резонатора или внешнего тактового генератора (до 20 МГц). Если же необходимо задействовать все порты ввода/вывода (высвобождается 2 ножки), уменьшить колличество внешних компонентов разрабатываемого устройства, то в данном случае лучше использовать внутренний тактовый генератор (8 МГц или 128кГц).

Выбор режима тактирования осуществляется программированием конфигурационных ячеек (в данном случае low fuse bit):

Урок 5. Система тактирования STM32.

Уроки STM32

В уроке изучим систему тактирования микроконтроллера.

Микроконтроллер – это синхронный автомат, работающий от единого источника тактовых импульсов. Пока мы не настроим тактирование всех его узлов, программа правильно работать не будет.

В уроке 3 мы научились пользоваться программой STM32CubeMX. Конфигурацию системы тактирования производили с помощью интерактивной схемы. Эта схема адекватно, в подробностях отображает реальную функциональную схему системы тактирования микроконтроллера. Так давайте и изучать ее с помощью STM32CubeMX, тем более, что мы собираемся использовать эту программу в каждом проекте.

Последовательность действий нам уже известна.

  • Запускаем STM32CubeMX.
  • Нажимаем на ACCESS TO MCU SELECTOR.
  • Выбираем микроконтроллер STM32F103C8.
  • Затем Start Project.
  • В закладках System Core -> RCC.
  • В верхнем меню выбираем Clock Configuration.

Перед нами интерактивная схема системы тактирования микроконтроллера.

STM32CubeMX

Схема легко позволяет формировать сигналы тактирования разных частот. Переключаешь коммутаторы, выбираешь коэффициенты деления и умножения, смотришь частоты выходных сигналов. Если надо, корректируешь.

Все просто. Гораздо важнее понять, что надо сформировать, для чего и из чего.

Что значит конфигурировать систему тактирования? Чего мы хотим добиться?

Справа схемы есть 8 прямоугольников. Это источники тактирования узлов микроконтроллера. Мы должны установить, выбрать для них синхроимпульсы с определенной частотой.

Конечно, для этого необходимо знать, как работают сами узлы. Например, надо понимать, как работает таймер, чтобы выбрать для него нужную частоту синхроимпульсов. На данном этапе я дам только общие пояснения узлов микроконтроллера, которые используют систему тактирования. А вот саму систему синхронизации разберем подробно.

Большая часть узлов микроконтроллера тактируются от сигналов, полученных из промежуточной частоты – прямоугольник HCLK. Левая от него часть схемы формирует саму частоту HCLK, а правая – раздает ее по узлам, периферийным устройствам.

STM32CubeMX

Итак. Настроить систему тактирования микроконтроллера — это прежде всего задать частоты синхронизации для следующих узлов и периферийных устройств.

  • FCLK — тактирование ядра микроконтроллера. Частота сигнала определяет производительность микроконтроллера, время выполнения команд. Она не может быть выше 72 мГц. Поступает непосредственно от сигнала HCLK.
  • HCLK to AHB – тактирование шины AHB. К этой шине подключены: ядро процессора, память и контроллер прямого доступа к памяти (DMA). Синхроимпульсы для нее также поступают непосредственно от сигнала HCLK . Ядро процессора и его шина (AHB) синхронизируются одним сигналом.
  • Cortex System timer – системный таймер. Это стандартный таймер в микроконтроллерах STM32. Представляет из себя 24 разрядный вычитающий счетчик с функциями автоматической перезагрузки и формирования прерываний. Для тактирования используется сигнал HCLK, частота которого может быть уменьшена пред делителем в 8 раз.

STM32CubeMX

  • APB1 – тактирование шины APB1. Это шина, по которой происходит доступ к таймерам 2-4, USART 2 и 3, SPI2, I2C 1 и 2, CAN, USB, RTC, WatchDog.

Архитектура STM32

У других микроконтроллеров семейства STM32 устройств на шине APB1 может быть больше.

Архитектура STM32

Для тактирования шины APB1 используется сигнал HCLK с предделителем на несколько значений.

STM32CubeMX

Частота не должна превышать 36 мГц.

  • ABP1 Timer clocks – тактирование таймеров шины ABP1. Используется сигнал с выхода предделителя ABP1 с умножителем частоты на 1 или 2. Если значение предделителя APB1 равно 1, то частота тактирования таймеров равна частоте тактирования шины. При другом коэффициенте делителя, таймеры тактируются частотой в 2 раза выше, чем шина APB1.

STM32CubeMX

  • APB2 – тактирование шины APB2. Это шина, по которой происходит доступ к портам GPIO, таймеру 1, SPI1, USART1, АЦП. У шины предделитель с такими же функциональными возможностями, как у APB1.

STM32CubeMX

  • ABP2 Timer clocks – Тактирование таймера 1. Все как для сигнала ABP1 Timer clocks. Только к нему подключен один таймер 1. Частота тактирования его равна частоте синхронизации шины ABP2, в случае если значение предделителя равно 1. При любом другом значении частота тактирования таймера 1 в 2 раза выше частоты синхроимпульсов шины.
  • ADC – тактирование АЦП 1 и 2. Для тактирования используется сигнал предделителя шины APB2 с дополнительным делителем частоты. Делитель на схеме становится активным, если разрешить работу АЦП.

STM32CubeMX

Теперь давайте разберемся, как формировать сигнал промежуточной частоты HCLK. Начнем с противоположного, левого края схемы.

Исходными источникоми тактирования процессорного ядра и периферийных устройств микроконтроллера STM32 могут быть:

  • HSI (High speed internal ) – встроенный RC-генератор.
  • HSE (High speed external) – внешний высокочастотный генератор. Может быть использован, как:
    • Внутренний генератор с внешним кварцевым резонатором 4-16 Мгц.
    • Сигнал от внешнего генератора частотой 4-16 Мгц.

    На схеме HSI-генератор изображен внутри микроконтроллера.

    STM32CubeMX

    Это внутренний RC-генератор на 8 мГц. Сигнал с него подается на коммутатор HSI/HSE через делитель на 2. Поэтому от этого генератора можно сформировать сигнал HCLK с частотой до 36 мГц.

    Входы подключения внешнего кварцевого резонатора – это самое ”узкое место” для любого микроконтроллера с точки зрения помехозащищенности, влагостойкости, критичности сопротивления изоляции и т.п. Кварцевые генераторы часто не запускаются на морозе, не работают при высокой влажности. Прикоснитесь руками к выводам кварцевого резонатора не вскрытой лаком платы, и он тут же перестанет работать. Поэтому очень удобно иметь генератор внутри микросхемы.

    Но RC-генератор обладает невысокой стабильностью частоты. Как правило, она сильно зависит от напряжения питания, возраста и температуры корпуса микроконтроллера. В технической документации указана погрешность частоты HSI-генератора от -2 до 2,5 % в диапазоне температур -40 до 105 C°.

    Для повышения точности можно через специальный регистр незначительно изменять частоту HSI-генератора, т.е. производить программную калибровку.

    Кварцевый генератор (HSE) надо включать. Как это делается во вкладке System Core -> RCC, мы уже знаем.

    STM32CubeMX

    После этого на схеме он становится синим, и мы можем задать для него частоту. На нашей плате установлен кварцевый резонатор на 8 мГц, поэтому оставим 8.

    В том же поле можно выбрать в качестве исходной частоты тактирования внешний сигнал.

    STM32CubeMX

    В этом режиме входная частота может быть в пределах 1-25 мГц.

    STM32CubeMX

    На пути преобразования сигналов HSI и HSE-генераторов в промежуточный синхросигнал HCLK расположены коммутаторы PLL Source Mux и System Clock Mux, делители и один умножитель.

    STM32CubeMX

    Думаю, не составит труда разобраться, как выбрать нужную частоту сигнала HCLK.

    Скорее всего, непонятен прямоугольник CSS, который можно включать и выключать.

    STM32CubeMX

    На схеме прямоугольник управляет коммутатором System Clock Mux.

    Это система Clock Security System – контроль работы внешнего высокочастотного генератора HSE. При включенной системе CSS контролируется работа HSE-генератора. Если генератор перестает работать, то:

    • система тактирования автоматически переключается на RC-генератор HSI,
    • сигнал тактирования переключается на путь через верхний вывод коммутатора System Clock Mux, т.е. выключается умножитель частоты PLLMul,
    • вырабатывается немаскируемое прерывание для программной обработки этой аварийной ситуации.

    При использовании интерфейса USB есть небогатый выбор значений предделителя частоты для его тактирования.

    STM32CubeMX

    Стандартная частота для работы USB – 48 мГц. При любой другой, прямоугольник to USB краснеет.

    Прямоугольник FLITFCLK показывает, что для тактирования операций программирования FLASH-памяти микроконтроллера всегда используется внутренний RC-генератор HSI.

    STM32CubeMX

    Но это вполне логично, да и повлиять на эту связь мы никак не можем.

    Внизу схемы есть еще один коммутатор, который позволяет вывести сигнал тактирования на вывод микроконтроллера MCO (Microcontroller clock output). Сигнал может быть использован для синхронизации аппаратных узлов, подключенных к микроконтроллеру.

    Для разрешения работы выхода должна быть установлена ”птичка” Master Clock Output во вкладке System Core -> RCC.

    STM32CubeMX

    После этого коммутатор MCO source Mux становится активным и можно выбрать один из источников сигнала:

    • выход умножителя PLL с делителем на 2;
    • RC-генератор HSI;
    • внешний генератор HSE;
    • SYSCLK — выход коммутатора System Clock Mux.

    STM32CubeMX

    Остался левый верхний угол схемы. Это управление тактированием часами реального времени (RTC). Часы представляют собой 32 разрядный счетчик и несколько ячеек памяти, которые работают от отдельного, резервного питания.

    Для тактирования часов RTC есть 2 генератора:

    • LSI – встроенный низкочастотный RC-генератор с частотой 40 кГц.
    • LSE – внешний низкочастотный генератор. Может быть использован, как:
      • внутренний генератор с внешним кварцевым резонатором 32 768 Гц;
      • сигнал от внешнего генератора частотой 0 – 1000 кГц.

      Все, как для генераторов основной системы синхронизации. Только низкие частоты.

      Включение LSE-генератора также происходит во вкладке System Core -> RCC.

      STM32CubeMX

      Прямоугольник Input frecuency станет синим.

      Если еще активировать часы в закладке Timers -> RTC.

      STM32CubeMX

      То коммутатор RTC Clock Mux станет активным и можно будет выбрать источник тактирования RTC-часов.

      STM32CubeMX

      На схеме еще показано, что низкочастотный RC-генератор LSI используется сторожевым таймером. Но для нас это чисто информационная ветка схемы.

      Надеюсь, я ничего не забыл.

      Как получить проект с выбранной конфигурацией я описывал в уроке 3.

      Рассказывать, как задавать конфигурацию в программе, без конфигуратора STM32CubeMX, не имеет смысла. Получится очень большой объем ненужной информации.

      Оперативное переключение системы тактирования необходимо только в приложениях критичных к энергопотреблению. Поговорим об этом, когда будем разрабатывать такие приложения.

      В следующем уроке будем изучать порты ввода-вывода. Напишем первую осмысленную программу.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *