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

Кто любит RISC в жизни, заходим, не стесняемся.
Аватара пользователя
Chip115
Сверлит текстолит когтями
Сообщения: 1132
Зарегистрирован: Пт фев 16, 2007 14:18:20
Откуда: Новосибирск
Контактная информация:

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

Сообщение Chip115 »

В общем, не понятно.
Предположительно, я настроил на HSE 8 МГц. (Кварц на 4, умножил на 2).
Если в цикле установить 1000000, то примерно (на глаз) 1 сек.
Выходит генератор работает на частоте 1 МГц? Вроде все предделители выключил.

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

void rcc_config()
{
  RCC_DeInit();                     //   сброс настроек тактового генератора
  RCC_HSICmd(DISABLE);          //   выключение внутреннего RC HSI 8МГц генератора
  RCC_HSEConfig(RCC_HSE_ON);    //   включение внешнего тактового генератора
  while (ERROR == RCC_WaitForHSEStartUp())
  {
  }
  RCC_PREDIV1Config(RCC_PREDIV1_Source_HSE, RCC_PREDIV1_Div1);//   Предделитель PREDIV1: HSE перед множителем PLLMUL
  RCC_PLLConfig(RCC_PLLSource_PREDIV1 ,RCC_PLLMul_2); //   тактирование от HSE с PREDIV1
  RCC_PLLCmd(ENABLE); //   Включаем PLL
  RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); //   На системную шину подаем тактирование с множителя PLLMUL
}

void main(void)
{
  rcc_config();
  vLedDispGpioConf(); 
  GPIO_SetBits(GPIOB,LED_DISP_DP);
  vLedDispDigit(1);
 
// мигаем светодиодом
  while (1)
  {
    unsigned int time = 0;
    for (time=0; time != (1000000); time++)
    {
    }
    GPIOA->ODR ^= 0x8000;
    }
}

Вот окно отладчика
Изображение
Теория — это когда все известно, но ничего не работает. Практика — это когда все работает, но никто не знает почему. Мы же объединяем теорию и практику: ничего не работает… и никто не знает почему!
© Альберт Эйнштейн
Reflector
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

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

Сообщение Reflector »

Chip115 писал(а):В общем, не понятно.
Предположительно, я настроил на HSE 8 МГц. (Кварц на 4, умножил на 2).
Если в цикле установить 1000000, то примерно (на глаз) 1 сек.
Выходит генератор работает на частоте 1 МГц?

С чего ты вообще взял, что одна итерация цикла выполняется за 1us? :)
Аватара пользователя
Chip115
Сверлит текстолит когтями
Сообщения: 1132
Зарегистрирован: Пт фев 16, 2007 14:18:20
Откуда: Новосибирск
Контактная информация:

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

Сообщение Chip115 »

Хороший вопрос, коллега.
А как еще проверить правильность настройки тика? Заюзать таймер? Но я не уверен в настройке частоты генератора. Думаю с таймером тоже будет проблема.
Вопрос еще в том, что у меня кварц на 4 МГц, а SPL заточена под 8 МГц. HSE_VALUE я изменил на 4М. Где-нибудь еще надо что-то менять?
Скачать CubeMX. Там аще всё на HAL генерируется... .
Теория — это когда все известно, но ничего не работает. Практика — это когда все работает, но никто не знает почему. Мы же объединяем теорию и практику: ничего не работает… и никто не знает почему!
© Альберт Эйнштейн
uk8amk
Поставщик валерьянки для Кота
Сообщения: 2222
Зарегистрирован: Вт ноя 27, 2007 11:32:06
Откуда: Tashkent

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

Сообщение uk8amk »

Note: The PLL output frequency must be in the range of 16-24 MHz.

Это значит, что надо выбирать минимум
PREDIV=1
PLLMUL=input*4

А если надо получить меньше, то используйте на выходе AHB Prescaler.
Reflector
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

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

Сообщение Reflector »

Chip115 писал(а):А как еще проверить правильность настройки тика? Заюзать таймер? Но я не уверен в настройке частоты генератора. Думаю с таймером тоже будет проблема.

По таймеру будет понятно насколько неправильно ты все настроил. Т.е. если вместо 1Hz будет 2, значит HCLK в 2 раза больше.

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

uint32_t hclk_us;

void delay_init()
{
   RCC_ClocksTypeDef clk;
   RCC_GetClocksFreq(&clk);
   hclk_us = clk.HCLK_Frequency  / 1000000;
   CoreDebug->DEMCR |= CoreDebug_DEMCR_TRCENA_Msk;
   DWT->CTRL |= 1;   
}

