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

Кто любит RISC в жизни, заходим, не стесняемся.
Аватара пользователя
uwrtey
Поставщик валерьянки для Кота
Сообщения: 2309
Зарегистрирован: Пт июл 17, 2009 07:34:07
Откуда: Свердловская обл.

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

Сообщение uwrtey »

Pavel_1978 писал(а):на F103 это пункт 6.2
У меня STM32F4.
Pavel_1978 писал(а):Раздел так и называется
Как "так"? reset and clock control ?
Сейчас читаю неплохую статью DiHalt'а http://easyelectronics.ru/arm-uchebnyj- ... stm32.html
не зная броду не лезь к вольтмоду
Реклама
Аватара пользователя
Pavel_1978
Опытный кот
Сообщения: 830
Зарегистрирован: Пт ноя 16, 2007 11:21:37

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

Сообщение Pavel_1978 »

Оно самое.
Реклама
Аватара пользователя
amv2000
Опытный кот
Сообщения: 725
Зарегистрирован: Вт апр 26, 2011 13:58:36
Откуда: Ростовская область

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

Сообщение amv2000 »

1.Столкнулся намедни с тем, что попробовал прошить плату STM32Discovery с навешанным на него дисплеем RDX0154, посредством утилиты ST-LINK utility. Если прошиваю утилитой, то экран мерцает при выводе информации с периодом где то пол секунды. Через IAR всё было статично.

2.Ещё после установки ST-LINK utility, компилятор IAR перестал прошивать и отлаживать.
Дрова STLink которые идут с IAR переустанавливал. Так же пробовал переустановить IAR результат тот же, никто с подобным не встречался, если было поделитесь информацией.
Аватара пользователя
Леонид Иванович
Друг Кота
Сообщения: 4779
Зарегистрирован: Сб апр 02, 2011 12:40:46
Откуда: Минск
Контактная информация:

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

Сообщение Леонид Иванович »

Странно. Все время прошиваю из IAR посредством ST-LINK utility. Настройки такие:

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

   Tools -> Configure Tools...
   Menu Text: ST-Link programmer
   Command: C:\Program Files\STMicroelectronics\STM32 ST-LINK Utility\ST-LINK Utility\ST-LINK_CLI.exe
   Argument: -c SWD -ME -P $PROJ_FNAME$.hex -Rst -Run
   Initial Derectory: $EXE_DIR$
   Tool Available: Always

   Tools -> Options -> Key Bindings -> Tools -> ST-Link programmer F8
Реклама
Эиком - электронные компоненты и радиодетали
Galizin
Мучитель микросхем
Сообщения: 478
Зарегистрирован: Ср окт 15, 2008 09:33:03
Откуда: Воронеж

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

Сообщение Galizin »

amv2000 писал(а):2.Ещё после установки ST-LINK utility, компилятор IAR перестал прошивать и отлаживать.
По моему у меня было то же самое с KEIL. st-link utility может менять прошивку у discovery. В результате драйвер перестает подходить. Лечилось заменой dll драйвера st-link. Где то в сети лежит описание какую dll нужно сменить что бы заработало с st-link с новой прошивкой.
Реклама
Аватара пользователя
isx
Поставщик валерьянки для Кота
Сообщения: 2316
Зарегистрирован: Вс июн 26, 2011 20:03:21

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

Сообщение isx »

Читаю референс на stm32f100 и не могу въехать для чего служат биты CC4NP и CC4P регистра TIM3_CCER...
Реклама
uk8amk
Поставщик валерьянки для Кота
Сообщения: 2222
Зарегистрирован: Вт ноя 27, 2007 11:32:06
Откуда: Tashkent

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

Сообщение uk8amk »

чего служат биты CC4NP и CC4P
CC2NP: Полярность комплементарного выхода захвата/сравнения 2
0: OC1N активный высокий
1: OC1N активный низкий
Прим: Этот бит не записывается когда был запрограммирован уровень LOCK-2 или 3 (TIMx_BDTR) и CC1S=00(канал сконфигурирован на выход).
СС1Р: Полярность выхода захвата/сравнения 1
Канал СС1 сконфигурирован на выход:
0: ОС1 активный высокий
1: ОС1 активный низкий
Канал СС1 сконфигурирован на вход:
Этот бит выбирает IC1 для операций захвата или запуска.
0: неинвертирован: захват происходит по нарастающему фронту IC1. При использовании как внешний запуск, IC1 не инвертируется.
1: инвертирован: захват происходит по спадающему фронту IC1. При использовании для внешнего запуска IC1 инвертируется.
Применительно к выходу делал трехфазный частотник. Есть разные драйверы полевиков, с прямыми и инверсными входами(и их комбинациями) для ШИМ управления. Так вот весьма удобно в зависимости от типа микросхемы записать в регистр нужную полярность импульсов и избавиться от лишних микросхем.
Аватара пользователя
isx
Поставщик валерьянки для Кота
Сообщения: 2316
Зарегистрирован: Вс июн 26, 2011 20:03:21

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

Сообщение isx »

uk8amk писал(а):комплементарного выхода
А что это значит?
Набросал код:

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

