Простой универсальный MCUCube

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить
Вымогатель припоя
Сообщения: 612
Зарегистрирован: Вт окт 01, 2024 15:22:33

Сообщение Adrift »

silentsin писал(а): Пт сен 04, 2026 22:13:02Да, попиновый кросс - это самое хреновое, что могли придумать... Это мое мнение. Я уже говорил, что идеология моего приложения - это полный ремап модуля периферии. Что ж, вняв упрекам, хотя и не должен был... ребята - это не комбайн, это профессиональный ускоспециализированный софт для конкретной цели... добавил в софтину ваш обожаемый попиновый ремап.
У STM32 больше 20 серий и только у самого первого STM32F1 был ремап группами. И именно этот F1 первоначально скопировали китайцы, потому среди китайских мк тоже много с таким ремапом, но потом они стали копировать более новые STM32 и если посмотрите на какой-нибудь GigaDevice, то там у всех новых серий уже AF. Группы - это устаревший подход, если ваша прога будет поддерживать только их, то она сама будет устаревшей, а не, как вы говорите, узкоспециализированной.
silentsin писал(а):В векторном редакторе теперь разрешено зумить колесиком мыши, ибо большому корпусу большая... сами знаете чего.
В списке архитектур появился STM_Test (это тот самый тестовый MCU) и корпус LQFP100.
Большой корпус влазит в ваше окно только если его промасштабировать до размера когда ничего прочитать невозможно, при этом по непонятной причине у проги нельзя менять размеры окна, потому можно иметь монитор с разрешением 4К и видеть в уголке крохотное окно программы в которое при нормальном масштабе только четверть корпуса LQFP-100 помещается.
Реклама
Поставщик валерьянки для Кота
Сообщения: 1954
Зарегистрирован: Сб май 05, 2012 20:24:52
Откуда: KN34PC, Болгария

Сообщение veso74 »

Только для напр. STM32, типы примерно 2000.
STM32F0, F1, F3, G0, G4, C0, C5
STM32F2, F4, F7, H5, H7, N6, V8
TM32L0, L1, L4, L5, U0, U3, U5
STM32WB, WBA, WL
STM32MP

Согласно "закону Мерфи": MK используемый пользователем никогда не будет в числе MK, импортированных в программу :).
---
В качестве идеи: делайте автоматическая загрузка (можно и офлайн) баз данных MK (что и STM32CubeMX делает автоматически: база содержит все необходимые данные для микроконтроллера).

Напр. для STM32F103C8 - файл .stm32cubemx\databases\DB.6.0.120\db\mcu\STM32F103C(8-B)Tx.xml

Фрагмент для напр. pin PA0:

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

    <Pin Name="PA0-WKUP" Position="10" Type="I/O">
        <Signal Name="ADC1_IN0"/>
        <Signal Name="ADC2_IN0"/>
        <Signal Name="SYS_WKUP"/>
        <Signal Name="TIM2_CH1"/>
        <Signal Name="TIM2_ETR"/>
        <Signal Name="USART2_CTS"/>
        <Signal IOModes="Input,Output,Analog,EVENTOUT,EXTI" Name="GPIO"/>
    </Pin>
Вложения
STM32F103C(8-B)Tx.zip
(1.98 КБ) 5 скачиваний
Контактная информация:
Реклама
Вымогатель припоя
Сообщения: 612
Зарегистрирован: Вт окт 01, 2024 15:22:33

Сообщение Adrift »

silentsin писал(а): Пт сен 04, 2026 22:13:02Изображение
Выбранный TIM1_CH1 висит на AF1, а в Remap Option есть еще AF3 на котором висит TIM1_CH4N. Как заставить одновременно подсветить синим CH1 и CH4N, ведь в этом и смысл AF...
Мудрый кот
Сообщения: 1803
Зарегистрирован: Вт авг 15, 2017 10:51:13

Сообщение jcxz »

Adrift писал(а): Ср сен 02, 2026 08:43:23В идеале ваша прога должна эти csv понимать...
Нет. В идеале она должна понимать даташит на МК. Парсить его и вытаскивать оттуда конфигурацию пинов. Предварительно скачав даташит с сайта производителя.
2ТС: Слабо такую фичу замутить? 8)
Реклама
Эиком - электронные компоненты и радиодетали
Родился
Сообщения: 16
Зарегистрирован: Вт сен 01, 2026 13:12:59

Сообщение silentsin »

