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

STM32 таймеры

Взял STM32F207 у которого частота таймеров до 120 мГц как и частота ядра. Запустил таймер на подсчёт от внутреннего тактирования. Все пределители на 0. Частота самого процессора 120 мГц. А таймер только 60 млн за секунду насчитывает, а не 120 как я ожидал и как мне надо. Запустил аналогичный проект на STM32F4 и там аналогичная ситуация, так же в два раза меньше.

Что делаю не так?

 

P.S. Задача стоит генерировать частоты с шагом примерно 1 Гц на частотах около 20 кГц.

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


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

Да потому что Вы поленились зайти в Datasheet/Reference Manual и посмотреть, на какой шине висит TIM2, и какая максимальная частота синхронизации этой самой шины...

Даже Ваш "калокуб" (с)jcxz может показать, на какой частоте соответствующая шина работает.

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


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

Ничего я не ленился. Я просто не заметил что таймеры могут сидеть на двух шинах.

Хорошо, но тогда опять же вопрос - я тоже самое делал и для таймера 1, который сидит на APB2. И заявлено что на таймеры идёт удвоенная частота APB2. Но результат подсчёта был аналогичный. Почему?

 

Всё, спасибо. Разобрался. TIM1 считает правильно и сидит на нужной мне шине. Изначальный мой косяк в том что я не заметил в кубе что таймеры сидят на обеих шинах. Спасибо что ткнули носом.

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


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

P.S. Задача стоит генерировать частоты с шагом примерно 1 Гц на частотах около 20 кГц.
Выдавайте синус на ЦАП методом прямого синтеза (DDS), после ЦАПа фильтр и компаратор. Сможете получить большие частоты с гораздо меньшим шагом на гораздо более медленном проце.

 

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


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

Выдавайте синус на ЦАП методом прямого синтеза (DDS), после ЦАПа фильтр и компаратор. Сможете получить большие частоты с гораздо меньшим шагом на гораздо более медленном проце.

Спасибо за совет. Я уже и сам к этому варианту пришёл. Но к сожалению тут у меня вторая проблема возникает: мне нужно знать начало фазы каждого периода. У меня стоит задача каждый период этой частоты выдавать на один из 10 каналов по кругу. И вот ничего не могу пока придумать, кроме как, каким то аналоговым способом искать переход фазы через 0, а дальше его на логику пускать.

И ведь меандер мне тоже не совсем подходит, т.к. мне потом эти импульсы нужно на аналоговые усилители пускать.

 

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


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

и компаратор.

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

 

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


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

Не заметил сразу что вы про компаратор тоже пишете. Но вот точность определения начала периода на мой взгляд так будет не великая.
В вопросе было "нужно генерить частоты". Раз речь шла о таймере - значит, на выходе прямоугольник. Компаратор с этим справляется, от его точности зависит лишь степень приближения прямоугольника к меандру. Идеальный меандр нужен крайне редко. Про определение начала периода никто не спрашивал.

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


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

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

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


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

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

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

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

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

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

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

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

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

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