|
STM32F103RB6 необходимо получить сетку частот, необходимо получить сетку частот |
|
|
|
Mar 11 2016, 15:26
|

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

|
Во-первых, не всякая микросхема на входе эти самые 48МГц переварит, а во-вторых... этот вариант уже был.
Хорошо. Самый грубый вариант - включить DMA, закольцевать его, и больше на этом канале ничего не запускать. Из минусов - теряется полностью канал DMA (т.к. более высокий приоритет будет перебивать фоновый, а менее высокий не получит возможности работать), доступ к шине данных так же может быть затруднён (ибо постоянно дёргать пинами - довольно-таки затратно). Так что, я бы не рекомендовал. Таймеры - вроди бы, должны быть "напрямую" соединены с пинами - так что, вариант неплохой, да и работать они будут независимо, главное, чтобы внутреннее тактирование не менялось. Но аппаратный мод, как по мне, был бы лучше. Либо вообще поставить внешний генератор и делители. На той же микросхеме, что уже советовалось. Единственное - придётся подобрать подходящую. У меня не вышло - вся логика 74HC* не вытягивает нужных 48МГц, либо едва-едва достаёт.
Сообщение отредактировал AlanDrakes - Mar 11 2016, 15:32
|
|
|
|
|
Mar 13 2016, 15:42
|

Ambidexter
    
Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282

|
Цитата(vilkin @ Mar 9 2016, 09:47)  Есть на плате STM32F103RB6 необходимо получить сетку частот. Частоты нужны одновременно 48Мгц, 24Мгц, 12Мгц и 6Мгц. Можно ли требуемое получить средствами только STM32? Может есть варианты без лишних компонентов? Варианты есть, можно получить частоты 48 МГц, 24 МГц, 12 МГц и 6 МГц только средствами STM32F103RB6 следующим образом. Выставляем тактовую частоту 48 МГц и выдаём её на пин МСО. Далее, берём TIM1 (или TIM8), ставим три его канала в режим COMPARE, ремапим соответствующие выходы TIM1_CH1, TIM1_CH2, TIM1_CH3. Затем записываем в регистры TIM1_CCR1, TIM1_CCR2 и TIM1_CCR3 значения 2, 4 и 8. Ву а ля. Само собой разумеется, надо настроить пины на выход, всё что надо и где надо разрешить и т.д.
--------------------
Делай сразу хорошо, плохо само получится
|
|
|
|
|
Mar 13 2016, 19:45
|

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

|
Цитата(=GM= @ Mar 13 2016, 17:42)  Ву а ля. И? Что запишем в ARR? Что заставит TIM1_CH1 дернуться, когда таймер досчитает до 4, 6, 8, 12, 14? Аналогично, что будет дергать TIM1_CH2, когда таймер досчитает до 8, 12?
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Mar 14 2016, 20:03
|

Участник

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

|
Цитата(KnightIgor @ Mar 15 2016, 01:29)  Вообще-то, про MCO я был первым!  Не надо плакать. Неправда ваша  Про MCO я в первом сообщении сам написал... В любом случае, KnightIgor персональное спасибо!
|
|
|
|
|
Mar 15 2016, 14:16
|

Местный
  
Группа: Свой
Сообщений: 243
Регистрация: 5-10-06
Из: Зеленоград
Пользователь №: 21 007

|
хех, а я 3 года назад задание давал студенту - на дискавери платке сделать устройство с настраиваемыми выходами частот, чтобы получить как можно больше каналов. Ляпота получилась!  Сам ЦП заводится от внутреннего генератора, а на кварце + PLL заводятся таймеры. Имеем: * 1 высокоскоростной высокоточный канал до 100 МГц (на MCO) * несколько низкоскоростных каналов. MCO/2 верхняя граница, а дальше чем ниже частота, тем выше точность установки (если дробные значения неровные)...
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|