void delay_us(uint32_t us)
{
   DWT->CYCCNT = 0;
   while (DWT->CYCCNT < us * hclk_us) {}
}
Аватара пользователя
Chip115
Сверлит текстолит когтями
Сообщения: 1132
Зарегистрирован: Пт фев 16, 2007 14:18:20
Откуда: Новосибирск
Контактная информация:

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

Сообщение Chip115 »

Спасибо! )) Всё заработало!
Теория — это когда все известно, но ничего не работает. Практика — это когда все работает, но никто не знает почему. Мы же объединяем теорию и практику: ничего не работает… и никто не знает почему!
© Альберт Эйнштейн
Аватара пользователя
aam
Собутыльник Кота
Сообщения: 2994
Зарегистрирован: Сб фев 20, 2010 14:00:12
Откуда: Москва

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

Сообщение aam »

Здравствуйте!
Давно уже занимаюсь AVRками, но сейчас захотелось освоить STM32, а точнее сделать на нем вполне конкретное устройство.
Самый первый вопрос - как шить? Во всех ли МК есть бутлодер? Я хочу начать с самой младшей серии и какого-нибудь "маленького" МК в корпусе типа SO-20.
Доступна ли будет внутрисхемная отладка без всяких там плат Discovery?
Какая IDE под Си наиболее распространена в профессиональных кругах? AVRки писал под IAR (и все обычно в нем пишут, либо в Студии с GCC), но с STM32 хочется попробовать что-нибудь из свободно-распространяемого, но в то же время без кустарщины, чем реально пользуются на предприятиях.
Reflector
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

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

Сообщение Reflector »

aam писал(а):Здравствуйте!
Давно уже занимаюсь AVRками, но сейчас захотелось освоить STM32, а точнее сделать на нем вполне конкретное устройство.
Самый первый вопрос - как шить? Во всех ли МК есть бутлодер? Я хочу начать с самой младшей серии и какого-нибудь "маленького" МК в корпусе типа SO-20.
Доступна ли будет внутрисхемная отладка без всяких там плат Discovery?
Какая IDE под Си наиболее распространена в профессиональных кругах? AVRки писал под IAR (и все обычно в нем пишут, либо в Студии с GCC), но с STM32 хочется попробовать что-нибудь из свободно-распространяемого, но в то же время без кустарщины, чем реально пользуются на предприятиях.

Бутлоадер есть везде. Вместо мелкого SO-20 я бы для начала взял хотя бы что-то такое. Китайский отладчик St-Link v2 - 2.5$. Среди IDE пожалуй чаще выбирают Keil, сам пишу в Студии + visualgdb.
Аватара пользователя
aam
Собутыльник Кота
Сообщения: 2994
Зарегистрирован: Сб фев 20, 2010 14:00:12
Откуда: Москва

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

Сообщение aam »

Reflector писал(а):Вместо мелкого SO-20 я бы для начала взял хотя бы что-то такое.

А в чем преимущества? Только в удобстве макетирования? Сам по себе проц может дебагиться через бутлодер? Или специальный программатор нужен? От этой штуки можно отлаживать внешний МК?
С AVRами я обычно ставил разъем ISP в устройство, через него шил и обновлял. А при отладке пользовался протеусом)

Вообще, хотел начать с чего-нибудь такого: http://www.st.com/content/ccc/resource/ ... 088500.pdf, а именно STM32F030F4P6 (есть во всех магазинах, маленький, дешевый). Но я так понял, там прошивку корректировать с STM32F103C8T6 на STM32F030F4P6 не сложнее, чем между двумя Мегами?

Reflector писал(а):сам пишу в Студии + visualgdb
Извиняюсь, а Студия какая? У ST тоже она тоже так называется?
Я имел ввиду AVRStudio применительно к Atmel.
Reflector
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

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

Сообщение Reflector »

aam писал(а):А в чем преимущества? Только в удобстве макетирования? Сам по себе проц может дебагиться через бутлодер? Или специальный программатор нужен?
С AVRами я обычно ставил разъем ISP в устройство, через него шил и обновлял. А при отладке пользовался протеусом)

Мелкий - это Cortex-M0(урезанный набор команд), 48Mhz, 4К Ram, 16К флеша и т.д.. F103 - это Cortex-M3, 72Mhz, 20K Ram, 64К флеша, USB... Если начнешь писать на каком-нибудь HAL, то в дебаге 16К могут закончиться довольно быстро.
Через бутлоадер нельзя ничего дебажить, это следует из самого его названия :) Нужен отладчик, он же программатор, за 2.5$.

