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

Кто любит RISC в жизни, заходим, не стесняемся.
Ответить
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18770
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

VladislavS писал(а):Я считаю, что "пощупать ARM" это в первую очередь подобрать под себя средства разработки
так я о том и спрашиваю. есть ли что-то такое, что скачал, установил и можно сразу щупать те платы, что у меня есть? чтобы не надо было колдовать с подключением дебаггера, как в Eclipse, чтобы тулчейн уже был сразу интегрирован, а не отдельно скачивался, и т.д.

поскольку я даже доуровня начинающего в этой теме не дошел, потому не имею понятия, что проще и удобнее всего. и ваш скепсис
VladislavS писал(а):С таким настроем лучше и не начинайте
не понимаю.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Реклама
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Сообщение Reflector »

[uquote="Eddy_Em",url="/forum/viewtopic.php?p=4349286#p4349286"]Так что, VCO в 64МГц можно.[/uquote]
Это опять косяки документации, в таблице "PLL characteristics" из DS прописано именно 96MHz минимум. Попробовал в кубе, там на 64 не ругается, у меня в коде тоже проверка на 64, значит видимо 64 минимум и есть.
Реклама
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

Eddy_Em, а где ты делить R=1 нашёл? Я же чуть выше давал картинку с правильными делителями.

Добавлено after 3 minutes:
[uquote="ARV",url="/forum/viewtopic.php?p=4349289#p4349289"]так я о том и спрашиваю. есть ли что-то такое, что скачал, установил и можно сразу щупать те платы, что у меня есть? чтобы не надо было колдовать с подключением дебаггера, как в Eclipse, чтобы тулчейн уже был сразу интегрирован, а не отдельно скачивался, и т.д.[/uquote]CubeIDE бесплатно, IAR и Keil трофейно - всё это "из коробки" сразу работает с STM32.
Друг Кота
Аватара пользователя
Сообщения: 25498
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Сообщение КРАМ »

[uquote="ARV",url="/forum/viewtopic.php?p=4349289#p4349289"]я даже до уровня начинающего в этой теме не дошел[/uquote]
Не, так дела не делаются. Если вы никогда не работали со средой, то по любому какое то время на привыкание потребуется. Тоже касается и самой железной платформы (ARM).
Нужно создать пустой проект. А потом все будет гораздо проще.
Реклама
Эиком - электронные компоненты и радиодетали
Собутыльник Кота
Аватара пользователя
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01

Сообщение Eddy_Em »

VladislavS, ну, понятно, что я единицы вычитаю, вот:

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

        RCC->PLLCFGR = ((PLLR-1)<<29) | ((PLLQ-1)<<25) | ((PLLP-1)<<17) | (PLLN<<8) | ((PLLM-1)<<4)
                | RCC_PLLCFGR_PLLREN | RCC_PLLCFGR_PLLPEN /* | RCC_PLLCFGR_PLLQEN */
                | RCC_PLLCFGR_PLLSRC_HSE;
Сейчас при работе от HSE в этом регистре 0x10010803 - как и должно быть. В RCC->CFGR - 0x12, как и должно быть. В регистре RCC->CR - 0x3030500, как и должно быть (т.е. и HSEON/HSERDY, и PLLON/PLLRDY). А частота таки 32МГц получается.. Странно.

Добавлено after 1 minute 50 seconds:
[uquote="КРАМ",url="/forum/viewtopic.php?p=4349301#p4349301"]по любому какое то время на привыкание потребуется[/uquote]
У меня в среднем на освоение нового семейства STM32 уходит месяц. А чтобы туда еще понаписать весь нужный набор сниппетов - не меньше года (чаще - два-три года; вот, F303 - исключение, т.к. очень похож на F103).
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Контактная информация:
Реклама
Родился
Аватара пользователя
Сообщения: 6
Зарегистрирован: Сб дек 03, 2016 17:04:32

Сообщение Aleksk »

[uquote="ARV",url="/forum/viewtopic.php?p=4349289#p4349289"]
VladislavS писал(а):Я считаю, что "пощупать ARM" это в первую очередь подобрать под себя средства разработки
так я о том и спрашиваю. есть ли что-то такое, что скачал, установил и можно сразу щупать те платы, что у меня есть? .[/uquote]

Конечно есть. PlatformIO как плагин для VSCode.
Сам всё необходимое подтянет с Github по мере создания проекта.
Как установить есть много инфы в сети.
Реклама
Друг Кота
Аватара пользователя
Сообщения: 25498
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Сообщение КРАМ »

