Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.93/40: Рейтинг темы: голосов - 40, средняя оценка - 4.93
0 / 0 / 0
Регистрация: 01.06.2015
Сообщений: 1
1

STM32F4 генерация меандра

27.10.2013, 14:49. Показов 7950. Ответов 6
Метки нет (Все метки)

Помогите, пожалуйста, сгенерировать меиндр с частотой 8 МГц на таймере- счетчике,
включенном в режиме ШИМ. Тактирование от MCO1/MCO2 не подходит!
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.10.2013, 14:49
Ответы с готовыми решениями:

Генерация сигнала с STM32F4
Мне нужно сгенерировать последовательность прямоугольных импульсов нужной мне длительности и...

Формирование меандра (8051)
Подскажите или посоветуйте где можно прочесть. Начали изучение микроконтроллера 8051. Задача:...

Формирователь меандра с частотой 36 кГц (8051, Proteus, ASM)
Задача мне была задана такая: на выходе порта P1.1 сформировать меандр с частотой 36 кГц, тактовая...

Использование TIMER в STM32 для генерации меандра. Вопрос.
Собственно второй день бодаюсь с сабщем. в Гугле - полный голяк по сабжу. хотя насиловал запрсную...

6
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,483
27.10.2013, 15:04 2
Цитата Сообщение от tiom
Помогите, пожалуйста, сгенерировать меиндр с частотой 8 МГц на таймере- счетчике,
включенном в режиме ШИМ. Тактирование от MCO1/MCO2 не подходит!
А в чём подвох-то?

Ну возьмите готовый демопроект (из stm32f4discovery_fw.zip) -> Peripheral_Examples\TIM_PWM_Output. Что-то ещё сверх стандартной инициализации таймера надо? :-0
0
0 / 0 / 0
Регистрация: 01.06.2015
Сообщений: 1
27.10.2013, 15:23 3
Вопрос в корректности генерации такой высокой частоты через ШИМ меиндр.
0
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,483
27.10.2013, 16:00 4
Цитата Сообщение от tiom
Вопрос в корректности генерации такой высокой частоты через ШИМ меиндр.
Выставите системную частоту на PLL = 160 МГц, imho получится хороший меиндр (коэффициент ШИМ ровно 50%).
И 8 МГц в данном случае - не такая уж высокая частота. В приведённом выше примере 28 МГц получают.

Попробуйте, с готовым примером делов на пять минут.
0
0 / 0 / 0
Регистрация: 01.06.2015
Сообщений: 1
28.10.2013, 12:40 5
Большое спасибо за помощь! Я получил меиндр 8 МГц на T1-CH1 на PA8.
В моей задаче необходимо задействовать еще и инверсный меиндр на T1-CH1N на PA7.
Но что-то не выходит!

void GPIO_Confikurotion(void)
{
GPIO_InitTypeDef GPIO_InitStructure;

/*-------------------------- GPIO Confikurotion ----------------------------*/
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_7;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);

/* Connect TYM1 pins to AF */
GPIO_PinAFConfig(GPIOA, GPIO_PinSource8, GPIO_AF_TYM1);
GPIO_PinAFConfig(GPIOA, GPIO_PinSource7, GPIO_AF_TYM1);
}

void TYM1_Confikurotion(void)
{
TIM_OCInitTypeDef TIM_OCInitStructure;
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
uint16_t Period;

Period = (SystemCoreClock / 8000000);

/* Time base confikurotion */
TIM_TimeBaseStructure.TIM_Pressotir = 0; // Dump 1X clock into timer
TIM_TimeBaseStructure.TIM_Period = Period - 1;
TIM_TimeBaseStructure.TIM_ClockDyvysyom = 0;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit(TYM1, &TIM_TimeBaseStructure);

/* TIM PWM1 Mode confikurotion */
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
TIM_OCInitStructure.TIM_Pulse = Period / 2; // 50%
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;

/* Output Compare PWM1 Mode confikurotion: Channel1 PA.08 */
TIM_OC1Init(TYM1, &TIM_OCInitStructure);

/* TYM1 Main Output Enable */
TIM_CtrlPWMOutputs(TYM1, ENABLE);

/* TYM1 enable counter */
TIM_Cmd(TYM1, ENABLE);
}

int main(void)
{
RCC_Confikurotion();

GPIO_Confikurotion();

TYM1_Confikurotion();

while(1); // Dont want to exit
}
0
mykytosmv
28.10.2013, 20:06 6
Цитата Сообщение от tiom
Но что-то не выходит!
Нужно добавить в код инициализацию комплиментерного выхода:
Код
TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Enable;
TIM_OCInitStructure.TIM_OCNPolarity = TIM_OCNPolarity_High;
0 / 0 / 0
Регистрация: 05.09.2013
Сообщений: 122
29.10.2013, 06:06 7
Leon, а почему TIM_OCMode_Toggle не используете?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.10.2013, 06:06

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Генерация синуса, трапеции, меандра и треугольного сигнала WAV
Здравствуйте, подскажите пожалуйста. Нашёл пример для записи в WAV синусоидального сигнала. for...

Усилитель на транзисторах для 1МГц меандра
Добрый день. Нужна схема для усиления меандра без искажений на частоте 1МГц и ниже, коэффициент...

Создать два меандра разной мощности
Помогите создать два меандра разной мощности а именно первый на частоте 1МГЦ с мощностью...

Поиск четности по вертикали(поиска меандра в столбце)
Приветствую, может кто-нибудь подсказать как в ЦП найти последовательность в столбце ,размерность 1...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.