Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
 
neon2k
0 / 0 / 0
Регистрация: 27.06.2010
Сообщений: 5
1

Генерация ШИМ 30кГц на STM32

14.10.2018, 08:44. Просмотров 89. Ответов 8

Доброго времени!

Делаю часы на газоразрядных индикаторах, которые питаются от 180в. Сделал плату, которая получает на вход ШИМ 30кГц и 5в, а выдает 180в.

На Arduino сгенерировать 30кГц получалось, однако сейчас необходимо это сделать на stm32. Есть знатоки?)

Спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.10.2018, 08:44
Ответы с готовыми решениями:

Генерация ШИМ
Плата STM-P103 Частота SYSCLK выставлена на 56МГц Никак не могу разобраться, в чем ошибка. На...

Генерация ШИМ для синусоиды STM32F100
Здравствуйте, помогите новичку! До этого никогда не работал с МК, а тут начал с STM32F100 с...

STM32F1 генерация ШИМ на TIM4 с использованием DMA
Добрый день! Пытаюсь запустить генерацию PWM с использованием DMA на таймере TIM4. Вот код: ...

Чем связать STM32 + STM32 в одном корпусе?
Есть 2 платы: (1) - STM32 (Вывод на LCD + запись SD) и (2) - STM32F4 (обработка сигналов +...

Общение с барометром MS5540 на STM32 (Arduino to STM32)
Получил от китайца сей аппарат, пошел тут же гуглить что нибудь готовое, но не тут то было....

8
_SayHello
546 / 305 / 102
Регистрация: 30.07.2015
Сообщений: 1,077
14.10.2018, 11:46 2
neon2k, тебе подсказать надо или код рабочий? Если подсказать то читай даташит, раздел таймеры режим output compare. Если пример кода, то выложу позже
0
neon2k
0 / 0 / 0
Регистрация: 27.06.2010
Сообщений: 5
14.10.2018, 12:02  [ТС] 3
_SayHello, возможно, я не те даташиты находил, но ответа не нашел. Пара упоминаний PWM без примеров по коду.

Забыл самое важное уточнить: сделать это мне нужно в Arduino IDE
0
_SayHello
546 / 305 / 102
Регистрация: 30.07.2015
Сообщений: 1,077
14.10.2018, 12:06 4
Тогда тему надо переносить в тему arduino. Для этого конструктора кода у меня нет.
0
ValeryS
Модератор
7266 / 5520 / 692
Регистрация: 14.02.2011
Сообщений: 18,705
14.10.2018, 12:09 5
Цитата Сообщение от neon2k Посмотреть сообщение
сделать это мне нужно в Arduino IDE
невозможно
хотя, есть такая прилуда для ардуины как STM32Board, но что они там накрутили кто знает
так, что если нужна вся сила STM, то бросай ардуину и программируй сам камень

Добавлено через 32 секунды
Цитата Сообщение от _SayHello Посмотреть сообщение
переносить в тему arduino.
обождем пока
0
_SayHello
546 / 305 / 102
Регистрация: 30.07.2015
Сообщений: 1,077
14.10.2018, 12:18 6
neon2k, /*Функция инициализации ШИМ сигнала*/
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
void Init_PWMTimer()
{
    /*Настраиваем систему тактирования*/
    RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOD, ENABLE);         //Включаем тактирование порта D
 
    /*Конфигурируем входной пин*/
    GPIO_InitTypeDef pins;                      //объявляем структуру конфигурации пина
 
    pins.GPIO_Pin     =   GPIO_Pin_14;       //Выходной пин
    pins.GPIO_Speed   =   GPIO_Speed_2MHz;      //Скорость - не важно
    pins.GPIO_Mode    =   GPIO_Mode_AF;         //Тип - альтернативная функция
    pins.GPIO_OType   =   GPIO_OType_PP;
    GPIO_Init(PWM_OUTPUT_PORT, &pins);          //Инициализируем пин
 
 
    GPIO_PinAFConfig(PWM_OUTPUT_PORT, GPIO_PinSource14, GPIO_AF_2);     //Разрешаем использование альтернативной функции
 
    TIM_DeInit(TIM4);
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE);        //Включаем тайтирование таймера 4
    /*Конфигурируем таймер ШИМ*/
    TIM_TimeBaseInitTypeDef basetimer;      //объявляем структру базового таймера
 
    basetimer.TIM_Prescaler         =       1;                      //предделителя нет
    basetimer.TIM_Period            =       2400-1;                 //частота шим 72000000 / 2400 = 30 кГц
    basetimer.TIM_CounterMode       =       TIM_CounterMode_Up;     //Счет на увеличение
    basetimer.TIM_ClockDivision     =       TIM_CKD_DIV1;           //делителя нет
    TIM_TimeBaseInit(TIM4, &basetimer);                             //Инициализируем структуру таймера 4
 
 
    TIM_OCInitTypeDef octimer;              //объявляем структуру ШИМ таймера
    TIM_OCStructInit(&octimer);             //Принимаем стандартную конфигурацию
    octimer.TIM_OCMode       =   TIM_OCMode_PWM1;           //Работаем в режиме ШИМ 1
    octimer.TIM_Pulse        =   1200;                          //Скважность по умолчанию 0
    octimer.TIM_OutputState  =   TIM_OutputState_Enable;    //Разрешаем выходной сигнал
 
    TIM_OC3Init(TIM4, &octimer);                            //Инициализируем структуру канала 3
    TIM_Cmd(TIM4, ENABLE);                                  //Включаем таймер 4
}
вот функция инициализации таймера 4 для генерации ШИМ 30 кГц со скважностью 50%. Код написан для контроллера stm32f303vc. Так что для вашего камня возможно надо будет менять пин/таймер/шины тактирования
0
ValeryS
Модератор
7266 / 5520 / 692
Регистрация: 14.02.2011
Сообщений: 18,705
14.10.2018, 12:32 7
Цитата Сообщение от _SayHello Посмотреть сообщение
octimer.TIM_Pulse = 1200; //Скважность по умолчанию 0
однако код и комментарий не сходятся, при таких значениях скважность 50%
0
_SayHello
546 / 305 / 102
Регистрация: 30.07.2015
Сообщений: 1,077
14.10.2018, 12:37 8
ValeryS, пардон, код дернул из старого проекта. Там начальная скважность 0. Меняется регулятором. Тут решил 50% поставить. Комментарий не заметил.
0
locm
14.10.2018, 14:39     Генерация ШИМ 30кГц на STM32
  #9

Не по теме:

Цитата Сообщение от neon2k Посмотреть сообщение
Забыл самое важное уточнить: сделать это мне нужно в Arduino IDE
Зачем? Она неудобная и ее функционал не позволяет в полной мере использовать все возможности STM32. Зачем себя ограничивать?

0
14.10.2018, 14:39
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.10.2018, 14:39
Привет! Вот еще темы с ответами:

stm32 + FSMC + stm32
Доброе времени суток. Возможно ли к Ftosh памяти подцепить два Stm32F4. Один МК будет записывать...

STM32 - STM32 I2C
*****ПРОБЛЕМА ИСПРАВЛЕНА****ОТВЕТ НИЖЕ , НЕ ВЧИТЫВАЙТЕСЬ В КОД ПРОГРАММЫ,УТОНЕТЕ)), НУ ЕСЛИ ТОЛЬКО...

Генерация ШИМ в режиме Fast PWM
Доброго! Пытаюсь реализовать программу управления яркостью светодиода через UART. Вот код: .include...


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

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

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