[uquote="Eddy_Em",url="/forum/viewtopic.php?p=4349302#p4349302"]А частота таки 32МГц получается.. Странно.[/uquote]
А слабо дать полную раскладку по домену осциллятора ИЗ ОТЛАДЧИКА. Там не так много регистров.
ЗЫ. У ARV нет никакого бэкграунда с ARM. Поэтому он лишен твоих многочисленных "чемоданов".

Добавлено after 1 minute 26 seconds:
[uquote="Eddy_Em",url="/forum/viewtopic.php?p=4349302#p4349302"]У меня в среднем на освоение нового семейства STM32 уходит месяц.[/uquote]
Меня с такими темпами уволят нахер... :)))
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

[uquote="Eddy_Em",url="/forum/viewtopic.php?p=4349302#p4349302"]Сейчас при работе от HSE в этом регистре 0x10010803 - как и должно быть.[/uquote]Ну раз так и должно быть, то ты и получаешь свои 32 МГц.Изображение
изображение_2023-01-06_172525611.png
(29.83 КБ) 329 скачиваний
Добавлено after 2 minutes 8 seconds:
[uquote="Aleksk",url="/forum/viewtopic.php?p=4349307#p4349307"]Конечно есть. PlatformIO как плагин для VSCode.[/uquote]Это самое ужасное, что можно посоветовать. VSCode чемпион по интуитивно непонятным настройкам. Что работает сразу из коробки я выше написал.
Собутыльник Кота
Аватара пользователя
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01

Сообщение Eddy_Em »

КРАМ, так я выше именно из gdb данные и привел после старта.
Вот, повторю:

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

(gdb) p /x *RCC
$21 = {CR = 0x3030500, ICSCR = 0x408c, CFGR = 0x12, PLLCFGR = 0x10010803, RESERVED0 = 0x0, RESERVED1 = 0x0, CIER = 0x0, CIFR = 0x0, CICR = 0x0, IOPRSTR = 0x0, AHBRSTR = 0x0, APBRSTR1 = 0x0, APBRSTR2 = 0x0, IOPENR = 0x4, 
  AHBENR = 0x100, APBENR1 = 0x10000000, APBENR2 = 0x0, IOPSMENR = 0x2f, AHBSMENR = 0x51301, APBSMENR1 = 0xff7e4c33, APBSMENR2 = 0x17d801, CCIPR = 0x0, RESERVED2 = 0x0, BDCR = 0x0, CSR = 0x1c000000}
Меня с такими темпами уволят нахер... :)))
Можно подумать, реальный человек сможет это осилить быстрей (особенно когда еще 100500 других дел есть: ведь помимо МК у меня еще телескопы с их системами управления, обработкой данных, долбаными вебмордами и прочей)!

Добавлено after 1 minute 16 seconds:
VladislavS, вот, блин! Я сам в свой код не смотрю. Написал же в комментах: "R=2..8, Q=2..8, P=2..32; N=8..86, M=1..8". Блин, вот же ST нарукожопили, так нарукожопили!!! Спасибо, проверяю.
Ага, заработало, как надо! Но вот сделать минимальное значение этих P/R/Q двойкой мог только наглый засранец ☺
Там еще и вот такой косяк: "after /M fvco should be 2.66..16", т.е. для кварца 8МГц M может быть только 1..3. Получается, что для G0 с USB придется частоты AHB и APB выставлять в 36МГц.

Добавлено after 8 minutes 19 seconds:
В общем, вот такой код инициализации тактирования получается:

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

