Например TDA7294

Форум РадиоКот • Просмотр темы - STM32F107RCT6 Настройки таймера
Форум РадиоКот
Здесь можно немножко помяукать :)



Текущее время: Вс июл 21, 2019 05:48:58

Часовой пояс: UTC + 3 часа [ Летнее время ]


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: STM32F107RCT6 Настройки таймера
СообщениеДобавлено: Чт май 31, 2018 13:16:50 
Родился

Зарегистрирован: Пн окт 19, 2015 10:19:16
Сообщений: 16
Рейтинг сообщения: 0
Добрый день. У меня контроллер STM32F107RCT6. Настраиваю таймеры TIM1 и TIM2 для генерации частоты на выводах.

Код:
TIM_TimeBaseInitTypeDef timer;
TIM_OCInitTypeDef TIM_OCConfig;

void TIM1_Init(uint16_t presc, uint16_t period, uint16_t repCnt)
{
  TIM_TimeBaseInitTypeDef timer;
  TIM_OCInitTypeDef TIM_OCConfig;

  RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);  // тактирование таймера
  // выход TIM1_CH1 (F1)
  GPIO_mInit(GPIO_Speed_50MHz, GPIO_Mode_AF_PP, GPIOA, GPIO_Pin_8);

  TIM_TimeBaseStructInit(&timer);                       // заполнение поля структуры дефолтными значениями
  timer.TIM_Prescaler = presc;                          // предделитель
  timer.TIM_Period = period;                            // период
  timer.TIM_RepetitionCounter = repCnt;                 // счетчик повторений
  TIM_TimeBaseInit(TIM1, &timer);                       // инициализация TIM1
  TIM_ARRPreloadConfig(TIM1, ENABLE);
 
  TIM1->BDTR |= TIM_BDTR_MOE;                           // включение выхода таймера TIM1
  TIM_OCStructInit(&TIM_OCConfig);
  TIM_OCConfig.TIM_OCMode = TIM_OCMode_Toggle;
  TIM_OCConfig.TIM_OutputState = TIM_OutputState_Enable;
  TIM_OC1Init(TIM1, &TIM_OCConfig);                     // включение канал1 таймера TIM1
  TIM_Cmd(TIM1, ENABLE);                                // включение таймера TIM1_CH1(F1)
}

TIM1_Init(7, 17999, 1);
TIM2_Init(7, 17999);


Шина APB1 работает на частоте 36МГц, а APB2 - на 72МГц. Причем частоту фиксирую непосредственно перед инициализацией таймеров.
Изображение
Из даташита на таймеры на STM32 я вижу формулу, по ней произвожу расчет выходной частоты
Изображение

Взять, например, таймер TIM1: 72000000 / ((7 + 1) * (17999 + 1) * (0 + 1)) = 500Гц. Но фактически на осциллографе вижу частоту 249,9Гц, то есть делиться ровно в 2 раза. Пробовал на разных частотах - результат тот же. Подскажите, пожалуйста, в чем может быть косяк? И еще одна непонятная ситуация - изменения значения RepetitionCounter не влияет на выходную частоту. Пробовал и 1, и 2, и 170 - результат один. Как работает этот RepetitionCounter?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32F107RCT6 Настройки таймера
СообщениеДобавлено: Чт май 31, 2018 14:19:05 
Мучитель микросхем
Аватар пользователя

Карма: 6
Рейтинг сообщений: 83
Зарегистрирован: Пн янв 10, 2011 00:05:37
Сообщений: 423
Откуда: СССР
Рейтинг сообщения: 0
Чем компилируете ? Случайно не Keil ?

_________________
Иван Сусанин - первый полупроводник :solder:


Вернуться наверх
 
JLCPCB, всего $2 за прототип печатной платы! Цвет - любой!

Отличное качество, подтвержденное более чем 600,000 пользователей! Более 10,000 заказов в день.

Зарегистрируйтесь и получите два купона по 5$ каждый:https://jlcpcb.com/quote

Не в сети
 Заголовок сообщения: Re: STM32F107RCT6 Настройки таймера
СообщениеДобавлено: Чт май 31, 2018 14:20:03 
Родился

Зарегистрирован: Пн окт 19, 2015 10:19:16
Сообщений: 16
Рейтинг сообщения: 0
Чем компилируете ? Случайно не Keil ?

Нет, IAR


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $88 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay
Не в сети
 Заголовок сообщения: Re: STM32F107RCT6 Настройки таймера
СообщениеДобавлено: Чт май 31, 2018 14:34:12 
Мучитель микросхем
Аватар пользователя

Карма: 6
Рейтинг сообщений: 83
Зарегистрирован: Пн янв 10, 2011 00:05:37
Сообщений: 423
Откуда: СССР
Рейтинг сообщения: 0
Добавьте на всякий случай

Код:
timer.TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;

_________________
Иван Сусанин - первый полупроводник :solder:


Вернуться наверх
 
Плавкие предохранители LittelFuse. Грамотный подбор

Выбор оптимального плавкого предохранителя требует учета многих параметров. Для упрощения выбора оптимального предохранителя и автоматизации расчетов Littelfuse предлагает онлайн-утилиту. Подробнее>>
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y