jcxz писал(а): Вс сен 06, 2026 02:06:06 2ТС: Слабо такую фичу замутить?
Даташит? Уверен, что 90% любителей не умеют парсить даташиты у себя в сознании, а вы желаете научить этому программу. Ок. Допустим, сделал я такое. Уважаемые, у вас всех вместе денег не хватит её приобрести... Шутка, конечно, но в каждой шутке есть таки доля шутки.

Вообще странный народ нынче пошел: вроде есть желание железки гнуть, но вот ДАЙ просто неискоренимо. На тебе софт, за просто так. Нет, ты нам ДАЙ корпусов, ДАЙ архитектур, ДАЙ... Без обид! Я и сам такой)))
Последний раз редактировалось silentsin Вс сен 06, 2026 09:11:55, всего редактировалось 1 раз.
Реклама
Родился
Сообщения: 16
Зарегистрирован: Вт сен 01, 2026 13:12:59

Сообщение silentsin »

Всем типа мяу.

Отвлекали меня перед выходными просто жестко, поэтому не было времени продумать ситуацию. А когда освободился, то понял, что второй вариант проги никуда не годится. Пришлось делать новый релиз, кардинально изменив логику программы. При этом освободилось более половины её возможностей, но это так, к слову сказано.

Итак, представляю MCUCube2. Что характерно, она сохранила возможность расчета конфликтов старых схем MCU. Изменено представление ввода, причем сортировать вы можете по колонкам "Номер" и "MCU пин". Теперь придется либо выбирать каждый пин из предложенных (допустимых) вариантов вручную, или использовать механизм переноса из детализации архитектуры (верхняя левая таблица), там у выбранного вами модуля вы ставите нужный ремап (таки да, это только для импорта) и галки у нужных пинов, затем "Добавить в таблицу" и вуаля...

Изображение

Теперь не нужно включать используемые модули периферии, как это было в классической версии программы. Они включатся автоматически.

В списке выбора теперь и системные пины, если они присутствуют в архитектуре, и выводы GPIO, чтобы "забить" их для определенных целей, а так же все порты оборудования, возможные на этом пине.

Вы не можете: использовать на разных пинах одноименные выводы модулей конфигурации, пока это установлено в пределах схемы AF, если нужно будет другое - не допустить включение одного и того же порта в РАЗНЫХ схемах AF, сделаем.

Любая конструктивная критика и предложения в пределах разумного приветствуются.
Пользуйтесь на здоровье, камрады.
MCUCube2.zip
Вторая версия программы
(237.28 КБ) 5 скачиваний
Последний раз редактировалось silentsin Вс сен 06, 2026 11:44:23, всего редактировалось 2 раза.
Реклама
Встал на лапы
Аватара пользователя
Сообщения: 120
Зарегистрирован: Вт фев 28, 2017 08:13:31
Откуда: Свердловская обл.

Сообщение Zikon »

Бывает что в DS нет информации по AF и только в RM
причём в форме описания для каждого модуля
Так например сделано у NSING(Nations)
Сейчас выпустили N32Cube - более лучше стало
но на семейство N32G430/G401 - куб ещё не сделали
таблицу AF самостоятельно сделал, и на основе её
шпаргалки составил
n32g430f8s7-tssop20.pdf
(250.69 КБ) 5 скачиваний
n32g430k8l7-lqfp32.pdf
(339.5 КБ) 5 скачиваний
неплохие чипы так-то
тестировал запасы прочности на тесте Coremark
максимальная частота 264МГц - Flash до 66МГц

--------------------------
для PY32F030 сделал табличку в Excel по функциям AF
учитывая что у PY32F002A, PY32F003 - совершенно подобные функции
и возможность использования "плюшек" от PY32F030
можно прямо в Excel выбирать функции на порты
( да там максимум до 30 i/o - так что это можно использовать )

вот напрмер возможная распиновка PY32F002AW15U6 qfn16
PY32F002A-qfn16.jpg
(72.48 КБ) 10 скачиваний
Родился
Сообщения: 16
Зарегистрирован: Вт сен 01, 2026 13:12:59

Сообщение silentsin »

Zikon писал(а): Вс сен 06, 2026 09:15:26 Бывает что...
Да, именно так, к примеру, в даташитах WCH форменный ад и погибель бывает, особенно если учесть, что они кроссируют пины внутри корпуса по нескольку штук сразу. Тут можно кристалл спалить, активировав на выход хотя бы два из них...

Прога принимает плоские CSV файлы в стиле экспорта STM32Cube, пример есть в паке по ссылке (папка Data). Его можно использовать для генерации архитектур новых добавляемых контроллеров. Корпуса, если в комплекте поставки нет нужного, придется рисовать самому. Причем, вовсе не обязательно наглядно - можно просто поставить выводы рядами по 10 штук в строке, скажем, и этого будет достаточно. Главное, правильно их назвать.

