Stm32 с чего начать изучение...

Кто любит RISC в жизни, заходим, не стесняемся.
Adrift
Вымогатель припоя
Сообщения: 539
Зарегистрирован: Вт окт 01, 2024 15:22:33

Re: Stm32 с чего начать изучение...

Сообщение Adrift »

[uquote="Rapra",url="/forum/viewtopic.php?p=4791496#p4791496"]Если использовали конфигуратор CubeMX[/uquote]
Я использую CubeMX один раз для каждого мк, исключительно ради "Export pinout with Alt. Functions".
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25117
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: Stm32 с чего начать изучение...

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

[uquote="Adrift",url="/forum/viewtopic.php?p=4791516#p4791516"]Я использую CubeMX один раз для каждого мк[/uquote]
Неужели так сложно изучить даташит и рефмануал МК?
Конфигураторы создают лишь как элемент маркетинга для привлечения пользователей. Для опытного эмбеддера конфигуратор не только не нужен, он еще и вреден. Патамушта все конфигураторы упрощают реальные возможности периферии.
Для стандартных задач они пригодны, а для оригинальных решений - нет.
Adrift
Вымогатель припоя
Сообщения: 539
Зарегистрирован: Вт окт 01, 2024 15:22:33

Re: Stm32 с чего начать изучение...

Сообщение Adrift »

КРАМ, вы не поняли, я не использую конфигураторы, мне нужно для каждого поддерживаемого мк один раз выдернуть из Куба xml где каждый пин будет описан подобной строкой:

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

PA0  TIM2_CH1:1 TIM5_CH1:2 TIM8_ETR:3 TIM15_BKIN:4 SPI6_NSS:5 SPI3_RDY:6 USART2_CTS/USART2_NSS:7 UART4_TX:8 SAI2_SD_B:A ETH_CRS:B TIM2_ETR:E EVENTOUT:F
Т.е. в массив грузится текстовый файл для используемого мк, потом, например, если нужно проинитить USART4 с TX висящим на PA0, то класс Usart будет в этом массиве искать UART4_TX:

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

template<IsPin Pin, StaticString Str>
static consteval auto getAf() { return Remap::find<Pin, feature.name + Str>(); }
Если у данного мк есть UART4 с TX на PA0, то код компилируется и AF вытягивается из файла автоматически, как простая константа. Если нет, то будет конкретная ошибка компиляции с указанием USART и пина. Если этот же код инициализации запустить на другом мк, то опять же он или скомпилируется и будет работать правильно, или не скомпилируется. Не будет такого, что компилируется, но не работает потому что на другом мк у TX другой AF или TX на других пинах.
Rapra
Грызет канифоль
Сообщения: 259
Зарегистрирован: Пн фев 16, 2026 17:30:02

Re: Stm32 с чего начать изучение...

Сообщение Rapra »

Но конфигуратор то как раз и отслеживает, есть ли на данном пине такая-то функция. И если правильно выбрана модель МК, он и не предложит несуществующий вариант
Adrift
Вымогатель припоя
Сообщения: 539
Зарегистрирован: Вт окт 01, 2024 15:22:33

Re: Stm32 с чего начать изучение...

Сообщение Adrift »

Rapra, конфигуратор не сгенерит код который я смогу вставить себе в проект, он сгенерит промежуточный код на HAL/LL из которого придется выдергивать пины с AF, в процессе чего и можно накосячить. Это если забыть, что без VPN Куб может вообще ничего не сгенерить )
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25117
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: Stm32 с чего начать изучение...

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

[uquote="Adrift",url="/forum/viewtopic.php?p=4791575#p4791575"]в процессе чего и можно накосячить.[/uquote]
Можно и накосячить. А может и нет.
Конфигурация занимает крохотную часть кода. С учетом того, что при нынешних логистических проблемах STM чаще всего идет лесом, любые попытки создать некие инструменты заточенные под STM выглядят, как минимум, странной пустой потерей времени.
Мне сложно понять образ мыслей чистого программера обслуживающего эмбед, но с точки зрения радиоинженера пишущего код для собственных проектов - это какая то дичь, извините.
Я за последние лет 6 сменил три архитектурных платформы и в АРМах ушел от STM к Artery. На код в проекте тратится примерно 20% усилий. Из них на конфигурацию - пару процентов.
В чем профит возни с конфигурацией против обычной работы с рефмануалом и даташитом? :dont_know:
Аватара пользователя
linux_rulezz
Вымогатель припоя
Сообщения: 584
Зарегистрирован: Пн сен 15, 2025 08:43:23
Откуда: Маленький СССР посреди шариатской республики

