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

 
 
> STM32F103 - как получить на выходе пина меандр в половину тактовой частоты?
zheka
сообщение Mar 2 2015, 18:21
Сообщение #1


Гуру
******

Группа: Участник
Сообщений: 2 072
Регистрация: 14-01-06
Пользователь №: 13 164



STM32F103 - как получить на выходе пина меандр в половину тактовой частоты?
Хочу настроить тактовый генератор на 64 МГц и получить на выходе 32 МГц.
Перерыл интернет - я наверное даже не знаю по каким ключевым словам искать
В какой режим нужно отправить таймер, чтобы получить желаемое?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
SSerge
сообщение Mar 3 2015, 17:00
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 719
Регистрация: 13-09-05
Из: Novosibirsk
Пользователь №: 8 528



Подойдёт, я думаю, режим Gated Mode - The counter clock is enabled when the trigger input (TRGI) is high,
это в поле SMS регистра SMCR.
Ведущий будет своим сигналом разрешать/запрещать клок для ведомого.


--------------------
Russia est omnis divisa in partes octo.
Go to the top of the page
 
+Quote Post
zheka
сообщение Mar 3 2015, 17:40
Сообщение #3


Гуру
******

Группа: Участник
Сообщений: 2 072
Регистрация: 14-01-06
Пользователь №: 13 164



Цитата(SSerge @ Mar 3 2015, 20:00) *
Подойдёт, я думаю, режим Gated Mode - The counter clock is enabled when the trigger input (TRGI) is high,
это в поле SMS регистра SMCR.
Ведущий будет своим сигналом разрешать/запрещать клок для ведомого.


Спасибо, получилось. РАзобрался с каскадами. Вывел мастер и слейв на осциллограф.
Вот код
Код
    GPIO_InitStructure.GPIO_Pin = (GPIO_Pin_6 | GPIO_Pin_0);
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
  GPIO_Init(GPIOA, &GPIO_InitStructure);
    
    
    
  TIM_TimeBaseStructInit(&TIM_InitStructure);
  TIM_InitStructure.TIM_Prescaler = 1000-1;  
  TIM_InitStructure.TIM_Period = 1000;
  TIM_TimeBaseInit(TIM2, &TIM_InitStructure);

  TIM_OCStructInit(&TIM_OCConfig);
  TIM_OCConfig.TIM_OCMode = TIM_OCMode_Toggle;
  TIM_OCConfig.TIM_OutputState = TIM_OutputState_Enable;
  TIM_OC1Init(TIM2, &TIM_OCConfig);

  /* Select the Master Slave Mode */
  TIM_SelectMasterSlaveMode(TIM2, TIM_MasterSlaveMode_Enable);
  /* Master Mode selection */
  TIM_SelectOutputTrigger(TIM2, TIM_TRGOSource_Update);


  TIM_Cmd(TIM2, ENABLE);

  TIM_TimeBaseStructInit(&TIM_InitStructure);
  TIM_InitStructure.TIM_Prescaler = 1-1;  
  TIM_InitStructure.TIM_Period = 10;
  TIM_TimeBaseInit(TIM3, &TIM_InitStructure);

  TIM_OCStructInit(&TIM_OCConfig);
  TIM_OCConfig.TIM_OCMode = TIM_OCMode_Toggle;
  TIM_OCConfig.TIM_OutputState = TIM_OutputState_Enable;
  TIM_OC1Init(TIM3, &TIM_OCConfig);

  /* Slave Mode selection: TIM3 */
    TIM_SelectSlaveMode(TIM3, TIM_SlaveMode_Gated);
    TIM_SelectInputTrigger(TIM3, TIM_TS_ITR1);

    /* Select the Master Slave Mode */
    TIM_SelectMasterSlaveMode(TIM3, TIM_MasterSlaveMode_Enable);

    /* Master Mode selection: TIM3 */
    TIM_SelectOutputTrigger(TIM3, TIM_TRGOSource_Update);
  TIM_Cmd(TIM3, ENABLE);


Прилагаю ниже осциллограмму. Настроил на 10 клоков (красные клоки), но реакция ведомого таймера (спад синего графика) почему-то на одиннадцатый клок. Чем объяснить?

