silentsin писал(а): Пт сен 04, 2026 22:13:02Да, попиновый кросс - это самое хреновое, что могли придумать... Это мое мнение. Я уже говорил, что идеология моего приложения - это полный ремап модуля периферии. Что ж, вняв упрекам, хотя и не должен был... ребята - это не комбайн, это профессиональный ускоспециализированный софт для конкретной цели... добавил в софтину ваш обожаемый попиновый ремап.
У STM32 больше 20 серий и только у самого первого STM32F1 был ремап группами. И именно этот F1 первоначально скопировали китайцы, потому среди китайских мк тоже много с таким ремапом, но потом они стали копировать более новые STM32 и если посмотрите на какой-нибудь GigaDevice, то там у всех новых серий уже AF. Группы - это устаревший подход, если ваша прога будет поддерживать только их, то она сама будет устаревшей, а не, как вы говорите, узкоспециализированной.
silentsin писал(а):В векторном редакторе теперь разрешено зумить колесиком мыши, ибо большому корпусу большая... сами знаете чего.
В списке архитектур появился STM_Test (это тот самый тестовый MCU) и корпус LQFP100.
Большой корпус влазит в ваше окно только если его промасштабировать до размера когда ничего прочитать невозможно, при этом по непонятной причине у проги нельзя менять размеры окна, потому можно иметь монитор с разрешением 4К и видеть в уголке крохотное окно программы в которое при нормальном масштабе только четверть корпуса LQFP-100 помещается.
Согласно "закону Мерфи": MK используемый пользователем никогда не будет в числе MK, импортированных в программу .
---
В качестве идеи: делайте автоматическая загрузка (можно и офлайн) баз данных MK (что и STM32CubeMX делает автоматически: база содержит все необходимые данные для микроконтроллера).
Напр. для STM32F103C8 - файл .stm32cubemx\databases\DB.6.0.120\db\mcu\STM32F103C(8-B)Tx.xml
Выбранный TIM1_CH1 висит на AF1, а в Remap Option есть еще AF3 на котором висит TIM1_CH4N. Как заставить одновременно подсветить синим CH1 и CH4N, ведь в этом и смысл AF...
Adrift писал(а): Ср сен 02, 2026 08:43:23В идеале ваша прога должна эти csv понимать...
Нет. В идеале она должна понимать даташит на МК. Парсить его и вытаскивать оттуда конфигурацию пинов. Предварительно скачав даташит с сайта производителя.
2ТС: Слабо такую фичу замутить?
jcxz писал(а): Вс сен 06, 2026 02:06:06
2ТС: Слабо такую фичу замутить?
Даташит? Уверен, что 90% любителей не умеют парсить даташиты у себя в сознании, а вы желаете научить этому программу. Ок. Допустим, сделал я такое. Уважаемые, у вас всех вместе денег не хватит её приобрести... Шутка, конечно, но в каждой шутке есть таки доля шутки.
Вообще странный народ нынче пошел: вроде есть желание железки гнуть, но вот ДАЙ просто неискоренимо. На тебе софт, за просто так. Нет, ты нам ДАЙ корпусов, ДАЙ архитектур, ДАЙ... Без обид! Я и сам такой)))
Последний раз редактировалось silentsin Вс сен 06, 2026 09:11:55, всего редактировалось 1 раз.
Отвлекали меня перед выходными просто жестко, поэтому не было времени продумать ситуацию. А когда освободился, то понял, что второй вариант проги никуда не годится. Пришлось делать новый релиз, кардинально изменив логику программы. При этом освободилось более половины её возможностей, но это так, к слову сказано.
Итак, представляю MCUCube2. Что характерно, она сохранила возможность расчета конфликтов старых схем MCU. Изменено представление ввода, причем сортировать вы можете по колонкам "Номер" и "MCU пин". Теперь придется либо выбирать каждый пин из предложенных (допустимых) вариантов вручную, или использовать механизм переноса из детализации архитектуры (верхняя левая таблица), там у выбранного вами модуля вы ставите нужный ремап (таки да, это только для импорта) и галки у нужных пинов, затем "Добавить в таблицу" и вуаля...
Теперь не нужно включать используемые модули периферии, как это было в классической версии программы. Они включатся автоматически.
В списке выбора теперь и системные пины, если они присутствуют в архитектуре, и выводы GPIO, чтобы "забить" их для определенных целей, а так же все порты оборудования, возможные на этом пине.
Вы не можете: использовать на разных пинах одноименные выводы модулей конфигурации, пока это установлено в пределах схемы AF, если нужно будет другое - не допустить включение одного и того же порта в РАЗНЫХ схемах AF, сделаем.
Любая конструктивная критика и предложения в пределах разумного приветствуются.
Пользуйтесь на здоровье, камрады.
Бывает что в DS нет информации по AF и только в RM
причём в форме описания для каждого модуля
Так например сделано у NSING(Nations)
Сейчас выпустили N32Cube - более лучше стало
но на семейство N32G430/G401 - куб ещё не сделали
таблицу AF самостоятельно сделал, и на основе её
шпаргалки составил
неплохие чипы так-то
тестировал запасы прочности на тесте Coremark
максимальная частота 264МГц - Flash до 66МГц
--------------------------
для PY32F030 сделал табличку в Excel по функциям AF
учитывая что у PY32F002A, PY32F003 - совершенно подобные функции
и возможность использования "плюшек" от PY32F030
можно прямо в Excel выбирать функции на порты
( да там максимум до 30 i/o - так что это можно использовать )
вот напрмер возможная распиновка PY32F002AW15U6 qfn16
Zikon писал(а): Вс сен 06, 2026 09:15:26
Бывает что...
Да, именно так, к примеру, в даташитах WCH форменный ад и погибель бывает, особенно если учесть, что они кроссируют пины внутри корпуса по нескольку штук сразу. Тут можно кристалл спалить, активировав на выход хотя бы два из них...
Прога принимает плоские CSV файлы в стиле экспорта STM32Cube, пример есть в паке по ссылке (папка Data). Его можно использовать для генерации архитектур новых добавляемых контроллеров. Корпуса, если в комплекте поставки нет нужного, придется рисовать самому. Причем, вовсе не обязательно наглядно - можно просто поставить выводы рядами по 10 штук в строке, скажем, и этого будет достаточно. Главное, правильно их назвать.
Первая строка - это заголовок, то есть формат данных. Первые пять колонок, увы, прибиты гвоздями, а вот те, которые AF, могут отсутствовать вовсе (если нет такого в вашем MCU) или быть перепутаны. Главное, чтобы имена портов совпадали с номерами колонок ремапа. Поддерживаются AF0 - AF15.
Посмотрел Вашу шпаргалку (весьма схожа с моими, респект), есть еще проще процесс - отредактируйте его копию так, чтобы колонки совпадали со схемой колонок в указанном мной CSV. А потом просто сделайте из Ёкселя экспорт в CSV. Опять же, вуаля.
Adrift писал(а): Сб сен 05, 2026 17:01:06
Выбранный TIM1_CH1 висит на AF1
Все верно, из-за невозможности подумать я смолол чепуху, но концепция приложения не позволяет использовать пины вне модуля периферии. Поэтому я сделал новую версию, которая заточена именно под попиновую схему - MCUCube2. Ссылка чуть выше. Классическая (на стартовой) программа остается актуальна для старых схем MCU. Кстати, обе версии полностью совместимы по Xml файлам архитектуры.
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 файла", затем там же цепляете к проекту нужный корпус и сохраняете проект. Вуаля...
Ициализация выводов составляет у меня примерно 0,01% (и меньше) работы (время создания программного кода) над проектом (AVR, PIC, STM32, CH32, GD32, APM32). Затем приступаем к написанию алгоритма для своего устройства. Действие "выбор пинов и периферии" выполняем либо в начале (простой проект), либо постоянно (после добавления определенной новых функциональности к компонентам устройства).
Не убедить меня использовать программу никак - не экономит время, не предоставляет дополнительной информации. Наоборот - тратит время впустую: приходится изучать ее интерфейс, а полученные данные будем ВСЕГДА сравнять с документацией. (О самостоятельно добавление инфo o пины, периферии ... использованных MK просто молчу).
---
Напр. создайте генератор инициализации. Но и там "пути бесконечны": напр. ARM: варианты HAL, а-ля SPL, а-ля CMSIS, с записями регистра ...
veso74 писал(а): Вс сен 06, 2026 10:17:23Ициализация выводов составляет у меня примерно 0,01% (и меньше) работы (время создания программного кода) над проектом (AVR, PIC, STM32, CH32, GD32, APM32).
Насколько я понимаю основное назначение программы вовсе не в инициализации выводов, а в удобном раскидывании периферии по этим выводам. Если вы этого не видите, значит скорее всего и проблемы такой для вас нет, потому прога все равно не нужна )
veso74 писал(а): Вс сен 06, 2026 10:17:23
Ициализация выводов...
Назначение программы: наглядно распределить пины с проверкой конфликтов, получая более удобную конфигурацию. Инициализация - это уже не проблемы шерифа. Прога сможет обеспечить работу практически со всеми STM-подобными контроллерами. Я вот давно уже пользуюсь ей для CH32 и PIC. Особенно нужно, когда выводов мало, а желания много)))
Adrift писал(а): Вс сен 06, 2026 11:24:47Насколько я понимаю основное назначение программы вовсе не в инициализации выводов, а в удобном раскидывании периферии по этим выводам.
Для раскидывания и обнаружения конфликтов периферии, нужно видеть конфликты по используемым DMA-каналам. Так как в большинстве STM32 DMA-каналы жёстко прибиты гвоздями к определённой периферии и нельзя делать произвольное назначение периферия<->DMA. Но где в программе ТС можно выбрать: используется ли DMA для периферии и увидеть потенциальные конфликты по DMA?
Также иногда нужно видеть конфликты по номерам прерываний (если на одном векторе прерывания сидят несколько сигналов прерываний от разной периферии). Опять-же - где можно указать, что от данной периферии используется прерывание (и какое) и увидеть потенциальные конфликты?
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 работает, вы слишком много сразу хотите )
А как вам такое... Есть у меня платка Weact на STM32H563VGT6, в качестве теста я скормил ИИ таблицу с ремапами для этого мк, в текстовом виде, где были указаны какие пины трогать не нужно, т.к. к ним уже привязан SDMMC и еще немного по мелочи. Далее я даю ему файлик где нужно подобрать пины для указанной периферии, чтобы не было пересечений и Gemini Pro легко справляется, в то время как ChatGPT Terra не смог развести 4 пина, но правильность разводка Gemini он подтвердил.
Спойлер
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
что-то изменилось в новую сторону
Ух, какие страсти разгорелись по поводу обычного инструмента. Это как молоток - довольно полезный, можно гвоздь забить, а можно соседа по лбу треснуть. Я понимаю, что каждый хочет видеть в нем что-то такое. Своё. Любимое. Эта прога - как раз то самое, минимально необходимое для моих целей. Я молотком гвозди забиваю, господа, не микроскопом... И он у меня есть. Свой. На самом деле их у меня с полсотни для каждого чиха. А комбайны - это не для таких, как я...
Ладно, вот последняя здесь версия, в которой я сегодня погонял ошибки и многое дописал, чего в функционале было заложено, но не реализовано. К примеру: при групповом добавлении выбранных пинов какой-либо периферии теперь производится фильтрация с немедленной проверкой конфликтов. Если добавляемый пин претендует на уже занятое место, добавления всей группы не произойдет, а вы увидите конфликт.
Скорее наоборот: при ваших сравнениях: у нас есть молоток для забивания гвоздей (pdf: datasheed, reference manual, STM32CubeMX, GD32 ...), вы говорите: используйте мою плиту для забивания гвоздей. Она еще не приспособлена для гвоздей.
Последний раз редактировалось veso74 Вс сен 06, 2026 18:22:20, всего редактировалось 1 раз.
Для второй версии группы AF в Remap Option бессмысленны и не нужны, но полезно было бы подсвечивать все возможные пины. И чтобы эти возможные визуально отличались от уже выбранных.