Re: Stm32 с чего начать изучение...

Сообщение linux_rulezz »

Adrift, если честно, я и сам один раз "куб" использовал. В проекте, где у меня LQFP100 был, и нужно было поудобней распределить функционал восьми таймеров (ШИМ на CLK шаговиков), пары USART'ов, CAN, SPI и ногодрыг на DIR/EN.
Распределил по функционалу ноги, сгенерил pdf файл и из него выдернул себе в Readme.md табличку назначения ног. Ну, а потом уже сам в hardware.c запилил инициализацию всей периферии.
А то вот в одной из последних разработок, хоть там всего-то LQFP64, да и то лишь ради пяти UART'ов, скосячил, распределяя по мануалу: повесил SSI на SPI1, не посмотрев, что у него общий DMA с USART1. А сделал бы SPI3, можно было бы только один порт (UART5, не имеющий DMA) вешать на прерывания, а все остальное красиво бы работало через DMA.

Но как кодогенератор, несомненно, калокуб - лютейшее зло.

Добавлено after 4 minutes 42 seconds:
[uquote="КРАМ",url="/forum/viewtopic.php?p=4791628#p4791628"]при нынешних логистических проблемах STM чаще всего идет лесом[/uquote]
Для меня это новость. Пока еще старые запасы есть наиболее часто используемых (F072, F103, F303 — LQFP48, немного 303 в LQFP100), но вот недавно понадобились F303 в LQFP64, за три недели из Китая дошли. Алиэкспресс — классная штука, да и посредник всего лишь 20% "накладных" берет, не то, что некоторые барыги, подчас по 300% закладывающие…
Windows must die!
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25117
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: Stm32 с чего начать изучение...

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

[uquote="linux_rulezz",url="/forum/viewtopic.php?p=4791654#p4791654"]скосячил…[/uquote]Бывает.
Но странно. Ты, Эдуард, вроде бы плотно сидишь на старых чипах STM и не приспособился к фиксированной таблице источников реквестов DMA...
Сначала нужно разрисовать блок-схему сигналов чипа и привести ее в соответствие с ногами микросхемы и лишь потом делать плату.
Ну и стоит перейти на относительно новые чипы STM или на тот же Artery, чтобы получить произвольный маппинг реквестов DMA.
Ну и твои потребности в чипах носят практически глубоко любительский характер. Поэтому ты пользуешься алиэкспрессом за наличку.
Мало того, что это риск нарваться на фуфло в виде б/у или перемаркера, так еще и отсутствие возможности обеспечить даже средние тиражи в обозримой перспективе.
При этом цены на Artery в России очень красивые.
Естественно оптовые, а не поштучные.
Rapra
Грызет канифоль
Сообщения: 259
Зарегистрирован: Пн фев 16, 2026 17:30:02

Re: Stm32 с чего начать изучение...

Сообщение Rapra »

Конфигуратор Cube чем удобен - да тем, что визуально видно доступный функционал пинов и их расположение на корпусе.
Аватара пользователя
JackSmith
Потрогал лапой паяльник
Сообщения: 332
Зарегистрирован: Ср мар 09, 2016 08:07:41

Re: Stm32 с чего начать изучение...

Сообщение JackSmith »

Rapra, datasheet все-равно изучаешь, и там тоже все прекрасно видно. куб не нужен. у меня кастомные сборочные файлы CMake, Makefile, Qbs. на фэйхуа мне этот куб?
Естественно оптовые, а не поштучные.
AT32F403ACGT7 в чипе 140р. 1шт. тоже хорошо. сравните цены на stm32f4хх с 1M флеша.
Rapra
Грызет канифоль
Сообщения: 259
Зарегистрирован: Пн фев 16, 2026 17:30:02

Re: Stm32 с чего начать изучение...

Сообщение Rapra »