Первая строка - это заголовок, то есть формат данных. Первые пять колонок, увы, прибиты гвоздями, а вот те, которые AF, могут отсутствовать вовсе (если нет такого в вашем MCU) или быть перепутаны. Главное, чтобы имена портов совпадали с номерами колонок ремапа. Поддерживаются AF0 - AF15.

Посмотрел Вашу шпаргалку (весьма схожа с моими, респект), есть еще проще процесс - отредактируйте его копию так, чтобы колонки совпадали со схемой колонок в указанном мной CSV. А потом просто сделайте из Ёкселя экспорт в CSV. Опять же, вуаля.
Родился
Сообщения: 16
Зарегистрирован: Вт сен 01, 2026 13:12:59

Сообщение silentsin »

Adrift писал(а): Сб сен 05, 2026 17:01:06 Выбранный TIM1_CH1 висит на AF1
Все верно, из-за невозможности подумать я смолол чепуху, но концепция приложения не позволяет использовать пины вне модуля периферии. Поэтому я сделал новую версию, которая заточена именно под попиновую схему - MCUCube2. Ссылка чуть выше. Классическая (на стартовой) программа остается актуальна для старых схем MCU. Кстати, обе версии полностью совместимы по Xml файлам архитектуры.
Родился
Сообщения: 16
Зарегистрирован: Вт сен 01, 2026 13:12:59

Сообщение silentsin »

veso74 писал(а): Сб сен 05, 2026 13:14:02 Только для напр. STM32, типы примерно 2000.
Я предлагал выход ПРОЩЕ. Открываете ёксель, заводите колонки вот по этой схеме:
Спойлер"Position","Name","Type","Signal","Label","AF0","AF1","AF2","AF3","AF4","AF5","AF6","AF7","AF8","AF9","AF10","AF11","AF12","AF13","AF14","AF15"
Вписываете нужные имена функций в нужные колонки и делаете экспорт в CSV чтобы он выглядел примерно так (без пропусков пустых колонок):
Спойлер"1","PE2","I/O","","","DEBUG_TRACECLK","LPTIM1_IN2","SAI1_CK1","","","SPI4_SCK","SAI1_MCLK_A","USART10_RX","UART8_TX","OCTOSPI1_IO2","","ETH_TXD3","FMC_A23","DCMI_D3/PSSI_D3","","EVENTOUT"
В форме редактора MCU, меню "Файл" -> "Загрузка STM CSV файла", затем там же цепляете к проекту нужный корпус и сохраняете проект. Вуаля...
Поставщик валерьянки для Кота
Сообщения: 1954
Зарегистрирован: Сб май 05, 2012 20:24:52
Откуда: KN34PC, Болгария

Сообщение veso74 »

Ициализация выводов составляет у меня примерно 0,01% (и меньше) работы (время создания программного кода) над проектом (AVR, PIC, STM32, CH32, GD32, APM32). Затем приступаем к написанию алгоритма для своего устройства. Действие "выбор пинов и периферии" выполняем либо в начале (простой проект), либо постоянно (после добавления определенной новых функциональности к компонентам устройства).

Не убедить меня использовать программу никак :) - не экономит время, не предоставляет дополнительной информации. Наоборот - тратит время впустую: приходится изучать ее интерфейс, а полученные данные будем ВСЕГДА сравнять с документацией. (О самостоятельно добавление инфo o пины, периферии ... использованных MK просто молчу).
---
Напр. создайте генератор инициализации. Но и там "пути бесконечны": напр. ARM: варианты HAL, а-ля SPL, а-ля CMSIS, с записями регистра ...
Контактная информация:
Вымогатель припоя
Сообщения: 612
Зарегистрирован: Вт окт 01, 2024 15:22:33

Сообщение Adrift »

veso74 писал(а): Вс сен 06, 2026 10:17:23Ициализация выводов составляет у меня примерно 0,01% (и меньше) работы (время создания программного кода) над проектом (AVR, PIC, STM32, CH32, GD32, APM32).
Насколько я понимаю основное назначение программы вовсе не в инициализации выводов, а в удобном раскидывании периферии по этим выводам. Если вы этого не видите, значит скорее всего и проблемы такой для вас нет, потому прога все равно не нужна )
Родился
Сообщения: 16
Зарегистрирован: Вт сен 01, 2026 13:12:59

Сообщение silentsin »

