STM32 новичку в ARM что к чему

Кто любит RISC в жизни, заходим, не стесняемся.
amd9800
Опытный кот
Сообщения: 822
Зарегистрирован: Вс июн 02, 2013 12:23:03

Re: STM32 новичку в ARM что к чему

Сообщение amd9800 »

стою перед дилемой что заказать?
1.Stm32f4discovery - 19.5$
2.STM32F3DISCOVERY - 18$

Вроде разница всего лишь в 1,5$, это совсем мелочи, но скажем для начала обучения будет разница или нет и что все таки заказать?

Ну например закажу более дорогую, а когда начну с ней работать, то например будут сложности из-за того что нет примеров, а например F3 будет куча примеров.
Реклама
Аватара пользователя
oleg110592
Друг Кота
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Re: STM32 новичку в ARM что к чему

Сообщение oleg110592 »

STM32F3DISCOVERY: firmware package, including 28 examples
STM32F4DISCOVERY: firmware package, including 22 examples

думаю, все равно какую покупать, STM32F4DISCOVERY раньше появилась - примеров сети вроде больше
Реклама
alexf58
Нашел транзистор. Понюхал.
Сообщения: 183
Зарегистрирован: Сб фев 09, 2013 23:00:23

Re: STM32 новичку в ARM что к чему

Сообщение alexf58 »

Реально, простые примеры будут работать на любой плате. Естественно, на F3 и F4 разная инициализация, но дальше все примерно одинаково.
F3 имеет больше смысла если предполагается работать с аналоговыми сигналами. F4 быстрее для продвинытых рассчетов.

Не согласен про comm port. Виртуальный сделать можно, конечно, но не тривиально. И больше на что смотреть, если не работает. Еще там есть SWO - способ быстро выводить на печать данные через тот же отладчик STLink/V2.
amd9800
Опытный кот
Сообщения: 822
Зарегистрирован: Вс июн 02, 2013 12:23:03

Re: STM32 новичку в ARM что к чему

Сообщение amd9800 »

1. первая моя задача - научиться работать с STM32.
Если на какой то из них будет легче хотя бы на 10% независимо от других + я уже выберу ее

2. STM32 не нужен для быстрых расчетов для работы с трехфазными двигателями. Соответственно нужно 6 pwm. Ну и очень быстрые замеры и их оцифровка + быстрые расчеты.
Понимаю что АЦП одинаковы по скорости и там и там. Расчеты за счет более высокой частоты быстрее у F4.
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
oleg110592
Друг Кота
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Re: STM32 новичку в ARM что к чему

Сообщение oleg110592 »

Реклама
Аватара пользователя
Myp3ik
Мучитель микросхем
Сообщения: 450
Зарегистрирован: Вс янв 09, 2011 23:05:37
Откуда: СССР

Re: STM32 новичку в ARM что к чему

Сообщение Myp3ik »

amd9800, АЦП там разные по скорости. У F4 3 АЦП по 2.4 MSPS, у F3 4 АЦП по 5 MSPS
Иван Сусанин - первый полупроводник :solder:
Реклама
alexf58
Нашел транзистор. Понюхал.
Сообщения: 183
Зарегистрирован: Сб фев 09, 2013 23:00:23

Re: STM32 новичку в ARM что к чему

Сообщение alexf58 »

Кроме того, в F3 встроенные ОУ с программируемым усилением. Они специально сделаны для подобных задач.
amd9800
Опытный кот
Сообщения: 822
Зарегистрирован: Вс июн 02, 2013 12:23:03

Re: STM32 новичку в ARM что к чему

Сообщение amd9800 »

интересные моменты всплывают. У меня уже появилось желание купить обе.

смотрю интересный курс видео лекций на кейле
Аватара пользователя
Myp3ik
Мучитель микросхем
Сообщения: 450
Зарегистрирован: Вс янв 09, 2011 23:05:37
Откуда: СССР

Re: STM32 новичку в ARM что к чему

Сообщение Myp3ik »

amd9800, тогда если брать F4 то сразу http://www.st.com/web/catalog/tools/FM116/SC959/SS1532/PF259090
Иван Сусанин - первый полупроводник :solder:
Аватара пользователя
optima
Прорезались зубы
Сообщения: 232
Зарегистрирован: Вт май 08, 2012 10:42:29

Re: STM32 новичку в ARM что к чему

Сообщение optima »

Я в свое время такую за недорого прикупил!

Изображение
Аватара пользователя
Pavel_1978
Опытный кот
Сообщения: 830
Зарегистрирован: Пт ноя 16, 2007 11:21:37