Вообще, хотел начать с чего-нибудь такого: http://www.st.com/content/ccc/resource/ ... 088500.pdf, а именно STM32F030F4P6 (есть во всех магазинах, маленький, дешевый). Но я так понял, там прошивку корректировать с STM32F103C8T6 на STM32F030F4P6 не сложнее, чем между двумя Мегами?

Смотря как писать, некоторые модули там иначе устроены. F0, который появился позже, в каком-то смысле обладает более продвинутой архитектурой, но он во многих смыслах сильно урезанный.

Извиняюсь, а Студия какая? У ST тоже она тоже так называется?
Я имел ввиду AVRStudio применительно к Atmel.

Visual Studio, Atmel Studio же тоже вроде поверх нее. Правда я на C++ пишу, тут выбор сильно сужается, т.к. IAR и Keil как С++ IDE крайне убоги.
a5021
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

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

Сообщение a5021 »

Reflector писал(а):Если начнешь писать на каком-нибудь HAL, то в дебаге 16К могут закончиться довольно быстро.

Физически в STM32F030F4P6 обычно 32к флеша, просто производитель этого не афиширует. :) Не знаю, справедливо ли это для абсолютно всех экземпляров STM32F030F4P6, но на моей памяти все, кто задавался этим вопросом, обнаруживали в своих МК и "недостающие" 16к. Лично я этим скрытым бонусом пользуюсь.
Reflector
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

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

Сообщение Reflector »

a5021 писал(а):
Reflector писал(а):Если начнешь писать на каком-нибудь HAL, то в дебаге 16К могут закончиться довольно быстро.

Физически в STM32F030F4P6 обычно 32к флеша, просто производитель этого не афиширует. :) Не знаю, справедливо ли это для абсолютно всех экземпляров STM32F030F4P6, но на моей памяти все, кто задавался этим вопросом, обнаруживали в своих МК и "недостающие" 16к. Лично я этим скрытым бонусом пользуюсь.

Это да, но у STM32F103С8 тоже реально флеша должно быть в 2 раза больше и в отличии от F030 у него не поломанный SPI :)
a5021
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

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

Сообщение a5021 »

Поломанный в каком смысле?
Reflector
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

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

Сообщение Reflector »

a5021 писал(а):Поломанный в каком смысле?

Что-то там с FIFO и он нормально кажется только на запись работает, хотя в 16-ти битном режиме вроде все нормально, почитай errata.
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

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

Сообщение Мурик »

aam писал(а):но с STM32 хочется попробовать что-нибудь из свободно-распространяемого
Например http://www.emblocks.org
https://habrahabr.ru/post/191468/
https://habrahabr.ru/post/191624/
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

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

Сообщение dosikus »

Reflector писал(а):Что-то там ...
кажется ...
вроде...


Читайте нормально а не легенды сочиняйте...
Reflector
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

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

Сообщение Reflector »

dosikus писал(а):Читайте нормально а не легенды сочиняйте...

Что опять не так? :) Баг есть, он описан, сам с ним сталкивался на F031, нормального решения нет, об этом тоже написано в errata...
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

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

Сообщение dosikus »

Reflector писал(а):Что опять не так? :) Баг есть, он описан, сам с ним сталкивался на F031, нормального решения нет, об этом тоже написано в errata...


When the SPI is configured in the short data frame mode, the packing mode on the
reception side may not be usable.


До посинения читать. И сразу же - насколько часто, лично вы применяете сей режим ?
У меня на и F04х и F03х SD карточки отлично работают на 24МГц SPI, а вот на 103ем и 100 выше 12МГц уже сбой.
Reflector
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

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

Сообщение Reflector »

dosikus писал(а):До посинения читать. И сразу же - насколько часто, лично вы применяете сей режим ?

Сейчас проверить не на чем, но кажется я понял в чем было дело... У меня был рабочий код под F1, там если выбран 8-ми битный режим, то старшая половина DR просто игнорировалась(как и на F4). Для F0 написано казалось бы то же самое(Unused bits are ignored when writing to the register), но фактически, как я понимаю, это означает, что если в 4-х битном режиме записать байт обращаясь к DR как к 8-ми битному регистру, то 4 бита будут проигнорированы, но если обращаться к DR как к 16-ти битному, каким он по умолчанию и объявлен, то будет отправлено 2 байта плюс автоматически включится packing mode приводящий к багам :) А все потому, что я противник всяких SPL и HAL, иначе бы наверняка заметил, что для F0 есть не только функция SPI_SendData но SPI_SendData8 :)
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

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

Сообщение dosikus »

Видимо вы совершенно не в теме, ибо я не использую ни спл ни калокуб. Работу с карточками- плеер вафок выкладывал здесь же, и на F1 и на F0.
Ответить

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