реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
vilkin
сообщение Mar 9 2016, 09:47
Сообщение #1


Участник
*

Группа: Свой
Сообщений: 66
Регистрация: 13-12-04
Из: Москва
Пользователь №: 1 466



Есть на плате STM32F103RB6 необходимо получить сетку частот.
Частоты нужны одновременно 48Мгц, 24Мгц, 12Мгц и 6Мгц.
Фазовые сдвиги между ними не принципиальны.
Можно ли требуемое получить средствами только STM32?
Желательно не отрывая её от основных задач.
Была мысль использовать DMA выкидывая в порт GPIO из RAM последовательность чисел от 0 до 15.
Но я так понял, не укладываемся по скорострельности... или я ошибаюсь?
Остается в уме только один вариант вывести мастер клок 48Мгц наружу и поделить его двоичным счетчиком.
Может есть варианты без лишних компонентов?
Go to the top of the page
 
+Quote Post
scifi
сообщение Mar 9 2016, 09:51
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



А таймеров там нет что ли?
Go to the top of the page
 
+Quote Post
vilkin
сообщение Mar 9 2016, 10:09
Сообщение #3


Участник
*

Группа: Свой
Сообщений: 66
Регистрация: 13-12-04
Из: Москва
Пользователь №: 1 466



Цитата(scifi @ Mar 9 2016, 15:51) *
А таймеров там нет что ли?
Таймера есть... только не соображу как их использовать? Одним не справишься тут, а 4 штуки жалко тратить...
Go to the top of the page
 
+Quote Post
scifi
сообщение Mar 9 2016, 10:15
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Один таймер способен выдавать две частоты: F и F/2. Чтобы получить F, на одном из каналов делаем, например, режим ШИМ. Чтобы получить F/2, на другом канале того же таймера делаем режим "toggle on match".
Короче, двух таймеров должно хватить.
Go to the top of the page
 
+Quote Post
KnightIgor
сообщение Mar 9 2016, 10:34
Сообщение #5


Знающий
****

Группа: Участник
Сообщений: 643
Регистрация: 29-05-09
Из: Германия
Пользователь №: 49 725



Цитата(vilkin @ Mar 9 2016, 11:09) *
Таймера есть... только не соображу как их использовать? Одним не справишься тут, а 4 штуки жалко тратить...

Если жалко внутренних таймеров, которых дофига, можно вернуться к Вашей же идее поставить одну микросхему счетчика (161 или 393) снаружи.
Если только таймеры, то:
1. Запустить процессор на 48MHz,
2. Разрешить выход MCO с тактом от SYSYCLK - будет 48MHz
3. Взять еще три таймера (например, TIM5, TIM9 и TIM14),
3.1. счетчик тактировать без деления (PSC=0),
3.2. перезагрузки счетчиков (ARR) сделать 0, 1 и 3 для соответствующих таймеров,
3.2. запрограммировать в каждом по одному каналу в режиме Output Compare Mode (Toggle Mode), который перекидывает выход при каждом совпадении CCRx регистра с CNT; все CCRx = 0.

Должно работать.

P.S. scifi прав - один таймер можно сэкономить, взяв в нем два канала, второй - в PWM.

Сообщение отредактировал KnightIgor - Mar 9 2016, 10:38
Go to the top of the page
 
+Quote Post
AlanDrakes
сообщение Mar 9 2016, 10:36
Сообщение #6


Частый гость
**

Группа: Участник
Сообщений: 101
Регистрация: 2-05-15
Из: Россия, Омск
Пользователь №: 86 474



Может, поставить после выхода MCO (подать на него внутренние 48MHz) на три триггера в режиме счёта? На выходах как раз и будет
C = 48MHz, Q1 = 24MHz, Q2 = 12MHz, Q3 = 6MHz.
Go to the top of the page
 
+Quote Post
vilkin
сообщение Mar 9 2016, 10:41
Сообщение #7


Участник
*