А когда даташит уже изучил (да и что там в даташите то шибко изучать, кроме общего описания и электр.характеристик? ), но на память не помнишь прям все-все-все выводы? Ладно бы там 20-ногий корпус, а когда ног 176 или 208, да еще периферия дублируется на куче разных ног, вот и приходит на помощь конфигуратор, визуально показывающий, где что есть и какие возникают конфликты распиновки. Бывает, что в процессе разводки платы понимаешь, что дорожку не получается подвести к нужной ноге, и надо перебрасывать функции пинов. По табличке даташита можно, но дольше, и когда ног много, всё в памяти не удержишь. Посему, визуальный конфигуратор, показывающий что и где и не конфликтует ли - это правильное решение. Зачем усложнять себе жизнь ради понтов, если можно сделать проще? Тем более, что никакого вреда от этого нет.
Аватара пользователя
linux_rulezz
Вымогатель припоя
Сообщения: 584
Зарегистрирован: Пн сен 15, 2025 08:43:23
Откуда: Маленький СССР посреди шариатской республики

Re: Stm32 с чего начать изучение...

Сообщение linux_rulezz »

Спектрографы и прочее астрофизическое оборудование никому больше 1 штуки не нужно, да и просто в вопросах автоматизации телескопов больше 10 штук (и то, треть - ЗИП) не нужно. Так что, у меня действительно штучное производство... Разве что CAN-USB преобразователи зашли, штук 20 сделал и ещё десяток плат лежит на ЗИП.
Что до G-серии - мне пока хватает возможностей старого. Даже F072 вполне весело справляется в CAN-USB, там мощей и флоатов не надо.
Windows must die!
Аватара пользователя
JackSmith
Потрогал лапой паяльник
Сообщения: 332
Зарегистрирован: Ср мар 09, 2016 08:07:41

Re: Stm32 с чего начать изучение...

Сообщение JackSmith »

[uquote="Rapra",url="/forum/viewtopic.php?p=4791695#p4791695"]а когда ног 176 или 208, да еще периферия дублируется на куче разных ног,[/uquote]

если ног 144 или более, то там половина ног или больше половины это шины. кроме stm32 существуют же и другие чип-мейкеры, и у них нет никакого куба, только даташиты. привыкаешь. куб не нужен.
Rapra
Грызет канифоль
Сообщения: 259
Зарегистрирован: Пн фев 16, 2026 17:30:02

Re: Stm32 с чего начать изучение...

Сообщение Rapra »

Даже на шинах могут быть варианты распиновки. Например, шина LTDC имеет далеко не один вариант распиновки. Что уж говорить про остальные типа SPI, UART, таймеров и прочего, там вариантов вообще доталова. И ладно бы работал с двумя-тремя моделями, это еще можно "привыкнуть". А когда номенклатура обширная, да еще что-то из новых, пока там будешь "привыкать", поезд уже уйдет. И зачем усложнять себе жизнь просто из-за понтов? Посмотрел, оценил, раскидал как надо, проверил - не устраивает, поменял. Там же бывает так, что перестановка одного пина тянет за собой перестановку еще и других, где возникают конфликты. Так что всё нормально. Тем более, что стремление к автоматизации рутинных процессов - это правильный путь.
Аватара пользователя
linux_rulezz
Вымогатель припоя
Сообщения: 584
Зарегистрирован: Пн сен 15, 2025 08:43:23
Откуда: Маленький СССР посреди шариатской республики

Re: Stm32 с чего начать изучение...

Сообщение linux_rulezz »

Вообще, спорно вот так "гвоздями" пины прибивать: начнёшь трассировку, и внезапно, этот USART надо перенести, там таймер подвинуть и т.д., и т.п.
Я вот обычно сначала плату развожу, а потом уже код пишу... Просто нужно внимательно все таблицы DMA и периферии перед глазами держать. И не косячить, как я с SPI1 :)
Windows must die!
Rapra
Грызет канифоль
Сообщения: 259
Зарегистрирован: Пн фев 16, 2026 17:30:02

Re: Stm32 с чего начать изучение...

Сообщение Rapra »

Вот потому визуальный конфигуратор и позволяет быстро оценить, где какие пины и какие на них функции и как что можно переставить. Таблицы таблицами, но когда ног, как я уже говорил, под 200, да еще и имеешь дело с разной номенклатурой МК, с таблицами возиться дольше, это я пробовал лично.