int main()
{
	RCC->AHBENR = 0x00060014;
	RCC->APB1ENR = 0x00000002;
	GPIOA->MODER = 0x28000000;
	GPIOB->MODER = 0x00000008;
	GPIOB->OTYPER = 0x00000000;
	GPIOB->OSPEEDR = 0x00000000;
	GPIOA->PUPDR = 0x00000000;
	
	
	TIM3->CCMR2 = 0x60;
	TIM3->CCER = 0x1000;
	TIM3->CR1 = 0x0001;
	TIM3->CCR4 = 0x2EDF;
	
	TIM3->PSC = 0x5DBF;
Пытаюсь этим добром завести шим на TIM3 пина PB1, но чёт не идёт ток по проводам :( ....
uk8amk
Поставщик валерьянки для Кота
Сообщения: 2222
Зарегистрирован: Вт ноя 27, 2007 11:32:06
Откуда: Tashkent

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

Сообщение uk8amk »

А что это значит?
Это значит, что вам надо прочитать в интернете что такое транзисторный мост и полумост.
Они управляются как раз комплементарными сигналами. Когда верхний транзистор открывается нижний обязан закрываться(и наоборот) + вставляться мертвое время. Если сделать иначе, то может быть крутой фейерверк если управляется мощненький IGBT.

По вашему коду не скажу т.к. только магические числа и похоже это не для F100.

Для 32F100C4 на драйверы моста IRS2110(неинверсные входы) писал такой код:

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

/*--------------------------------------------------------
//TIM1 in 3ph mode with complementary outputs
---------------------------------------------------------*/
#define DMA_BURST_LEN	(3-1)
#define DMA_BASE_ADR	13 // adress offset for TIM_CCR1
#define DEAD_TIME_VAL	160 //*dead-time step with 62.5nS step for 16MHz
void init_tim1( void )
{
	//tDTS=tCK_INT, ARPE, Edge-aligned 
	TIM1->CR1 = TIM_CR1_ARPE | TIM_CR1_URS;
	//Output idle state OISx=0, OISxN=0(MOE=0), CCPC? 
	TIM1->CR2 = 0;
	//Slave mode controller disabled
	TIM1->SMCR = 0;
	//Update DMA enable, Break IRQ, Update IRQ
	TIM1->DIER = TIM_DIER_UDE | TIM_DIER_BIE | TIM_DIER_UIE;
	//Set Capture-compare mode 
	TIM1->CCMR1 =  TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_2; // OC1M=PWM1
	TIM1->CCMR1 |= TIM_CCMR1_OC1PE; // OC1 Preload enable
	TIM1->CCMR1 |= TIM_CCMR1_OC2M_1 | TIM_CCMR1_OC2M_2; // OC2M=PWM1
	TIM1->CCMR1 |= TIM_CCMR1_OC2PE; // OC2 Preload enable
	TIM1->CCMR2 =  TIM_CCMR2_OC3M_1 | TIM_CCMR2_OC3M_2; // OC3M=PWM1
	TIM1->CCMR2 |= TIM_CCMR2_OC3PE; // OC3 Preload enable
	//Enable compare outputs, polarity
	TIM1->CCER =  TIM_CCER_CC1E | TIM_CCER_CC1NE;
	TIM1->CCER |= TIM_CCER_CC2E | TIM_CCER_CC2NE;
	TIM1->CCER |= TIM_CCER_CC3E | TIM_CCER_CC3NE;
	//time base
	TIM1->CNT = 0;
	TIM1->PSC = 34; // Fpwm = 1800Hz
	TIM1->ARR = 255; // Counter TOP
	TIM1->RCR = 0;
	TIM1->CCR1 = 0;
	TIM1->CCR2 = 0;
	TIM1->CCR3 = 0;
	//Break and dead-time
	TIM1->BDTR =  DEAD_TIME_VAL; // dead-time
	TIM1->BDTR |= TIM_BDTR_BKE | TIM_BDTR_BKP;// break input, active polarity = high
	TIM1->DCR  =  (DMA_BURST_LEN<<8) | DMA_BASE_ADR;
	//Generate event for update registers
	TIM1->EGR = TIM_EGR_UG;	
	//Enable TIM1 IRQ vectors
	NVIC->ISER[0] = TIM1_BRK_TIM15_IRQ | TIM1_UP_TIM16_IRQ;	
}
Аватара пользователя
amv2000
Опытный кот
Сообщения: 725
Зарегистрирован: Вт апр 26, 2011 13:58:36
Откуда: Ростовская область

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

Сообщение amv2000 »

Леонид Иванович писал(а):Все время прошиваю из IAR посредством ST-LINK utility.
Спасибо! попробовал понравилось, честно говоря нигде не встречал про возможность такой связки.
Galizin писал(а):Лечилось заменой dll драйвера st-link. Где то в сети лежит описание какую dll нужно сменить что бы заработало с st-link с новой прошивкой.
Это я встречал, но там говорилось если не работает утилита. Впрочем файл dll менял ничего не менялось экран всё равно моргает, хотя я подозреваю суть проблемы в том, что я залил по ошибке прошивку для STM32 F103 вместо STM32 F100 и думается мне где то в тактировании проблема.
Хотел стереть чип, выдает ошибку. Чем еще можно стереть или ждать переходник чтобы попробовать загрузить через Бутлоадер.
Вложения
Безымянный.png
(185.8 КБ) 443 скачивания
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

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

Сообщение dosikus »

Леонид Иванович писал(а):Странно. Все время прошиваю из IAR посредством ST-LINK utility. Настройки такие:
Шить из самого IAR средствами самого IAR, снова религия не позволяет ?
Уже стабильная привычка к костылям ??? :)))
Хотя и сам IAR сплошной костыль , стоит все таки на Keil переходить...
Аватара пользователя
isx
Поставщик валерьянки для Кота
Сообщения: 2316
Зарегистрирован: Вс июн 26, 2011 20:03:21

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