Группа: Свой
Сообщений: 66
Регистрация: 13-12-04
Из: Москва
Пользователь №: 1 466



Три триггера, это равносильно внешнему двоичному счетчику.
Не хотелось бы внешних компонентов.
Если вариантов больше не будет, то буду тратить таймеры...
Go to the top of the page
 
+Quote Post
scifi
сообщение Mar 9 2016, 10:45
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(vilkin @ Mar 9 2016, 13:41) *
Если вариантов больше не будет, то буду тратить таймеры...

Что за беда? Таймеры для того и сделаны, чтобы их тратить.
Вот у меня всё время лишние остаются - так переживаю, что сил нет biggrin.gif
Go to the top of the page
 
+Quote Post
AleksBak
сообщение Mar 9 2016, 10:47
Сообщение #9


Частый гость
**

Группа: Участник
Сообщений: 132
Регистрация: 6-02-16
Из: г. Баку
Пользователь №: 90 364



Цитата(scifi @ Mar 9 2016, 14:15) *
Один таймер способен выдавать две частоты: F и F/2...

А как один Таймер может выдать на выходе контроллера 2 частоты? Что-то не понял пока что.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Mar 9 2016, 11:06
Сообщение #10


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Один модуль сравнения (output compare) настраивается в режим TOGGLE и дает F/2, второй - в режим PWM и дает F. Точнее - F/4 и F/2 от входной.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
scifi
сообщение Mar 9 2016, 11:12
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(Сергей Борщ @ Mar 9 2016, 14:06) *
Точнее - F/4 и F/2 от входной.

А, ну да. И учитывая, что входная - не больше 72 МГц, выходит, что 48 МГц можно получить только через MCO.
Go to the top of the page
 
+Quote Post
AleksBak
сообщение Mar 9 2016, 11:22
Сообщение #12


Частый гость
**

Группа: Участник
Сообщений: 132
Регистрация: 6-02-16
Из: г. Баку
Пользователь №: 90 364



Цитата(Сергей Борщ @ Mar 9 2016, 15:06) *
Один модуль сравнения (output compare) настраивается в режим TOGGLE и дает F/2, второй - в режим PWM и дает F. Точнее - F/4 и F/2 от входной.

Надо мне про режим TOGGLE у output compare еще почитать. Я пока новичок в СТМ контроллерах (3 месяца всего), а информации валом и все сразу не успеваешь прочитать/узнать. Крутой контроллер все-таки (по сравнению с др.)! А кого-то "тошнило" от его периферии.
Go to the top of the page
 
+Quote Post
scifi
сообщение Mar 9 2016, 12:32
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(AleksBak @ Mar 9 2016, 14:22) *
Крутой контроллер все-таки (по сравнению с др.)! А кого-то "тошнило" от его периферии.

Ну, по шкале "крутизны" он где-то не очень высоко и не очень низко biggrin.gif А "тошнота", как правило, возникает у эстетов. Это на тему "шашечки или ехать" laughing.gif
Go to the top of the page
 
+Quote Post
HHIMERA
сообщение Mar 10 2016, 08:20
Сообщение #14


Местный
***

Группа: Участник
Сообщений: 226
Регистрация: 10-07-09
Пользователь №: 51 126



Цитата(AleksBak @ Mar 9 2016, 13:47) *
А как один Таймер может выдать на выходе контроллера 2 частоты? Что-то не понял пока что.

Через DMAR... 4 частоты можно выплюнуть... одним таймером...
Go to the top of the page
 
+Quote Post
adnega
сообщение Mar 10 2016, 09:33
Сообщение #15


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(HHIMERA @ Mar 10 2016, 11:20) *
Через DMAR... 4 частоты можно выплюнуть... одним таймером...

Можно и больше, только не на такой высокой частоте.
DMA-транзакция стартует не сразу, а со значительной задержкой (~12 тактов).
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st June 2025 - 17:21
Рейтинг@Mail.ru


Страница сгенерированна за 0.01501 секунд с 7
ELECTRONIX ©2004-2016