veso74 писал(а): Вс сен 06, 2026 10:17:23 Ициализация выводов...
Назначение программы: наглядно распределить пины с проверкой конфликтов, получая более удобную конфигурацию. Инициализация - это уже не проблемы шерифа. Прога сможет обеспечить работу практически со всеми STM-подобными контроллерами. Я вот давно уже пользуюсь ей для CH32 и PIC. Особенно нужно, когда выводов мало, а желания много)))
Мудрый кот
Сообщения: 1803
Зарегистрирован: Вт авг 15, 2017 10:51:13

Сообщение jcxz »

Adrift писал(а): Вс сен 06, 2026 11:24:47Насколько я понимаю основное назначение программы вовсе не в инициализации выводов, а в удобном раскидывании периферии по этим выводам.
Для раскидывания и обнаружения конфликтов периферии, нужно видеть конфликты по используемым DMA-каналам. Так как в большинстве STM32 DMA-каналы жёстко прибиты гвоздями к определённой периферии и нельзя делать произвольное назначение периферия<->DMA. Но где в программе ТС можно выбрать: используется ли DMA для периферии и увидеть потенциальные конфликты по DMA?
Также иногда нужно видеть конфликты по номерам прерываний (если на одном векторе прерывания сидят несколько сигналов прерываний от разной периферии). Опять-же - где можно указать, что от данной периферии используется прерывание (и какое) и увидеть потенциальные конфликты?
Вымогатель припоя
Сообщения: 612
Зарегистрирован: Вт окт 01, 2024 15:22:33

Сообщение Adrift »

jcxz писал(а): Вс сен 06, 2026 12:02:12Для раскидывания и обнаружения конфликтов периферии, нужно видеть конфликты по используемым DMA-каналам. Так как в большинстве STM32 DMA-каналы жёстко прибиты гвоздями к определённой периферии и нельзя делать произвольное назначение периферия<->DMA.
Во всех относительно новых STM32, начиная с STM32G0, там где есть хотя бы DMAMUX, каналы DMA никуда не прибиты. А в совсем новых STM32H5/C5/U5/U3 уже и DMAMUX нет, а его функционал интегрирован в DMA.
jcxz писал(а): Вс сен 06, 2026 12:02:12Также иногда нужно видеть конфликты по номерам прерываний (если на одном векторе прерывания сидят несколько сигналов прерываний от разной периферии). Опять-же - где можно указать, что от данной периферии используется прерывание (и какое) и увидеть потенциальные конфликты?
Автор программы сутки назад не вполне понимал как AF работает, вы слишком много сразу хотите )
Вымогатель припоя
Сообщения: 612
Зарегистрирован: Вт окт 01, 2024 15:22:33

Сообщение Adrift »

А как вам такое... Есть у меня платка Weact на STM32H563VGT6, в качестве теста я скормил ИИ таблицу с ремапами для этого мк, в текстовом виде, где были указаны какие пины трогать не нужно, т.к. к ним уже привязан SDMMC и еще немного по мелочи. Далее я даю ему файлик где нужно подобрать пины для указанной периферии, чтобы не было пересечений и Gemini Pro легко справляется, в то время как ChatGPT Terra не смог развести 4 пина, но правильность разводка Gemini он подтвердил.
Спойлер

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

[SDMMC]
PD2  | SD1_CMD
PC12 | SD1_CK
PC8  | SD1_D0
PC9  | SD1_D1
PC10 | SD1_D2
PC11 | SD1_D3
PE15 | SD_IN

[OSPI]
PB10 | OSPI_NCS
PA3  | OSPI_CLK
PB1  | OSPI_IO0
PD12 | OSPI_IO1
PA7  | OSPI_IO2
PD13 | OSPI_IO3
PC1  | OSPI_IO4
PC2  | OSPI_IO5
PC3  | OSPI_IO6
PC0  | OSPI_IO7

[FMC]
PD7  | FMC_NE1
PD4  | FMC_NOE
PD5  | FMC_NWE
PE3  | FMC_A19
PD14 | FMC_D0
PD15 | FMC_D1
PD0  | FMC_D2
PD1  | FMC_D3
PE7  | FMC_D4
PE8  | FMC_D5
PE9  | FMC_D6
PE10 | FMC_D7
PD6  | LCD_RST
PD11 | LCD_LED

[PSSI]
PA6  | PSSI_PDCK
PA4  | PSSI_DE
PB7  | PSSI_RDY
PC6  | PSSI_D0
PC7  | PSSI_D1
PE0  | PSSI_D2
PE2  | PSSI_D3
PE4  | PSSI_D4
PB6  | PSSI_D5
PE5  | PSSI_D6
PE6  | PSSI_D7
PA5  | PSSI_D14
PC5  | PSSI_D15