Никто не заставляет использовать Cube для генерации кода, это дело сугубо личных предпочтений. Но вот почему бы не использовать визуальное отображение и подбор распиновки с отображением конфликтов?
Аватара пользователя
JackSmith
Потрогал лапой паяльник
Сообщения: 332
Зарегистрирован: Ср мар 09, 2016 08:07:41

Re: Stm32 с чего начать изучение...

Сообщение JackSmith »

[uquote="Rapra",url="/forum/viewtopic.php?p=4791707#p4791707"]Например, шина LTDC имеет далеко не один вариант распиновки.[/uquote]
если пины идут под шину, то какая мне разница какие там еще альтернативные функции у этих пинов? чтобы кнопки прикрутить к шине дисплея? stm32f439zi 144-пин, 40 пин идут на LTDC, 56 пинов на SDRAM, вычитаем пины питания, под кварцы, ресет, SWD, остается совсем ничего. Artety выпустили pin2pin совместимые at32f435/437 без LTDC, но с интерфейсом камеры. и они тоже продвигают свой pin-конфигуратор. Я что, буду у них всех изучать их конфигураторы? нет, я возьму даташиты и буду с ними работать. учитывая, что у Artery, хе-хе еще и наименование регистров отличается в зависимости от версии Reference Manual.
Вообще, спорно вот так "гвоздями" пины
если плат много, то на них можно поставить at32f403aХХ они совместимы с F103, но имеют "DMA Flexible Request Mapping" т.е. любой периферийный модуль можно соединить DMA с любым другим. в RM большая таблица, что с чем соединяется.
Rapra
Грызет канифоль
Сообщения: 259
Зарегистрирован: Пн фев 16, 2026 17:30:02

Re: Stm32 с чего начать изучение...

Сообщение Rapra »

Так вот в том и беда, что даже шина LTDC может быть распихана на разные пины. Посмотрите на STM32H743 например. Я пробовал для H743 вручную табличку в Экселе составлять. То еще "занятие".
Ну и LTDC - это конечно же не 40 пинов. Давайте вместе посчитаем. Возьмем по-максималке, 8 бит на цвет, это 24 пина RGB, HSync, VSync, DE, PCLK. Итого - 28 пинов.
SDRAM тоже, если не в 32-битной ширине шины данных, то поменьше пинов. Кстати 32-битная шина данных в 144-ногом корпусе не поддерживается. Поэтому у 16-битной SDRAM будет тоже значительно меньше ног - не 56, как вы сказали, а до 39.

Хотите по табличке пальчиком возить - конечно ваше право, можете возить :) Но я так не буду делать - спасибо, уже наелся, да и понтоваться мне не перед кем.
Аватара пользователя
JackSmith
Потрогал лапой паяльник
Сообщения: 332
Зарегистрирован: Ср мар 09, 2016 08:07:41

Re: Stm32 с чего начать изучение...

Сообщение JackSmith »

[uquote="Rapra",url="/forum/viewtopic.php?p=4791730#p4791730"]Ну и LTDC - это конечно же не 40 пинов. Давайте вместе посчитаем. Возьмем по-максималке[/uquote]
да я знаю, считал по плате
Изображение
все-равно не густо остается.
Rapra
Грызет канифоль
Сообщения: 259
Зарегистрирован: Пн фев 16, 2026 17:30:02

Re: Stm32 с чего начать изучение...

Сообщение Rapra »

Так на разъеме дисплея это ж не все пины за LDTC интерфейс отвечают! :) Это ж просто 40-контактная распиновка дисплея. Даташит на дисплей гляньте - там будут и выводы питания, и подсветки (штуки 4 даже), и выводы тачскрина, и пины выбора ориентации, даже пара-тройка Not-connected.
Аналогично и в SDRAM, из 56 ног несколько отданы под выводы питания.
Это вы просто по размерности корпуса и разъема посчитали :) Хаха, что вы нас совсем уж за лохов то держите?

Ну да, остается не шибко много ног. Но и не мало - аж 55 штук. Вот здесь на скрине - всё то, что серым цветом и без подписей - то свободно для использования после подключения LTDC и SDRAM.

Изображение

А конфигуратор, кстати, подскажет, какую периферию не получится использовать и по какой причине:

Изображение

Так ведь быстрее, чем пальчиком возить по табличке?
Впрочем, никого не убеждаю, ни на чем не настаиваю. Просто по-тихому пользуюсь сам.
Ответить

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