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

[STM32F4xx] Определение рабочей частоты кварца

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Считать значения регистров RCC и вычислить.

 

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

Хм... пока писал ответ, ТС изменил вопрос...

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Какие регистры необходимо считать? Мне кажется, что так не получится, т.к. в стандартном варианте HSE_VALUE задана константой. Т.е. тут как раз необходимо измерить, опираясь, например, на констатнту HSI (8 МГц)

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Измерить период, опираясь на известный эталон времени (хоть HSI). Потом пересчитать к входной частоте.

Только зачем???

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Измерить период, опираясь на известный эталон времени (хоть HSI). Потом пересчитать к входной частоте.

Только зачем???

Я правильно понимаю, что для измерения потребуется заводить выход MCO на вход какого-нибудь таймера? Или всё-таки это можно сделать по регистрам?

Зачем: в проекте могут использоваться разные кварцы - это очень удобно, когда есть решение, позволяющее определить номинал кварца.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Предлагаю посмотреть на clock tree (приложено).

Очевидно, что можно RTC тактировать от кварца, а всё остальное - от HSI.

Или, например, сделать 48 МГц для I2S из HSI, а остальное тактировать от кварца.

И то, и другое позволяет измерить частоту кварца относительно частоты HSI. Наверняка возможны ещё какие-то комбинации.

post-25136-1412837032_thumb.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Зачем: в проекте могут использоваться разные кварцы - это очень удобно, когда есть решение, позволяющее определить номинал кварца.

А зачем разные? Вы хотите сделать партию одинаковых устройств на тех кварцах (разных), что есть в наличии? Купите пачку одинаковых и не городите гемор.

Или Вам разные тактовые нужны? Так для этого кварц менять не нуна, для этого есть PLL.

 

ЗЫ: А можно ещё номинал резисторов подтяжки определять - тоже ведь удобно :biggrin:

 

Очевидно, что можно RTC тактировать от кварца, а всё остальное - от HSI.

Предполагаю, что Phy USB и Ethernet также должны быть кварцованы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А зачем разные? Вы хотите сделать партию одинаковых устройств на тех кварцах (разных), что есть в наличии? Купите пачку одинаковых и не городите гемор.

 

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

 

А потом когда уже почти все работает, меняется проц или семейство, и до свидания мертворожденное существо...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

И то, и другое позволяет измерить частоту кварца относительно частоты HSI. Наверняка возможны ещё какие-то комбинации.

 

как измерить-то? чем? можете привести пример кода?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

запустите 2 таймера, один на внутреннем кварце, другой на внешнем, когда один из них отсчитает по прерыванию посмотрите что во 2. Частота внутреннего кварца известна, внешний вычислите.

Один таймер внутренний проца, другой RTC

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

запустите 2 таймера, один на внутреннем кварце, другой на внешнем, когда один из них отсчитает по прерыванию посмотрите что во 2. Частота внутреннего кварца известна, внешний вычислите.

Один таймер внутренний проца, другой RTC

Спасибо!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Как-то в одном проекте была проблема с кварцем - что-то глючило, но непонятно.

Было подозрение на неверную частоту кварца. Но грубые измерения (осциллограф) показывали

полный порядок.

Взял GPS-приёмник у которого есть выход 1Гц импульсов, завёл на прерывание GPIO.

Померил точно им частоту, нашёл величину ошибки (стабильная величина) и почти сразу-же

понял что она == 1/64000. А 64000 - это было значение делителя частоты кварца.

Т.е. - при записи делителя в регистр таймера забыл из него вычесть 1. :laughing:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...