[SAI]
PE11 | SAI2_SD_B
PE12 | SAI2_SCK_B
PE13 | SAI2_FS_B
PE14 | SAI2_MCLK_B

[I3C]
PB8  | I3C1_SCL
PB9  | I3C1_SDA 

[SPI_UART] (SPI1 & USART1)
PA15 | NSS1
PB3  | SCK1
PB4  | MISO1
PB5  | MOSI1
PA9  | TX1
PA10 | RX1
PA8  | CK1

[SPI_UART] (SPI2 & USART3)
PB12 | NSS2
PB13 | SCK2
PB14 | MISO2
PB15 | MOSI2
PD8  | TX3
PD9  | RX3
PD10 | CK3

[Encoder] (TIM5)
PA0  | TIM5_CH1
PA1  | TIM5_CH2

[Buttons]
PA2  | Btn1
PB0  | Btn2
PC4  | Btn3
PD3  | Btn4

[LEDs]
PB2  | BLUE
Изначально здесь были строки типа "Pxx | SCK" или "Pxx | FMC_Ax" и Gemini сам решал какой выбрать SPI.
Встал на лапы
Аватара пользователя
Сообщения: 120
Зарегистрирован: Вт фев 28, 2017 08:13:31
Откуда: Свердловская обл.

Сообщение Zikon »

Adrift писал(а): Вс сен 06, 2026 12:17:20
jcxz писал(а): Вс сен 06, 2026 12:02:12Для раскидывания и обнаружения конфликтов периферии, нужно видеть конфликты по используемым DMA-каналам. Так как в большинстве STM32 DMA-каналы жёстко прибиты гвоздями к определённой периферии и нельзя делать произвольное назначение периферия<->DMA.
Во всех относительно новых STM32, начиная с STM32G0, там где есть хотя бы DMAMUX, каналы DMA никуда не прибиты. А в совсем новых STM32H5/C5/U5/U3 уже и DMAMUX нет, а его функционал интегрирован в DMA.
Да DMA не прибиты в STM32G0/G4/L4/L5 и даже в STM32C0

В китайских аналогах тем более не прибиты ( PY32, N32, и пр )
даже в серии N32G45x, где по аналогии с STM32F103 ремапинг GPIO групповой
DMA всё-таки любая периферия на любой канал

А вот всем известные CH32V - там как-то
даже DMA оставлен ограниченный как и в STM32F103

только в последних CH32H417 CH32V205
что-то изменилось в новую сторону
Родился
Сообщения: 16
Зарегистрирован: Вт сен 01, 2026 13:12:59

Сообщение silentsin »

Ух, какие страсти разгорелись по поводу обычного инструмента. Это как молоток - довольно полезный, можно гвоздь забить, а можно соседа по лбу треснуть. Я понимаю, что каждый хочет видеть в нем что-то такое. Своё. Любимое. Эта прога - как раз то самое, минимально необходимое для моих целей. Я молотком гвозди забиваю, господа, не микроскопом... И он у меня есть. Свой. На самом деле их у меня с полсотни для каждого чиха. А комбайны - это не для таких, как я...

Ладно, вот последняя здесь версия, в которой я сегодня погонял ошибки и многое дописал, чего в функционале было заложено, но не реализовано. К примеру: при групповом добавлении выбранных пинов какой-либо периферии теперь производится фильтрация с немедленной проверкой конфликтов. Если добавляемый пин претендует на уже занятое место, добавления всей группы не произойдет, а вы увидите конфликт.

Как говорится, на здоровье!
MCUCube2.zip
Версия 2.3
(241.99 КБ) 6 скачиваний
Поставщик валерьянки для Кота
Сообщения: 1954
Зарегистрирован: Сб май 05, 2012 20:24:52
Откуда: KN34PC, Болгария

Сообщение veso74 »

Скорее наоборот: при ваших сравнениях: у нас есть молоток для забивания гвоздей (pdf: datasheed, reference manual, STM32CubeMX, GD32 ...), вы говорите: используйте мою плиту для забивания гвоздей. Она еще не приспособлена для гвоздей.
Последний раз редактировалось veso74 Вс сен 06, 2026 18:22:20, всего редактировалось 1 раз.
Контактная информация:
Вымогатель припоя
Сообщения: 612
Зарегистрирован: Вт окт 01, 2024 15:22:33

Сообщение Adrift »

Для второй версии группы AF в Remap Option бессмысленны и не нужны, но полезно было бы подсвечивать все возможные пины. И чтобы эти возможные визуально отличались от уже выбранных.
Ответить

Вернуться в «Разные вопросы по МК»