Re: STM32 новичку в ARM что к чему

Сообщение Pavel_1978 »

Так хоть ссыль дай на описание. А то какой смысл хвастаться....
Аватара пользователя
optima
Прорезались зубы
Сообщения: 232
Зарегистрирован: Вт май 08, 2012 10:42:29

Re: STM32 новичку в ARM что к чему

Сообщение optima »

Что то ни разу не встречал описаний на ebay, все просто плата stm32f4discovery стандартная, экран с тачскрином, и плата с интерфейсами rs232, Ethernet, CAN плюс карта памяти SD вот и все описание!
Аватара пользователя
baghear
Опытный кот
Сообщения: 791
Зарегистрирован: Вт июн 17, 2014 00:34:26

Re: STM32 новичку в ARM что к чему

Сообщение baghear »

Добрый день, подскажите пожалуйста какой отладчик выбрать для работы в Keil windows8 st-link или j-link.
Чип stm32f103.
Аватара пользователя
optima
Прорезались зубы
Сообщения: 232
Зарегистрирован: Вт май 08, 2012 10:42:29

Re: STM32 новичку в ARM что к чему

Сообщение optima »

Любой! если ST-LINK то контроллеры только STM, у J-LINK выбор побогаче!
Аватара пользователя
baghear
Опытный кот
Сообщения: 791
Зарегистрирован: Вт июн 17, 2014 00:34:26

Re: STM32 новичку в ARM что к чему

Сообщение baghear »

А какой версии jlink лучше брать V8 или V9?
Аватара пользователя
isx
Поставщик валерьянки для Кота
Сообщения: 2316
Зарегистрирован: Вс июн 26, 2011 20:03:21

Re: STM32 новичку в ARM что к чему

Сообщение isx »

Доброй ночи :) .
Подскажите пожалуйста, как мне правильнее оформить такую задачу: нужно заставить МК выставить высокий уровень на ноге PA1 (к примеру) на одну секунду, затем запустить на секунду ШИМ на ногах PA1 и PA2 в противофазе (попеременно высокий уровень то на одном, то на другом пине), затем на секунду установить высокий уровень на пине PA2.
Отсчёт времени сделал на TIM14, а ШИМ на 2-ух каналах таймера TIM3. Не могу только понять, как сделать правильно отключение ШИМ и установки пина в высокий/низкий уровень по "приказу" TIM14.
Единственная мысль, это установить TIM3->CCR(X) в ноль (когда нужен низкий уровень на этом канале) либо в 65535 (когда нужен высокий уровень). Не знаю, кошерно ли это :dont_know: .
И ещё вопрос. У меня ШИМ в противофазе генерируется таким макаром:

Код: Выделить всё

if (butt > 2048) {TIM3->CCR4 = 0; TIM3->CCR3 = (butt - 2048);} else {TIM3->CCR3 = 0; TIM3->CCR4 = (butt - 2048) * -1;

Всё работает, но нагружает процессор. Можно ли сделать это аппаратно? Я читал в даташите про режим "DeadTime", но не могу найти принцип его работы. Мёртвое время а то тоже было бы кстати... :solder:
Аватара пользователя
isx
Поставщик валерьянки для Кота
Сообщения: 2316
Зарегистрирован: Вс июн 26, 2011 20:03:21

Re: STM32 новичку в ARM что к чему

Сообщение isx »

Покопался в инете. Нашёл некоторую инфу, но заставить работать режим DEADTIME так и не получается.
Набросал код:

Код: Выделить всё

        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 поделитесь пожалуйста, в нете а ато ничего путного не нашёл :dont_know:
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Re: STM32 новичку в ARM что к чему

Сообщение dosikus »

TIM1 ~ 190КГц при тактовой 48МГц . Сравнивай, читай RM, и делай по аналогии .

Код: Выделить всё

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 работаешь, можно таймер запустить тупо тыкая галки в дебуггере. :)))
Аватара пользователя
isx
Поставщик валерьянки для Кота
Сообщения: 2316
Зарегистрирован: Вс июн 26, 2011 20:03:21

Re: STM32 новичку в ARM что к чему

Сообщение isx »

Спасибо за код :)
Сделал некоторые исправления, теперь светодиоды подключенные к выводам попеременно мигают с частотой 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 :) .
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Re: STM32 новичку в ARM что к чему

Сообщение dosikus »

Ты и так уже им играешься :))) :

Код: Выделить всё

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))
Ответить

Вернуться в «ARM»