#define WAITWHILE(x)  do{StartUpCounter = 0; while((x) && (++StartUpCounter < 0xffffff)){nop();}}while(0)
TRUE_INLINE void StartHSEHSI(int isHSE){
    uint32_t StartUpCounter;
    RCC->CR &= ~RCC_CR_PLLON; // disable PLL
    WAITWHILE(RCC->CR & RCC_CR_PLLRDY); // wait while PLL on
    if(isHSE){
        RCC->CR |= RCC_CR_HSEON;
        WAITWHILE(!(RCC->CR & RCC_CR_HSERDY)); // wait while HSE isn't on
    }else RCC->CR |= RCC_CR_HSION;
    RCC->APBENR1 |= RCC_APBENR1_PWREN;
    // Enable high performance mode
    PWR->CR1 = PWR_CR1_VOS_0;
    WAITWHILE(PWR->SR2 & PWR_SR2_VOSF);
    if(isHSE){
        RCC->PLLCFGR = ((PLLR-1)<<29) | ((PLLQ-1)<<25) | ((PLLP-1)<<17) | (PLLN<<8) | ((PLLM-1)<<4)
                | RCC_PLLCFGR_PLLREN | RCC_PLLCFGR_PLLPEN /* | RCC_PLLCFGR_PLLQEN */
                | RCC_PLLCFGR_PLLSRC_HSE;
    }else{ // 64MHz from HSI16
        RCC->PLLCFGR = (8<<8) | (1<<4)
                | RCC_PLLCFGR_PLLREN | RCC_PLLCFGR_PLLPEN /* | RCC_PLLCFGR_PLLQEN */
                | RCC_PLLCFGR_PLLSRC_HSI;
    }
    RCC->CR |= RCC_CR_PLLON;
    WAITWHILE(!(RCC->CR & RCC_CR_PLLRDY));
    FLASH->ACR |= FLASH_ACR_PRFTEN | FLASH_ACR_ICEN | FLASH_ACR_LATENCY_1;
    RCC->CFGR = RCC_CFGR_SW_1; // set sysclk switch to pll
}

#define StartHSE()  do{StartHSEHSI(1);}while(0)
#define StartHSI()  do{StartHSEHSI(0);}while(0)
Выложил весь код на гитхаб. Теперь можно побаловаться с UART. Надеюсь, с этим делом проще будет.
Последний раз редактировалось Eddy_Em Пт янв 06, 2023 17:46:17, всего редактировалось 1 раз.
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Контактная информация:
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18770
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

VladislavS писал(а):CubeIDE бесплатно
а оно имеет понятие о моей плате, или придется разыскивать документацию на неё? ну, для первого проекта, где там какие пины...
КРАМ писал(а):Если вы никогда не работали со средой, то по любому какое то время на привыкание потребуется.
привыкать - это нормально. бороться не хочу. в частности, о PlatformIO, которую мне тут порекомендовали, у меня сложилось впечатление наиотвратительнейшее, хотя сначала показалось, что просто и легко, пока рекомендованные демо-проекты собирал. но стоило сделать шаг в строну от рекомендаций - всё, тупик, догадаться, где что настраивается оказалось непосильным.
вот этого не хочу...

в те времена, когда я эти платы заполучил, была Atolliс True Studio - IDE на базе Eclipse, что было для меня одним из критериев выбора, но оказалось, студия эта не бесплатная... и я потратил кучу времени, чтобы выдрать из нее плагин для отладчика, и потом этот плагин в обычный Eclipse внедрить... сил потратил столько, что пользоваться результатами уже не стал - устал и надоело.

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

Мой уютный бложик... заходите!
Контактная информация:
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

[uquote="ARV",url="/forum/viewtopic.php?p=4349331#p4349331"]
VladislavS писал(а):CubeIDE бесплатно
а оно имеет понятие о моей плате, или придется разыскивать документацию на неё? ну, для первого проекта, где там какие пины...[/uquote]Я сам им не пользуюсь, но вроде там должен быть конфигуратор как в CubeMX, который эту плату знает. В любом случае, попробовать делов то на 10 минут.

[uquote="ARV",url="/forum/viewtopic.php?p=4349331#p4349331"]о PlatformIO, которую мне тут порекомендовали, у меня сложилось впечатление наиотвратительнейшее[/uquote]Плюсую.
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Сообщение Reflector »

[uquote="Eddy_Em",url="/forum/viewtopic.php?p=4349321#p4349321"]Там еще и вот такой косяк: "after /M fvco should be 2.66..16", т.е. для кварца 8МГц M может быть только 1..3. Получается, что для G0 с USB придется частоты AHB и APB выставлять в 36МГц.[/uquote]
У меня на входе VCO всегда 4MHz, дальше если сильно хочется затактировать USB от PLLQ, хотя можно и от HSI48, то частота VCO должна нацело делиться на 48. Например, VCO может быть 48*4 = 192, PPLQ = 192 / 4 = 48MHz, а PLLR = 192 / 3 = 64MHz.

ps. В С же вроде static_assert завезли уже, почему никто не пользуется, можно все коэффициенты проверить на стадии компиляции...
Мудрый кот
Сообщения: 1849
Зарегистрирован: Вс дек 25, 2016 08:34:54

Сообщение Dimon456 »

