Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: [STM32F4xx] Определение рабочей частоты кварца
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Ivan Kuznetzov
Добрый день всем! Меня интересует вопрос - возможно ли из прошивки как-то грубо измерить частоту HSE кварца, подключенного к STM32F4, опираясь на HSI?
jcxz
Считать значения регистров RCC и вычислить.

Цитата(Ivan Kuznetzov @ Oct 8 2014, 15:28) *
Добрый день всем! Меня интересует вопрос - возможно ли из прошивки как-то грубо измерить частоту HSE кварца, подключенного к STM32F4, опираясь на HSI?

Хм... пока писал ответ, ТС изменил вопрос...
Цитата(Ivan Kuznetzov @ Oct 8 2014, 15:28) *
Добрый день всем! Меня интересует вопрос - возможно ли из прошивки как-то промерять частоту HSE кварца, подключенного к STM32F4?
Ivan Kuznetzov
Какие регистры необходимо считать? Мне кажется, что так не получится, т.к. в стандартном варианте HSE_VALUE задана константой. Т.е. тут как раз необходимо измерить, опираясь, например, на констатнту HSI (8 МГц)
jcxz
Измерить период, опираясь на известный эталон времени (хоть HSI). Потом пересчитать к входной частоте.
Только зачем???
Ivan Kuznetzov
Цитата(jcxz @ Oct 8 2014, 19:17) *
Измерить период, опираясь на известный эталон времени (хоть HSI). Потом пересчитать к входной частоте.
Только зачем???

Я правильно понимаю, что для измерения потребуется заводить выход MCO на вход какого-нибудь таймера? Или всё-таки это можно сделать по регистрам?
Зачем: в проекте могут использоваться разные кварцы - это очень удобно, когда есть решение, позволяющее определить номинал кварца.
scifi
Предлагаю посмотреть на clock tree (приложено).
Очевидно, что можно RTC тактировать от кварца, а всё остальное - от HSI.
Или, например, сделать 48 МГц для I2S из HSI, а остальное тактировать от кварца.
И то, и другое позволяет измерить частоту кварца относительно частоты HSI. Наверняка возможны ещё какие-то комбинации.
jcxz
Цитата(Ivan Kuznetzov @ Oct 9 2014, 11:49) *
Зачем: в проекте могут использоваться разные кварцы - это очень удобно, когда есть решение, позволяющее определить номинал кварца.

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

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

Цитата(scifi @ Oct 9 2014, 12:48) *
Очевидно, что можно RTC тактировать от кварца, а всё остальное - от HSI.

Предполагаю, что Phy USB и Ethernet также должны быть кварцованы.
Golikov A.
Цитата
А зачем разные? Вы хотите сделать партию одинаковых устройств на тех кварцах (разных), что есть в наличии? Купите пачку одинаковых и не городите гемор.


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

А потом когда уже почти все работает, меняется проц или семейство, и до свидания мертворожденное существо...
Ivan Kuznetzov
Цитата(scifi @ Oct 9 2014, 12:48) *
И то, и другое позволяет измерить частоту кварца относительно частоты HSI. Наверняка возможны ещё какие-то комбинации.


как измерить-то? чем? можете привести пример кода?
Golikov A.
запустите 2 таймера, один на внутреннем кварце, другой на внешнем, когда один из них отсчитает по прерыванию посмотрите что во 2. Частота внутреннего кварца известна, внешний вычислите.
Один таймер внутренний проца, другой RTC
Ivan Kuznetzov
Цитата(Golikov A. @ Oct 11 2014, 01:19) *
запустите 2 таймера, один на внутреннем кварце, другой на внешнем, когда один из них отсчитает по прерыванию посмотрите что во 2. Частота внутреннего кварца известна, внешний вычислите.
Один таймер внутренний проца, другой RTC

Спасибо!
jcxz
Как-то в одном проекте была проблема с кварцем - что-то глючило, но непонятно.
Было подозрение на неверную частоту кварца. Но грубые измерения (осциллограф) показывали
полный порядок.
Взял GPS-приёмник у которого есть выход 1Гц импульсов, завёл на прерывание GPIO.
Померил точно им частоту, нашёл величину ошибки (стабильная величина) и почти сразу-же
понял что она == 1/64000. А 64000 - это было значение делителя частоты кварца.
Т.е. - при записи делителя в регистр таймера забыл из него вычесть 1. laughing.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.