Сообщение отредактировал zheka - Mar 3 2015, 17:46
Go to the top of the page
 
+Quote Post
SSerge
сообщение Mar 3 2015, 18:14
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 719
Регистрация: 13-09-05
Из: Novosibirsk
Пользователь №: 8 528



Цитата(zheka @ Mar 4 2015, 00:40) *
Настроил на 10 клоков (красные клоки), но реакция ведомого таймера (спад синего графика) почему-то на одиннадцатый клок. Чем объяснить?

Может потому, что таймер считает от 0 до 10?

Тут вообще не очень понятно.
TIM_SelectOutputTrigger(TIM2, TIM_TRGOSource_Update); приведёт к тому, что TIM2 на своём выходе TRGO будет формировать импульс длительностью в 1 такт в момент апдейта, через каждые 1000*1001 тактов.

Только в этот момент на TIM3 будет поступать входной клок, по одному клоку на каждый импульс TRGO.
Поскольку в TIM3->ARR заряжено 10, то TIM3 отсчитает 11 таких клоков до своего апдейта.


--------------------
Russia est omnis divisa in partes octo.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- zheka   STM32F103 - как получить на выходе пина меандр в половину тактовой частоты?   Mar 2 2015, 18:21
- - ViKo   MCO смотрите.   Mar 2 2015, 18:26
- - zheka   спасибо, но мне бы с таймером. Я хочу в определенн...   Mar 2 2015, 19:10
|- - adnega   Цитата(zheka @ Mar 2 2015, 22:10) вывести...   Mar 3 2015, 07:04
- - ViKo   Таймер может работать на частоте шины. Делить на 2...   Mar 3 2015, 06:55
- - zheka   Вот что мне нужно было: Код TIM_TimeBaseStructInit...   Mar 3 2015, 16:31
|- - SSerge   Цитата(zheka @ Mar 3 2015, 23:31) Что-то ...   Mar 3 2015, 16:49
- - zheka   И при этом ведущий же таймер будет дергать клоком,...   Mar 3 2015, 16:53
- - zheka   Значит нужно 999 для TIM2 и 9 для TIM3 ? Не... я п...   Mar 3 2015, 19:13
- - SSerge   Figure 8. Clock tree в реф. мануале. Видим что вс...   Mar 3 2015, 19:13
- - zheka   Вот ведущий таймер TIM_InitStructure.TIM_Prescale...   Mar 3 2015, 19:28
- - SSerge   Так. SYSCLK=72 000 000 прескалер AHB = 1 прескалер...   Mar 3 2015, 19:59
- - zheka   иными словами, при каскадировании второй таймер бу...   Mar 3 2015, 20:15
|- - SSerge   Цитата(zheka @ Mar 4 2015, 03:07) иными с...   Mar 3 2015, 20:30
- - zheka   ЦитатаНу так TRGO-то можно по-разному формировать....   Mar 4 2015, 03:43
- - zheka   Скажите, а у TIM1 есть какие-нибудь особенности в ...   Mar 4 2015, 16:48
- - zheka   Тихо сам с собою.... В принципе, нужную конструкци...   Mar 4 2015, 18:08
|- - SSerge   Цитата(zheka @ Mar 5 2015, 01:08) Осталос...   Mar 4 2015, 20:31
|- - zheka   Цитата(SSerge @ Mar 5 2015, 00:31) У TIM1...   Mar 4 2015, 20:44
|- - SSerge   Цитата(zheka @ Mar 5 2015, 03:44) Сделал,...   Mar 5 2015, 00:55
|- - zheka   Цитата(SSerge @ Mar 5 2015, 03:55) Если в...   Mar 5 2015, 04:39
|- - SSerge   Цитата(zheka @ Mar 5 2015, 11:39) Но - я ...   Mar 5 2015, 12:08
- - zheka   Подождите... Ведь импульс это и есть -туда плюс об...   Mar 5 2015, 13:28


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

 


RSS Текстовая версия Сейчас: 31st July 2025 - 19:51
Рейтинг@Mail.ru


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