STM32 новичку в ARM что к чему
Re: STM32 новичку в ARM что к чему
стою перед дилемой что заказать?
1.Stm32f4discovery - 19.5$
2.STM32F3DISCOVERY - 18$
Вроде разница всего лишь в 1,5$, это совсем мелочи, но скажем для начала обучения будет разница или нет и что все таки заказать?
Ну например закажу более дорогую, а когда начну с ней работать, то например будут сложности из-за того что нет примеров, а например F3 будет куча примеров.
1.Stm32f4discovery - 19.5$
2.STM32F3DISCOVERY - 18$
Вроде разница всего лишь в 1,5$, это совсем мелочи, но скажем для начала обучения будет разница или нет и что все таки заказать?
Ну например закажу более дорогую, а когда начну с ней работать, то например будут сложности из-за того что нет примеров, а например F3 будет куча примеров.
- oleg110592
- Друг Кота
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
Re: STM32 новичку в ARM что к чему
STM32F3DISCOVERY: firmware package, including 28 examples
STM32F4DISCOVERY: firmware package, including 22 examples
думаю, все равно какую покупать, STM32F4DISCOVERY раньше появилась - примеров сети вроде больше
STM32F4DISCOVERY: firmware package, including 22 examples
думаю, все равно какую покупать, STM32F4DISCOVERY раньше появилась - примеров сети вроде больше
Re: STM32 новичку в ARM что к чему
Реально, простые примеры будут работать на любой плате. Естественно, на F3 и F4 разная инициализация, но дальше все примерно одинаково.
F3 имеет больше смысла если предполагается работать с аналоговыми сигналами. F4 быстрее для продвинытых рассчетов.
Не согласен про comm port. Виртуальный сделать можно, конечно, но не тривиально. И больше на что смотреть, если не работает. Еще там есть SWO - способ быстро выводить на печать данные через тот же отладчик STLink/V2.
F3 имеет больше смысла если предполагается работать с аналоговыми сигналами. F4 быстрее для продвинытых рассчетов.
Не согласен про comm port. Виртуальный сделать можно, конечно, но не тривиально. И больше на что смотреть, если не работает. Еще там есть SWO - способ быстро выводить на печать данные через тот же отладчик STLink/V2.
Re: STM32 новичку в ARM что к чему
1. первая моя задача - научиться работать с STM32.
Если на какой то из них будет легче хотя бы на 10% независимо от других + я уже выберу ее
2. STM32 не нужен для быстрых расчетов для работы с трехфазными двигателями. Соответственно нужно 6 pwm. Ну и очень быстрые замеры и их оцифровка + быстрые расчеты.
Понимаю что АЦП одинаковы по скорости и там и там. Расчеты за счет более высокой частоты быстрее у F4.
Если на какой то из них будет легче хотя бы на 10% независимо от других + я уже выберу ее
2. STM32 не нужен для быстрых расчетов для работы с трехфазными двигателями. Соответственно нужно 6 pwm. Ну и очень быстрые замеры и их оцифровка + быстрые расчеты.
Понимаю что АЦП одинаковы по скорости и там и там. Расчеты за счет более высокой частоты быстрее у F4.
- oleg110592
- Друг Кота
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
Re: STM32 новичку в ARM что к чему
amd9800, АЦП там разные по скорости. У F4 3 АЦП по 2.4 MSPS, у F3 4 АЦП по 5 MSPS
Иван Сусанин - первый полупроводник 
Re: STM32 новичку в ARM что к чему
Кроме того, в F3 встроенные ОУ с программируемым усилением. Они специально сделаны для подобных задач.
Re: STM32 новичку в ARM что к чему
интересные моменты всплывают. У меня уже появилось желание купить обе.
смотрю интересный курс видео лекций на кейле
смотрю интересный курс видео лекций на кейле
Re: STM32 новичку в ARM что к чему
amd9800, тогда если брать F4 то сразу http://www.st.com/web/catalog/tools/FM116/SC959/SS1532/PF259090
Иван Сусанин - первый полупроводник 
- Pavel_1978
- Опытный кот
- Сообщения: 830
- Зарегистрирован: Пт ноя 16, 2007 11:21:37
Re: STM32 новичку в ARM что к чему
Так хоть ссыль дай на описание. А то какой смысл хвастаться....
Re: STM32 новичку в ARM что к чему
Что то ни разу не встречал описаний на ebay, все просто плата stm32f4discovery стандартная, экран с тачскрином, и плата с интерфейсами rs232, Ethernet, CAN плюс карта памяти SD вот и все описание!
Re: STM32 новичку в ARM что к чему
Добрый день, подскажите пожалуйста какой отладчик выбрать для работы в Keil windows8 st-link или j-link.
Чип stm32f103.
Чип stm32f103.
Re: STM32 новичку в ARM что к чему
Любой! если ST-LINK то контроллеры только STM, у J-LINK выбор побогаче!
Re: STM32 новичку в ARM что к чему
А какой версии jlink лучше брать V8 или V9?
Re: STM32 новичку в ARM что к чему
Доброй ночи
.
Подскажите пожалуйста, как мне правильнее оформить такую задачу: нужно заставить МК выставить высокий уровень на ноге PA1 (к примеру) на одну секунду, затем запустить на секунду ШИМ на ногах PA1 и PA2 в противофазе (попеременно высокий уровень то на одном, то на другом пине), затем на секунду установить высокий уровень на пине PA2.
Отсчёт времени сделал на TIM14, а ШИМ на 2-ух каналах таймера TIM3. Не могу только понять, как сделать правильно отключение ШИМ и установки пина в высокий/низкий уровень по "приказу" TIM14.
Единственная мысль, это установить TIM3->CCR(X) в ноль (когда нужен низкий уровень на этом канале) либо в 65535 (когда нужен высокий уровень). Не знаю, кошерно ли это
.
И ещё вопрос. У меня ШИМ в противофазе генерируется таким макаром:
Всё работает, но нагружает процессор. Можно ли сделать это аппаратно? Я читал в даташите про режим "DeadTime", но не могу найти принцип его работы. Мёртвое время а то тоже было бы кстати...
Подскажите пожалуйста, как мне правильнее оформить такую задачу: нужно заставить МК выставить высокий уровень на ноге PA1 (к примеру) на одну секунду, затем запустить на секунду ШИМ на ногах PA1 и PA2 в противофазе (попеременно высокий уровень то на одном, то на другом пине), затем на секунду установить высокий уровень на пине PA2.
Отсчёт времени сделал на TIM14, а ШИМ на 2-ух каналах таймера TIM3. Не могу только понять, как сделать правильно отключение ШИМ и установки пина в высокий/низкий уровень по "приказу" TIM14.
Единственная мысль, это установить TIM3->CCR(X) в ноль (когда нужен низкий уровень на этом канале) либо в 65535 (когда нужен высокий уровень). Не знаю, кошерно ли это
.И ещё вопрос. У меня ШИМ в противофазе генерируется таким макаром:
Код: Выделить всё
if (butt > 2048) {TIM3->CCR4 = 0; TIM3->CCR3 = (butt - 2048);} else {TIM3->CCR3 = 0; TIM3->CCR4 = (butt - 2048) * -1;Всё работает, но нагружает процессор. Можно ли сделать это аппаратно? Я читал в даташите про режим "DeadTime", но не могу найти принцип его работы. Мёртвое время а то тоже было бы кстати...

Re: STM32 новичку в ARM что к чему
Покопался в инете. Нашёл некоторую инфу, но заставить работать режим DEADTIME так и не получается.
Набросал код:
Контроллер STM32F030K6T6. С настройкой режима вроде всё ясно, но как настраивать таймер под этот режим? Как задаётся частота и длительность импульса? С этим кодом на пинах PA6 и PB6 ничего нет.
Если есть у кого-нибудь пример настройки этого режима на STM32 поделитесь пожалуйста, в нете а ато ничего путного не нашёл
Набросал код:
Код: Выделить всё
GPIOA->MODER |= GPIO_MODER_MODER14_1 | GPIO_MODER_MODER13_1 | GPIO_MODER_MODER6_1 | GPIO_MODER_MODER2_0;
GPIOB->MODER |= GPIO_MODER_MODER6_1;
GPIOA->AFR[0] |= 0x05000000;
GPIOB->AFR[0] |= 0x02000000;
GPIOA->OSPEEDR |= GPIO_OSPEEDR_OSPEEDR2 | GPIO_OSPEEDR_OSPEEDR6;
GPIOB->OSPEEDR |= GPIO_OSPEEDR_OSPEEDR0 | GPIO_OSPEEDR_OSPEEDR1 | GPIO_OSPEEDR_OSPEEDR6;
.....................
TIM16->CR1 |= TIM_CR1_ARPE;
TIM16->CR1 |= TIM_CR1_CKD_1;
TIM16->CR2 |= TIM_CR2_OIS1N;
TIM16->CR2 |= TIM_CR2_OIS1;
TIM16->PSC |= 0x0320;
TIM16->ARR = 0x2710;
TIM16->CCR3 = 0x0000;
TIM16->CCR4 = 0x0000;
TIM16->BDTR |= TIM_BDTR_MOE;
TIM16->BDTR |= TIM_BDTR_AOE;
TIM16->BDTR |= TIM_BDTR_DTG_1 | TIM_BDTR_DTG_4 | TIM_BDTR_DTG_5;
TIM16->CR1 |= TIM_CR1_CEN;
Контроллер STM32F030K6T6. С настройкой режима вроде всё ясно, но как настраивать таймер под этот режим? Как задаётся частота и длительность импульса? С этим кодом на пинах PA6 и PB6 ничего нет.
Если есть у кого-нибудь пример настройки этого режима на STM32 поделитесь пожалуйста, в нете а ато ничего путного не нашёл

Re: STM32 новичку в ARM что к чему
TIM1 ~ 190КГц при тактовой 48МГц . Сравнивай, читай RM, и делай по аналогии .
Без DeadTime .
Сначала это запусти , потом поговорим.
Кстати если в Keil работаешь, можно таймер запустить тупо тыкая галки в дебуггере.
Код: Выделить всё
RCC->APB2ENR |= RCC_APB2ENR_TIM1EN;
RCC->AHBENR |= RCC_AHBENR_GPIOBEN | RCC_AHBENR_GPIOAEN;
GPIOB->MODER &= ~( GPIO_MODER_MODER1 );
GPIOB->MODER |= GPIO_MODER_MODER1_1 ;
GPIOA->MODER &= ~( GPIO_MODER_MODER10 );
GPIOA->MODER |= GPIO_MODER_MODER10_1 ;
GPIOA->MODER &= ~GPIO_MODER_MODER1 ;
GPIOA->MODER |= GPIO_MODER_MODER1_0;
GPIOB->AFR[0] |=(2<<(4*1));
GPIOA->AFR[1] |=(2<<(4*2));
TIM1->PSC = 0;
TIM1->ARR = 255-1;
TIM1->CCR3 = 128-1;
TIM1->CCMR2 |= TIM_CCMR2_OC3M_2 |
TIM_CCMR2_OC3M_1 |
TIM_CCMR2_OC3PE
;
TIM1->CCER |= TIM_CCER_CC3E |TIM_CCER_CC3NE;
TIM1->BDTR |= TIM_BDTR_MOE;
TIM1->CR1 |= TIM_CR1_CEN;Без DeadTime .
Сначала это запусти , потом поговорим.
Кстати если в Keil работаешь, можно таймер запустить тупо тыкая галки в дебуггере.
Re: STM32 новичку в ARM что к чему
Спасибо за код 
Сделал некоторые исправления, теперь светодиоды подключенные к выводам попеременно мигают с частотой 1 Гц (для наглядности).
Можно переходить к DeadTime
.
Сделал некоторые исправления, теперь светодиоды подключенные к выводам попеременно мигают с частотой 1 Гц (для наглядности).
Код: Выделить всё
TIM16->CR1 |= TIM_CR1_ARPE;
TIM16->CR1 |= TIM_CR1_CKD_1;
TIM16->CR2 |= TIM_CR2_OIS1N;
TIM16->CR2 |= TIM_CR2_OIS1;
TIM16->PSC |= 0x0320;
TIM16->CCMR1 |= TIM_CCMR1_OC1M_1| TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1PE;
TIM16->CCER |= TIM_CCER_CC1E | TIM_CCER_CC1NE;
TIM16->ARR = 0x2710;
TIM16->CCR1 = 0x1000;
TIM16->BDTR |= TIM_BDTR_MOE;
TIM16->BDTR |= TIM_BDTR_AOE;
TIM16->BDTR |= TIM_BDTR_DTG_1 | TIM_BDTR_DTG_4 | TIM_BDTR_DTG_5;
TIM16->CR1 |= TIM_CR1_CEN;Можно переходить к DeadTime
Re: STM32 новичку в ARM что к чему
Ты и так уже им играешься
:
Логический анализатор и увидишь все.
Все что нужно описано здесь 17.4.11 Complementary outputs and dead-time insertion
Кстати сие осознаем ?:
Запись не верная.
И для PSC и ARR и RCR ...
Расчет частоты обновления таймера :
Update_event = TIx_CLK/((PSC + 1)*(ARR + 1)*(RCR +1))
Код: Выделить всё
TIM16->BDTR |= TIM_BDTR_DTG_1 | TIM_BDTR_DTG_4 | TIM_BDTR_DTG_5;Логический анализатор и увидишь все.
Все что нужно описано здесь 17.4.11 Complementary outputs and dead-time insertion
Кстати сие осознаем ?:
Запись не верная.
Код: Выделить всё
TIM16->PSC |= 0x0320;Код: Выделить всё
TIM16->PSC = 0x0320-1;И для PSC и ARR и RCR ...
Расчет частоты обновления таймера :
Update_event = TIx_CLK/((PSC + 1)*(ARR + 1)*(RCR +1))