ARV писал(а):а оно имеет понятие о моей плате, или придется разыскивать документацию на неё? ну, для первого проекта, где там какие пины...
Я бы то же хотел кнопочку ..., но у вы. Документацию придется искать и где какие пины то же.
Обычно выбираешь целевой МК, а не плату.

Из коробки, как выяснилось, работает только IAR.

А из самого простого CoIDE (танцы с отладчиком, но это просто, просто файлики редактируешь),
а CubeIDE не поддерживает плату stm32vldiscovery на stm32f100rb, а именно его отладчик ST-Link V1, его прошивать надо в V2, а там чего-то менять надо, резать, паять, не вдавался в подробности.

Я же эту тему перетряс, все IDE перебрал, именно сравнение с работой отладчика V1 и V2, поищите поиском.
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Сообщение Reflector »

[uquote="ARV",url="/forum/viewtopic.php?p=4349331#p4349331"]а оно имеет понятие о моей плате, или придется разыскивать документацию на неё? ну, для первого проекта, где там какие пины...[/uquote]
На discovery же пины подписаны, не?
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

[uquote="ARV",url="/forum/viewtopic.php?p=4349331#p4349331"]или придется разыскивать документацию на неё? ну, для первого проекта, где там какие пины...[/uquote]Заглянул в CubeMX. Там на эту плату полный набор документации, так что искать куда два диода и кнопка подключены не будет так мучительно больно :)

Добавлено after 1 minute 35 seconds:
[uquote="Reflector",url="/forum/viewtopic.php?p=4349348#p4349348"]На discovery же пины подписаны, не?[/uquote]Там есть два диода и кнопка. Куда они подключены непонятно.
Родился
Аватара пользователя
Сообщения: 6
Зарегистрирован: Сб дек 03, 2016 17:04:32

Сообщение Aleksk »

[uquote="ARV",url="/forum/viewtopic.php?p=4349331#p4349331"]о PlatformIO, которую мне тут порекомендовали, у меня сложилось впечатление наиотвратительнейшее[/uquote]
А что не так с PlatformIO ?
Сделал проекты для камней
STM32F411RET6
STM32F091RCT6
STM32H743ZIT6U
STM32L432KCU6
STM32F411CEU6
STM32F103C8T6
RP2040
Atmega328P
ATSAM3X8E
ESP8266E
Xtensa LX6

Всё работает.
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18770
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

Reflector писал(а):На discovery же пины подписаны, не?
порты - да, но для первого проекта светодиод и кнопка - нет.
VladislavS писал(а):Заглянул в CubeMX. Там на эту плату полный набор документации
так, блин! CubeMX и CubeIDE - это одно и то же или нет? что качать-то и ставить?

Добавлено after 1 minute 42 seconds:
Aleksk писал(а):А что не так с PlatformIO ?
ну, как бы несколько напрягает, что в меню надо включить одно, потом в нижней области нажать на неочевидную иконку, потом что-то еще потыкать справа в неочевидном месте - и тогда откроется окно настроек... а для другого действия надо сделать другие такие же неочевидные действия. это малое, что выбесило, плюнул и покинул это место.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Это не хвост, это антенна
Сообщения: 1337
Зарегистрирован: Вт ноя 19, 2019 06:10:18

Сообщение tonyk »

ARV писал(а): Cube IDE? я как-то прикипел к Eclipse, но, судя по теме, делать там без "графических" кодогенераторов нечего...
Всё там без всяких кодогенераторов работает. Для работы кодогенератор нафиг не нужны. Есть хороший редактор, отладчик, куча всяких больших и маленьких инструментов для STM32. Если использовать Нуклию или Дискавери, то именно так и получается, что установил, подключил- и в путь.
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

[uquote="Eddy_Em",url="/forum/viewtopic.php?p=4349321#p4349321"]Получается, что для G0 с USB придется частоты AHB и APB выставлять в 36МГц.[/uquote]Ну да, конечно... STM32G0B1+CubeMX vs Eddy_EmИзображение
изображение_2023-01-06_182443637.png
(37.04 КБ) 257 скачиваний
Мудрый кот
Сообщения: 1849
Зарегистрирован: Вс дек 25, 2016 08:34:54

Сообщение Dimon456 »

tonyk писал(а):Всё там без всяких кодогенераторов работает.
Для начало скачиваем STM32 ST-LINK Utility, подключаем плату stm32vldiscovery и определяемся какой отладчик стоит V1 или V2, а потом уже пляшем с выбором IDE.
Или V1 в V2 будете превращать или как? Сколько раз уже писать про это. V1 не все IDE поддерживают.
Ответить

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