Сообщение isx »

Пытаюсь перевести свой код на понятный язык для окружающих :) .
Почему Кейл ругается на строку

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

RCC->AHBENR |= (RCC_AHBENR_IOPAEN | RCC_AHBENR_IOPBEN); 
?
Это SPL(а то я без неё пытаюсь делать)?
Аватара пользователя
oleg110592
Друг Кота
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

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

Сообщение oleg110592 »

наверное надо RCC->AHBENR |= (RCC_AHBENR_GPIOAEN | RCC_AHBENR_GPIOBEN);
uk8amk
Поставщик валерьянки для Кота
Сообщения: 2222
Зарегистрирован: Вт ноя 27, 2007 11:32:06
Откуда: Tashkent

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

Сообщение uk8amk »

В моем CMSIS(V3.3.0) прописано именно RCC_APB2ENR_IOPAEN.

Наверно надо воткнуть
#include "stm32f10x.h"

Это не SPL.
Аватара пользователя
isx
Поставщик валерьянки для Кота
Сообщения: 2316
Зарегистрирован: Вс июн 26, 2011 20:03:21

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

Сообщение isx »

oleg110592 писал(а):наверное надо RCC->AHBENR |= (RCC_AHBENR_GPIOAEN | RCC_AHBENR_GPIOBEN);
Спасибо большое помогло :) .
Более того, нашёл все образцы в stm32f0xx.h (не знал что они там есть). Думаю, теперь тупых вопросов будет меньше :)
Аватара пользователя
isx
Поставщик валерьянки для Кота
Сообщения: 2316
Зарегистрирован: Вс июн 26, 2011 20:03:21

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

Сообщение isx »

Переделал код, поправил некоторые ошибки. Получилось вот что:

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

RCC->AHBENR |= (RCC_AHBENR_GPIOAEN | RCC_AHBENR_GPIOAEN);
	
	GPIOA->MODER = 0x28000000;
	GPIOB->MODER |= GPIO_MODER_MODER1_1;
	GPIOB->OTYPER = 0x00000000;
	GPIOB->OSPEEDR |= (GPIO_OSPEEDR_OSPEEDR1_1 | GPIO_OSPEEDR_OSPEEDR1_0);
	GPIOA->PUPDR = 0x00000000;
	
	RCC->APB1ENR |= RCC_APB1ENR_TIM3EN;
	TIM3->CR1 |= TIM_CR1_ARPE;
	TIM3->CCMR2 |= TIM_CCMR2_OC4PE;
	TIM3->CCMR2 |= (TIM_CCMR2_OC4M_2 | TIM_CCMR2_OC4M_1);
	TIM3->CCER |= TIM_CCER_CC4E;
	TIM3->ARR = 23999;
	TIM3->CCR4 = 19200;
  TIM3->CR1 |= TIM_CR1_CEN;
но ШИМа на выходе нет (светодиод не горит совсем)....
Помогите пожалуйста разобраться где собака зарыта... :solder:
Аватара пользователя
oleg110592
Друг Кота
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

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

Сообщение oleg110592 »

сначала можно было бы и готовый пример попробовать: http://visualgdb.com/tutorials/arm/stm32/pwm/
Аватара пользователя
isx
Поставщик валерьянки для Кота
Сообщения: 2316
Зарегистрирован: Вс июн 26, 2011 20:03:21

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

Сообщение isx »

Я брал за образец вот эту статью:
chipspace.ru/stm32-general-purpose-timers-2-pwm/
Аватара пользователя
Леонид Иванович
Друг Кота
Сообщения: 4779
Зарегистрирован: Сб апр 02, 2011 12:40:46
Откуда: Минск
Контактная информация:

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

Сообщение Леонид Иванович »

dosikus писал(а):Шить из самого IAR средствами самого IAR, снова религия не позволяет ?
У меня ничего не получилось. В меню есть пункты "Download active application" и "Download file...", они прошивают контроллер, но дальше ничего не происходит. Даже если потом даю вручную контроллеру сброс - прошивка не стартует. Но если затем нажать "Debug without Downloading", то отладка нормально запускается.
Аватара пользователя
oleg110592
Друг Кота
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

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

Сообщение oleg110592 »

брал за образец
а где "| RCC_APB2ENR_AFIOEN"
Ответить

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