Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: STM32 таймеры
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > ARM, 32bit
IgorAVR2
Взял STM32F207 у которого частота таймеров до 120 мГц как и частота ядра. Запустил таймер на подсчёт от внутреннего тактирования. Все пределители на 0. Частота самого процессора 120 мГц. А таймер только 60 млн за секунду насчитывает, а не 120 как я ожидал и как мне надо. Запустил аналогичный проект на STM32F4 и там аналогичная ситуация, так же в два раза меньше.
Что делаю не так?

P.S. Задача стоит генерировать частоты с шагом примерно 1 Гц на частотах около 20 кГц.
Arlleex
Код в студию. Желательно без всяких там HAL-ов и кубов.
IgorAVR2
Проект по STM32F4 DISCOVERY как раз таки в Кубе. Загрузил на Яндекс диск
https://yadi.sk/d/RXhNVbK93WZeeQ
Arlleex
Да потому что Вы поленились зайти в Datasheet/Reference Manual и посмотреть, на какой шине висит TIM2, и какая максимальная частота синхронизации этой самой шины...
Даже Ваш "калокуб" (с)jcxz может показать, на какой частоте соответствующая шина работает.
IgorAVR2
Ничего я не ленился. Я просто не заметил что таймеры могут сидеть на двух шинах.
Хорошо, но тогда опять же вопрос - я тоже самое делал и для таймера 1, который сидит на APB2. И заявлено что на таймеры идёт удвоенная частота APB2. Но результат подсчёта был аналогичный. Почему?

Всё, спасибо. Разобрался. TIM1 считает правильно и сидит на нужной мне шине. Изначальный мой косяк в том что я не заметил в кубе что таймеры сидят на обеих шинах. Спасибо что ткнули носом.
Сергей Борщ
QUOTE (IgorAVR2 @ May 26 2018, 18:54) *
P.S. Задача стоит генерировать частоты с шагом примерно 1 Гц на частотах около 20 кГц.
Выдавайте синус на ЦАП методом прямого синтеза (DDS), после ЦАПа фильтр и компаратор. Сможете получить большие частоты с гораздо меньшим шагом на гораздо более медленном проце.
IgorAVR2
Цитата(Сергей Борщ @ May 28 2018, 12:38) *
Выдавайте синус на ЦАП методом прямого синтеза (DDS), после ЦАПа фильтр и компаратор. Сможете получить большие частоты с гораздо меньшим шагом на гораздо более медленном проце.

Спасибо за совет. Я уже и сам к этому варианту пришёл. Но к сожалению тут у меня вторая проблема возникает: мне нужно знать начало фазы каждого периода. У меня стоит задача каждый период этой частоты выдавать на один из 10 каналов по кругу. И вот ничего не могу пока придумать, кроме как, каким то аналоговым способом искать переход фазы через 0, а дальше его на логику пускать.
И ведь меандер мне тоже не совсем подходит, т.к. мне потом эти импульсы нужно на аналоговые усилители пускать.
IgorAVR2
Цитата(Сергей Борщ @ May 28 2018, 12:38) *
и компаратор.

Не заметил сразу что вы про компаратор тоже пишете. Но вот точность определения начала периода на мой взгляд так будет не великая.
Сергей Борщ
QUOTE (IgorAVR2 @ May 29 2018, 09:57) *
Не заметил сразу что вы про компаратор тоже пишете. Но вот точность определения начала периода на мой взгляд так будет не великая.
В вопросе было "нужно генерить частоты". Раз речь шла о таймере - значит, на выходе прямоугольник. Компаратор с этим справляется, от его точности зависит лишь степень приближения прямоугольника к меандру. Идеальный меандр нужен крайне редко. Про определение начала периода никто не спрашивал.
IgorAVR2
Я не спрашивал, т.к. не хотел всей задачей всех грузить. Но за совет вам всё равно спасибо, т.к. он был по существу.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2024 Invision Power Services, Inc.