VBCores Docs
HomeGitHub
  • VBCores
  • Hardware
    • VBCore VB32G4
    • VB STM32 Programmer
    • BLDC motor driver 30A
    • DC motor driver 15A
    • Stepper motor driver 10A
    • Ethernet - CAN-FD
    • CAN-FD - Raspberry PI
      • Setting up CAN on Raspberry Pi
      • Troubleshooting
      • Работа с CAN FD через Python
    • PowerBoard 30A
    • SBus-HID
    • DC-DC 12V
    • USB 2.0-HUB
    • IMU BNO055
    • IMU BHI360
    • T-encoder
  • Software
    • Arduino IDE
      • Arduino IDE setup
      • Selecting MCU
      • Optional hardware preparation
      • Prepairing a sketch
      • Libraries
      • Examples
        • Все переписать нахрен
        • Работа с I2C
        • I2C detect
        • Датчик BNO055 / I2C
        • Датчик AS5047P / SPI
        • Датчик AS5600 / I2C
        • Работа с бесколлекторными двигателями
          • Simple FOC. Управление скоростью. Нахождение количества пар полюсов.
          • Simple FOC. Управление моментом
          • Чтение данных с датчика тока
        • Работа с коллекторным двигателем
          • Вращение DC мотором
          • Чтение угла по энкодеру. Управление DC мотором по углу
          • Чтение скорости вращения мотора по энкодеру
        • Работа с шаговым двигателем
          • Вращение шагового двигателя.
          • Контроль двигателя по интерфейсу SPI
    • STM32 CUBE IDE
      • Типовые настройки
      • Подсказки начинающим
        • Cube IDE для начинающих
        • Clock configuration
        • Таймеры - прерывания
        • Таймеры - ШИМ
        • Отладка программ
        • Коммуникации - FDCAN
        • Управление DC-мотором
        • Backup программы
  • Cyphal CAN
    • Cyphal CAN
    • PyCyphal
    • Yakut
    • Cyphal Arduino
      • Отправка и получение сообщений по cyphal
  • Работа с ROS
    • Установка Ubuntu, ROS и Arduino
    • ROS_LIB
    • Возможные ошибки
    • Примеры
      • Publisher. Hello World!
      • Publisher with Subscriber
      • Rotation by DC motor
  • Example projects
    • Motor-wheel upgrade
Powered by GitBook
On this page
  • 1. Источник тактирования
  • 2. Настройка PLLCLK
  • 3. Выбор источника "system clock"
  • 4. Частота переферии
  1. Software
  2. STM32 CUBE IDE
  3. Подсказки начинающим

Clock configuration

Настройка "внутренних часов" контроллера

Разберем, что происходит на вкладке "Clock Configuration".

1. Источник тактирования

В первую очередь, нам необходимо выбрать начальный источник постоянной частоты, на основе которого мы можем настроить все остальные частоты. Внутри контроллеров STM32 есть свой внутренний резонатор (HSI), однако он подвержен дрифту в процессе работы, поэтому мы будем использовать внешний резонатор с частотой 8MHz. Для этого, выберем HSE в PLL Source Mux, и в Input frequency установим 8. Input frequency задается характеристиками внешнего резонатора и всегда фиксирован.

Настройка внешнего резонатора (HSE)

На каждом модуле VBCore есть внешний резонатор 8 MHz. Чтобы использовать его, надо в System Core -> RCC выбрать High Speed Clock -> Crystal/Ceramic Resonator. Все остальное CubeIDE сделает за вас.

2. Настройка PLLCLK

Этот блок отвечает за "динамическое" задание частоты, которое может отличаться от частоты входящей. Для этого мы можем выбрать необходимые множители и делители (в нашем случае X80, /2).

3. Выбор источника "system clock"

Тут мы можем выбрать, какую частоту будем использовать для переферии и системной частоты (HCLK). Практически всегда это будет PLLCLK.

Стоит отметить, что в несложных проектах настройку большей части параметров можно вообще пропустить. Достаточно настроить внешнее тактирование, вписать желаемое значение в HCLK и нажать Enter - CubeIDE попробует подобрать все параметры сама.

4. Частота переферии

Далее, мы можем выбрать нужные значения делителей (Prescaler) и множителей (X 1, в нашем случае) для получения необходимой частоты переферии. Переферия делится на две шины (APB1, APB2). Какие таймеры и модули (ADC и пр.) относятся к какой шине можно найти в datasheet на контроллер. Частота, полученная здесь, передается дальше в каждый модуль/таймер, после чего работает уже и его Prescaler (например, prescalser таймера мы настраивали в прошлом примере).

Частота большинства модулей коммуникации (SPI, USART, CAN, ...) настраивается отдельно. Принцип точно такой же, надо выбрать источник или просто вписать желаемую частоту.

Например, на картинке выше можно видеть USART1 (тоже справа, под основной переферией). CAN обычно в правом нижнем углу.