Например TDA7294

Форум РадиоКот • Просмотр темы - STM32: генерирование частот порядка единиц МГц таймером
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Вт апр 16, 2024 21:58:37

Часовой пояс: UTC + 3 часа


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



Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: STM32: генерирование частот порядка единиц МГц таймером
СообщениеДобавлено: Ср мар 15, 2017 22:44:34 
Сверлит текстолит когтями
Аватар пользователя

Карма: 11
Рейтинг сообщений: 13
Зарегистрирован: Пт июл 21, 2006 15:05:19
Сообщений: 1266
Откуда: плод воображения
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Всем привет! Поясните не совсем понимающему, реально ли осуществить сабж? Подозреваю, что реально, посредством использование режима таймера Output Compare. Но вот на деле нифига не получается. Инициализационный код генерю Кубом, а именно вот так:

Спойлер
Код:
static void MX_TIM2_Init(void)
{

  TIM_ClockConfigTypeDef sClockSourceConfig;
  TIM_MasterConfigTypeDef sMasterConfig;
  TIM_OC_InitTypeDef sConfigOC;

  htim2.Instance = TIM2;
  htim2.Init.Prescaler = 0;
  htim2.Init.CounterMode = TIM_COUNTERMODE_UP;
  htim2.Init.Period = 2;
  htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
  if (HAL_TIM_Base_Init(&htim2) != HAL_OK)
  {
    Error_Handler();
  }

  sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
  if (HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig) != HAL_OK)
  {
    Error_Handler();
  }

  if (HAL_TIM_OC_Init(&htim2) != HAL_OK)
  {
    Error_Handler();
  }

  sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
  sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
  if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK)
  {
    Error_Handler();
  }

  sConfigOC.OCMode = TIM_OCMODE_TOGGLE;
  sConfigOC.Pulse = 100;
  sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
  sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
  if (HAL_TIM_OC_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_1) != HAL_OK)
  {
    Error_Handler();
  }

  HAL_TIM_MspPostInit(&htim2);

}


Потом из main() запускаю таймер: HAL_TIM_OC_Start(&htim2,1);

И... ничего не происходит. Выходная нога, будто в воздухе висит. Что я делаю не так?

_________________
R2AIV 73!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32: генерирование частот порядка единиц МГц таймером
СообщениеДобавлено: Чт мар 16, 2017 06:35:57 
Встал на лапы

Карма: 1
Рейтинг сообщений: 39
Зарегистрирован: Ср фев 01, 2012 10:55:53
Сообщений: 145
Рейтинг сообщения: 0
Период таймера 2, а значение канала 100 - вот он и не срабатывает.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32: генерирование частот порядка единиц МГц таймером
СообщениеДобавлено: Чт мар 16, 2017 08:04:21 
Сверлит текстолит когтями
Аватар пользователя

Карма: 11
Рейтинг сообщений: 13
Зарегистрирован: Пт июл 21, 2006 15:05:19
Сообщений: 1266
Откуда: плод воображения
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Нашел этот косяк - исправил, все равно тишина.

_________________
R2AIV 73!


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

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

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: STM32: генерирование частот порядка единиц МГц таймером
СообщениеДобавлено: Вс апр 02, 2017 00:16:13 
Встал на лапы

Зарегистрирован: Пн июн 13, 2016 10:41:52
Сообщений: 129
Рейтинг сообщения: 0
А таймер сам стартанули хоть??
Функция халовская такая есть - HAL_TIM_Base_Start(&htim) . По умолчанию Куб таймер не стартует. Одной функции TIM_Init недостаточно. Вы его сами должны стартануть вот этой функцией. И он пойдет тикать.

И советую уходить от Куба, и чем скорее, тем лучше. Он пригоден только для того, чтобы что-то подсмотреть, чтобы легче разобраться.
А так.. не советую. Получите тормоза с кодом, нулевую оптимизацию со всеми вытекающими.

И если стоит задача генерации импульсов с частотой единицы мегагерц, то можно попробовать использовать прерывание таймера, в котором при переполнении просто будет инвертироваться нужная нога. В обработчике прерывания достаточно добавить
(GPIOx->ODR ^= GPIO_ODR_ODRx;)
Но таким способом на практике больше 5МГц на бюджетных контроллерах получить проблематично. Это ерунда, что пишут, что частота GPIO может быть 50Мгц. Чушь полнейшая. Проверено не раз. Больше 5МГц по таймеру.. увы.


Вернуться наверх
 
Организация питания на основе надежных литиевых аккумуляторов EVE и микросхем азиатского производства

Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: STM32: генерирование частот порядка единиц МГц таймером
СообщениеДобавлено: Вс апр 02, 2017 15:54:35 
Сверлит текстолит когтями
Аватар пользователя

Карма: 11
Рейтинг сообщений: 13
Зарегистрирован: Пт июл 21, 2006 15:05:19
Сообщений: 1266
Откуда: плод воображения
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Да все, разобрался уже, спасибо! Таймер стартовал. Проблема была в некорректных настройках PLL, которые почему то Куб предложил - так что с этим надо быть осторожнее. Все уже давно работает и еще как )

_________________
R2AIV 73!


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 

Часовой пояс: UTC + 3 часа


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

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


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

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


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