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

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить
Родился
Сообщения: 16
Зарегистрирован: Вт сен 01, 2026 13:12:59

Сообщение silentsin »

Всем привет!
Изображение
Для тех, кто возится с самоделками на микроконтроллерах, часто требуется понимание, а где, собственно, на каких пинах расположена та периферия, которую я намереваюсь использовать? И чем более новые "камни" появляются, тем больше запутано там с выводами, схемами, ремапами. Предлагаемая программа позволяет быстро выбрать модуль, его ремап, если архитектура подразумевает это, и увидеть конфликты наглядно. Софт не привязан к каким-либо конкретным производителям и, обладая небольшим кругозором и изобретательностью, можно этим же софтом "описать" нужный вам контроллер. Собственно, прилагаю к сему малую библиотеку используемых мной MCU. Пользуйтесь. Задавайте вопросы.

Локализация: русский по умолчанию и английский. Переключается приложением, ну или уберите xml файлы из папки Config...
Спасибо за внимание. Да, архив во вложениях.
Вложения
mcucube.png
Вот так оно выглядит
(78.87 КБ) 17 скачиваний
MCUCUBE.zip
MCUCube (Просто распаковать)
(225.7 КБ) 20 скачиваний
Реклама
Встал на лапы
Аватара пользователя
Сообщения: 120
Зарегистрирован: Вт фев 28, 2017 08:13:31
Откуда: Свердловская обл.

Сообщение Zikon »

Программа не актуальна - надо перерабатывать на новый лад
когда каждый пин можно по отдельности ремапить на возможные функции (AF)
и сейчас многие делают собственные Кубы с отображением что и как

Ремапинг по группам - это отголоски старого STM32F103
и CH32V (RISC-V) зачем-то сохранили это,
наверно в CH32F103 (Cortex-M3) сделали - так и оставили
хотя уже в STM32F0,G0,F4,G4 и прочих ремапинг через AF

Изучаю сейчас PUYA PY32F0xx , NSING(Nations) N32G4xx и другие
PUYA и NSING сделали свои программы PY32Studio, N32Cube

Попробуйте в свою программу завести вот эти простые чипы

https://github.com/Xiamatsu/MCU_Pinout

Думаю скоро и WCH подтянется и сделает своё подобие Куба
Реклама
Родился
Сообщения: 16
Зарегистрирован: Вт сен 01, 2026 13:12:59

Сообщение silentsin »

Zikon писал(а): Вт сен 01, 2026 18:02:48 Программа не актуальна - надо перерабатывать на новый лад
когда каждый пин можно по отдельности ремапить на возможные функции (AF)
и сейчас многие делают собственные Кубы с отображением что и как

Ремапинг по группам - это отголоски старого STM32F103
и CH32V (RISC-V) зачем-то сохранили это,
наверно в CH32F103 (Cortex-M3) сделали - так и оставили
хотя уже в STM32F0,G0,F4,G4 и прочих ремапинг через AF

Изучаю сейчас PUYA PY32F0xx , NSING(Nations) N32G4xx и другие
PUYA и NSING сделали свои программы PY32Studio, N32Cube

Попробуйте в свою программу завести вот эти простые чипы

https://github.com/Xiamatsu/MCU_Pinout

Думаю скоро и WCH подтянется и сделает своё подобие Куба
Конфликты тоже сами собой разрешаются? WCH слишком долго собирается. Эти чипы "завести" - легко. Реально, никаких проблем, прога для этого и предназначена. Не для генерации кода, который все равно нафиг не нужен, ибо все по библам давно распихано, а чтобы выделить каждый пин под указанную функцию и получить наглядную их карту. Вам это, вероятно не нужно, а вот другим людям пригодится. К тому же я сказал, что прога - универсальна, в ней можно завести любой stm/pic/wch совместимый MCU. Вы просто не смотрели её пристально... а таких инструментов, и не только таких, порой просто не хватает...

ЗЫ И да, здесь каждый пин любой периферии можно выбрать отдельно.
ЗЗЫ У некоторых кирпичей внутри корпуса скроссированы некоторые порты. И это тоже поддерживается, хоть их десяток там будет, на каждом физическом пине. Посмотрите на X033, там шесть пар таких точно есть. И вы это увидите при расчетах, если ненароком повесите на такой (не указанный на корпусе) пин что-то еще...
Вымогатель припоя
Сообщения: 612
Зарегистрирован: Вт окт 01, 2024 15:22:33

Сообщение Adrift »

silentsin писал(а): Ср сен 02, 2026 06:23:27К тому же я сказал, что прога - универсальна, в ней можно завести любой stm/pic/wch совместимый MCU.
Ага, только у вас самый большой корпус - это LQFP32, а если нужны LQFP48/64/80/100/144, то пользователи должны сами LQFP48.xml и т.д. добавлять, помимо самих мк? Вот вам, для примера, STM32H563Vx.csv который куб генерит:
Спойлер

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

"Position","Name","Type","Signal","Label","AF0","AF1","AF2","AF3","AF4","AF5","AF6","AF7","AF8","AF9","AF10","AF11","AF12","AF13","AF14","AF15"
"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"
"2","PE3","I/O","","","DEBUG_TRACED0","","","","TIM15_BKIN","","SAI1_SD_B","USART10_TX","","","","","FMC_A19","","","EVENTOUT"
"3","PE4","I/O","","","DEBUG_TRACED1","","SAI1_D2","","TIM15_CH1N","SPI4_NSS","SAI1_FS_A","","","","","","FMC_A20","DCMI_D4/PSSI_D4","","EVENTOUT"
"4","PE5","I/O","","","DEBUG_TRACED2","","SAI1_CK2","","TIM15_CH1","SPI4_MISO","SAI1_SCK_A","","","","","","FMC_A21","DCMI_D6/PSSI_D6","","EVENTOUT"
"5","PE6","I/O","","","DEBUG_TRACED3","TIM1_BKIN2","SAI1_D1","","TIM15_CH2","SPI4_MOSI","SAI1_SD_A","","","","SAI2_MCLK_B","","FMC_A22","DCMI_D7/PSSI_D7","","EVENTOUT"
"6","VBAT","Power","","","","","","","","","","","","","","","","","",""
"7","PC13","I/O","","","","","","","","","","","","","","","","","","EVENTOUT"
"8","PC14-OSC32_IN(OSC32_IN)","I/O","","","","","","","","","","","","","","","","","","EVENTOUT"
"9","PC15-OSC32_OUT(OSC32_OUT)","I/O","","","","","","","","","","","","","","","","","","EVENTOUT"
"10","VSS","Power","","","","","","","","","","","","","","","","","",""
"11","VDD","Power","","","","","","","","","","","","","","","","","",""
"12","PH0-OSC_IN(PH0)","I/O","","","","","","","","","","","","","","","","","","EVENTOUT"
"13","PH1-OSC_OUT(PH1)","I/O","","","","","","","","","","","","","","","","","","EVENTOUT"
"14","NRST","Reset","","","","","","","","","","","","","","","","","",""
"15","PC0","I/O","","","","TIM16_BKIN","","","","","SAI1_MCLK_A","SPI2_RDY","SAI2_FS_B","FMC_A25","OCTOSPI1_IO7","","FMC_SDNWE","","","EVENTOUT"
"16","PC1","I/O","","","DEBUG_TRACED0","","SAI1_D1","","","I2S2_SDO/SPI2_MOSI","SAI1_SD_A","USART11_DE/USART11_RTS","SAI2_SD_A","","OCTOSPI1_IO4","ETH_MDC","","","","EVENTOUT"
"17","PC2","I/O","","","PWR_CSLEEP","TIM17_CH1","TIM4_CH4","","","I2S2_SDI/SPI2_MISO","OCTOSPI1_IO5","","","OCTOSPI1_IO2","","ETH_TXD2","FMC_SDNE0","","","EVENTOUT"
"18","PC3","I/O","","","PWR_CSTOP","","SAI1_D3","LPTIM3_CH1","","I2S2_SDO/SPI2_MOSI","OCTOSPI1_IO6","","","OCTOSPI1_IO0","","ETH_TX_CLK","FMC_SDCKE0","","","EVENTOUT"
"19","VSSA","Power","","","","","","","","","","","","","","","","","",""
"20","VREF-","Power","","","","","","","","","","","","","","","","","",""
"21","VREF+","Power","","","","","","","","","","","","","","","","","",""
"22","VDDA","Power","","","","","","","","","","","","","","","","","",""
"23","PA0","I/O","","","","TIM2_CH1","TIM5_CH1","TIM8_ETR","TIM15_BKIN","SPI6_NSS","SPI3_RDY","USART2_CTS/USART2_NSS","UART4_TX","","SAI2_SD_B","ETH_CRS","","","TIM2_ETR","EVENTOUT"
"24","PA1","I/O","","","","TIM2_CH2","TIM5_CH2","","TIM15_CH1N","LPTIM1_IN1","OCTOSPI1_DQS","USART2_DE/USART2_RTS","UART4_RX","OCTOSPI1_IO3","SAI2_MCLK_B","ETH_REF_CLK/ETH_RX_CLK","","","","EVENTOUT"
"25","PA2","I/O","","","","TIM2_CH3","TIM5_CH3","","TIM15_CH1","LPTIM1_IN2","","USART2_TX","SAI2_SCK_B","","","ETH_MDIO","","","","EVENTOUT"
"26","PA3","I/O","","","","TIM2_CH4","TIM5_CH4","OCTOSPI1_CLK","TIM15_CH2","I2S2_WS/SPI2_NSS","SAI1_SD_B","USART2_RX","","","","ETH_COL","","","","EVENTOUT"
"27","VSS","Power","","","","","","","","","","","","","","","","","",""
"28","VDD","Power","","","","","","","","","","","","","","","","","",""
"29","PA4","I/O","","","","","TIM5_ETR","LPTIM2_CH1","","I2S1_WS/SPI1_NSS","I2S3_WS/SPI3_NSS","USART2_CK","SPI6_NSS","","","","","DCMI_HSYNC/PSSI_DE","","EVENTOUT"
"30","PA5","I/O","","","","TIM2_CH1","","TIM8_CH1N","","I2S1_CK/SPI1_SCK","","","SPI6_SCK","","","ETH_TX_EN","","PSSI_D14","TIM2_ETR","EVENTOUT"
"31","PA6","I/O","","","","TIM1_BKIN","TIM3_CH1","TIM8_BKIN","","I2S1_SDI/SPI1_MISO","OCTOSPI1_IO3","USART11_TX","SPI6_MISO","TIM13_CH1","","","","DCMI_PIXCLK/PSSI_PDCK","","EVENTOUT"
"32","PA7","I/O","","","","TIM1_CH1N","TIM3_CH2","TIM8_CH1N","","I2S1_SDO/SPI1_MOSI","","USART11_RX","SPI6_MOSI","TIM14_CH1","OCTOSPI1_IO2","ETH_CRS_DV/ETH_RX_DV","FMC_SDNWE","FMC_NWE","","EVENTOUT"
"33","PC4","I/O","","","","TIM2_CH4","SAI1_CK1","LPTIM2_ETR","","I2S1_MCK","","USART3_RX","","","","ETH_RXD0","FMC_SDNE0","","","EVENTOUT"
"34","PC5","I/O","","","","TIM1_CH4N","SAI1_D3","","PSSI_D15","","SAI1_FS_A","UART12_DE/UART12_RTS","","","OCTOSPI1_DQS","ETH_RXD1","FMC_SDCKE0","","","EVENTOUT"
"35","PB0","I/O","","","","TIM1_CH2N","TIM3_CH3","TIM8_CH2N","","","OCTOSPI1_IO1","USART11_CK","UART4_CTS","","","ETH_RXD2","","","LPTIM3_CH1","EVENTOUT"
"36","PB1","I/O","","","","TIM1_CH3N","TIM3_CH4","TIM8_CH3N","","","OCTOSPI1_IO0","","","","","ETH_RXD3","","","LPTIM3_CH2","EVENTOUT"
"37","PB2","I/O","","","RTC_OUT2","","SAI1_D1","TIM8_CH4N","SPI1_RDY","LPTIM1_CH1","SAI1_SD_A","I2S3_SDO/SPI3_MOSI","","OCTOSPI1_CLK","OCTOSPI1_DQS","","SDMMC1_CMD","LPTIM5_ETR","","EVENTOUT"
"38","PE7","I/O","","","","TIM1_ETR","","","","","UART12_DE/UART12_RTS","UART7_RX","","","OCTOSPI1_IO4","","FMC_D4/FMC_DA4","","","EVENTOUT"
"39","PE8","I/O","","","","TIM1_CH1N","","","","","UART12_CTS","UART7_TX","","","OCTOSPI1_IO5","","FMC_D5/FMC_DA5","","","EVENTOUT"
"40","PE9","I/O","","","","TIM1_CH1","","","","","UART12_RX","UART7_DE/UART7_RTS","","","OCTOSPI1_IO6","","FMC_D6/FMC_DA6","","","EVENTOUT"
"41","PE10","I/O","","","","TIM1_CH2N","","","","","UART12_TX","UART7_CTS","","","OCTOSPI1_IO7","","FMC_D7/FMC_DA7","","","EVENTOUT"
"42","PE11","I/O","","","","TIM1_CH2","","","SPI1_RDY","SPI4_NSS","OCTOSPI1_NCS","","","","SAI2_SD_B","","FMC_D8/FMC_DA8","","","EVENTOUT"
"43","PE12","I/O","","","","TIM1_CH3N","","","","SPI4_SCK","","","","","SAI2_SCK_B","","FMC_D9/FMC_DA9","","","EVENTOUT"
"44","PE13","I/O","","","","TIM1_CH3","","","","SPI4_MISO","","","","","SAI2_FS_B","","FMC_D10/FMC_DA10","","","EVENTOUT"
"45","PE14","I/O","","","","TIM1_CH4","","","","SPI4_MOSI","","","","","SAI2_MCLK_B","","FMC_D11/FMC_DA11","","","EVENTOUT"
"46","PE15","I/O","","","","TIM1_BKIN","","TIM1_CH4N","","","","USART10_CK","","","","","FMC_D12/FMC_DA12","","","EVENTOUT"
"47","PB10","I/O","","","","TIM2_CH3","LPTIM3_CH1","LPTIM2_IN1","I2C2_SCL","I2S2_CK/SPI2_SCK","","USART3_TX","","OCTOSPI1_NCS","","ETH_RX_ER","","","","EVENTOUT"
"48","VCAP","Power","","","","","","","","","","","","","","","","","",""
"49","VSS","Power","","","","","","","","","","","","","","","","","",""
"50","VDD","Power","","","","","","","","","","","","","","","","","",""
"51","PB12","I/O","","","","TIM1_BKIN","","OCTOSPI1_NCLK","I2C2_SDA","I2S2_WS/SPI2_NSS","UCPD1_FRSTX","USART3_CK","","FDCAN2_RX","","ETH_TXD0","","","UART5_RX","EVENTOUT"
"52","PB13","I/O","","","","TIM1_CH1N","LPTIM3_IN1","LPTIM2_CH1","I2C2_SMBA","I2S2_CK/SPI2_SCK","","USART3_CTS/USART3_NSS","","FDCAN2_TX","","","SDMMC1_D0","","UART5_TX","EVENTOUT"
"53","PB14","I/O","","","","TIM1_CH2N","TIM12_CH1","TIM8_CH2N","USART1_TX","I2S2_SDI/SPI2_MISO","","USART3_DE/USART3_RTS","UART4_DE/UART4_RTS","","","","","","LPTIM3_ETR","EVENTOUT"
"54","PB15","I/O","","","RTC_REFIN","TIM1_CH3N","TIM12_CH2","TIM8_CH3N","USART1_RX","I2S2_SDO/SPI2_MOSI","","USART11_CTS/USART11_NSS","UART4_CTS","","OCTOSPI1_CLK","ETH_TXD1","","DCMI_D2/PSSI_D2","UART5_RX","EVENTOUT"
"55","PD8","I/O","","","","","","","","","","USART3_TX","","","","","FMC_D13/FMC_DA13","","","EVENTOUT"
"56","PD9","I/O","","","","","","","","","","USART3_RX","","FDCAN2_RX","","","FMC_D14/FMC_DA14","","","EVENTOUT"
"57","PD10","I/O","","","","","","LPTIM2_CH2","","","","USART3_CK","","","","","FMC_D15/FMC_DA15","","","EVENTOUT"
"58","PD11","I/O","","","","","SAI1_CK1","LPTIM2_IN2","I2C4_SMBA","","","USART3_CTS/USART3_NSS","UART4_RX","OCTOSPI1_IO0","SAI2_SD_A","","FMC_A16/FMC_CLE","","","EVENTOUT"
"59","PD12","I/O","","","","LPTIM1_IN1","TIM4_CH1","LPTIM2_IN1","I2C4_SCL","I3C1_SCL","SAI1_D1","USART3_DE/USART3_RTS","UART4_TX","OCTOSPI1_IO1","SAI2_FS_A","","FMC_A17/FMC_ALE","DCMI_D12/PSSI_D12","","EVENTOUT"
"60","PD13","I/O","","","","LPTIM1_CH1","TIM4_CH2","LPTIM2_CH1","I2C4_SDA","I3C1_SDA","","","","OCTOSPI1_IO3","SAI2_SCK_A","UART9_DE/UART9_RTS","FMC_A18","DCMI_D13/PSSI_D13","LPTIM4_IN1","EVENTOUT"
"61","PD14","I/O","","","","","TIM4_CH3","","","","","","UART8_CTS","","","UART9_RX","FMC_D0/FMC_DA0","","","EVENTOUT"
"62","PD15","I/O","","","","","TIM4_CH4","","","","","","UART8_DE/UART8_RTS","","","UART9_TX","FMC_D1/FMC_DA1","","","EVENTOUT"
"63","PC6","I/O","","","","","TIM3_CH1","TIM8_CH1","","I2S2_MCK","SAI1_SCK_A","USART6_TX","SDMMC1_D0DIR","FMC_NWAIT","","OCTOSPI1_IO5","SDMMC1_D6","DCMI_D0/PSSI_D0","","EVENTOUT"
"64","PC7","I/O","","","DEBUG_TRGIO","","TIM3_CH2","TIM8_CH2","","","I2S3_MCK","USART6_RX","SDMMC1_D123DIR","FMC_NE1","","OCTOSPI1_IO6","SDMMC1_D7","DCMI_D1/PSSI_D1","","EVENTOUT"
"65","PC8","I/O","","","DEBUG_TRACED1","","TIM3_CH3","TIM8_CH3","","","","USART6_CK","UART5_DE/UART5_RTS","FMC_NCE/FMC_NE2","FMC_INT","FMC_ALE","SDMMC1_D0","DCMI_D2/PSSI_D2","","EVENTOUT"
"66","PC9","I/O","","","RCC_MCO_2","","TIM3_CH4","TIM8_CH4","I2C3_SDA","AUDIOCLK","","","UART5_CTS","OCTOSPI1_IO0","","FMC_CLE","SDMMC1_D1","DCMI_D3/PSSI_D3","","EVENTOUT"
"67","PA8","I/O","","","RCC_MCO_1","TIM1_CH1","","TIM8_BKIN2","I2C3_SCL","SPI1_RDY","","USART1_CK","","","USB_SOF","UART7_RX","FMC_NOE","DCMI_D3/PSSI_D3","","EVENTOUT"
"68","PA9","I/O","","","","TIM1_CH2","","LPUART1_TX","I2C3_SMBA","I2S2_CK/SPI2_SCK","","USART1_TX","","","","ETH_TX_ER","FMC_NWE","DCMI_D0/PSSI_D0","","EVENTOUT"
"69","PA10","I/O","","","","TIM1_CH3","","LPUART1_RX","LPTIM2_IN2","","UCPD1_FRSTX","USART1_RX","","FDCAN2_TX","","","SDMMC1_D0","DCMI_D1/PSSI_D1","","EVENTOUT"
"70","PA11","I/O","","","","TIM1_CH4","","LPUART1_CTS","","I2S2_WS/SPI2_NSS","UART4_RX","USART1_CTS/USART1_NSS","","FDCAN1_RX","USB_DM","","","","","EVENTOUT"
"71","PA12","I/O","","","","TIM1_ETR","","LPUART1_DE/LPUART1_RTS","","I2S2_CK/SPI2_SCK","UART4_TX","USART1_DE/USART1_RTS","SAI2_FS_B","FDCAN1_TX","USB_DP","","","","","EVENTOUT"
"72","PA13(JTMS/SWDIO)","I/O","","","DEBUG_JTMS-SWDIO","","","","","","","","","","","","","","","EVENTOUT"
"73","VDDUSB","Power","","","","","","","","","","","","","","","","","",""
"74","VSS","Power","","","","","","","","","","","","","","","","","",""
"75","VDD","Power","","","","","","","","","","","","","","","","","",""
"76","PA14(JTCK/SWCLK)","I/O","","","DEBUG_JTCK-SWCLK","","","","","","","","","","","","","","","EVENTOUT"
"77","PA15(JTDI)","I/O","","","DEBUG_JTDI","TIM2_CH1","LPTIM3_IN2","","CEC","I2S1_WS/SPI1_NSS","I2S3_WS/SPI3_NSS","SPI6_NSS","UART4_DE/UART4_RTS","","","UART7_TX","FMC_NBL1","DCMI_D11/PSSI_D11","TIM2_ETR","EVENTOUT"
"78","PC10","I/O","","","","","LPTIM3_ETR","","","","I2S3_CK/SPI3_SCK","USART3_TX","UART4_TX","OCTOSPI1_IO1","","ETH_TXD0","SDMMC1_D2","DCMI_D8/PSSI_D8","","EVENTOUT"
"79","PC11","I/O","","","","","LPTIM3_IN1","","","","I2S3_SDI/SPI3_MISO","USART3_RX","UART4_RX","OCTOSPI1_NCS","","","SDMMC1_D3","DCMI_D4/PSSI_D4","","EVENTOUT"
"80","PC12","I/O","","","DEBUG_TRACED3","","TIM15_CH1","","","SPI6_SCK","I2S3_SDO/SPI3_MOSI","USART3_CK","UART5_TX","","","","SDMMC1_CK","DCMI_D9/PSSI_D9","","EVENTOUT"
"81","PD0","I/O","","","","","","TIM8_CH4N","","","","","UART4_RX","FDCAN1_RX","","UART9_CTS","FMC_D2/FMC_DA2","","","EVENTOUT"
"82","PD1","I/O","","","","","","","","","","","UART4_TX","FDCAN1_TX","","","FMC_D3/FMC_DA3","","","EVENTOUT"
"83","PD2","I/O","","","DEBUG_TRACED2","","TIM3_ETR","","TIM15_BKIN","","","","UART5_RX","","","","SDMMC1_CMD","DCMI_D11/PSSI_D11","LPTIM4_ETR","EVENTOUT"
"84","PD3","I/O","","","","","","","","I2S2_CK/SPI2_SCK","","USART2_CTS/USART2_NSS","","","","","FMC_CLK","DCMI_D5/PSSI_D5","","EVENTOUT"
"85","PD4","I/O","","","","","","","","","","USART2_DE/USART2_RTS","","","OCTOSPI1_IO4","","FMC_NOE","","","EVENTOUT"
"86","PD5","I/O","","","","TIM1_CH4N","","","","SPI2_RDY","","USART2_TX","","FDCAN1_TX","OCTOSPI1_IO5","","FMC_NWE","","","EVENTOUT"
"87","PD6","I/O","","","","","SAI1_D1","","","I2S3_SDO/SPI3_MOSI","SAI1_SD_A","USART2_RX","","","OCTOSPI1_IO6","","FMC_NWAIT","DCMI_D10/PSSI_D10","","EVENTOUT"
"88","PD7","I/O","","","","","","","","I2S1_SDO/SPI1_MOSI","","USART2_CK","","","OCTOSPI1_IO7","","FMC_NCE/FMC_NE1","","LPTIM4_OUT","EVENTOUT"
"89","PB3(JTDO/TRACESWO)","I/O","","","DEBUG_JTDO-SWO","TIM2_CH2","","","I2C2_SDA","I2S1_CK/SPI1_SCK","I2S3_CK/SPI3_SCK","UART12_CTS","SPI6_SCK","","CRS_SYNC","UART7_RX","","","LPTIM6_ETR","EVENTOUT"
"90","PB4(NJTRST)","I/O","","","DEBUG_NJTRST","TIM16_BKIN","TIM3_CH1","OCTOSPI1_CLK","LPTIM1_CH2","I2S1_SDI/SPI1_MISO","I2S3_SDI/SPI3_MISO","I2S2_WS/SPI2_NSS","SPI6_MISO","","","UART7_TX","","DCMI_D7/PSSI_D7","","EVENTOUT"
"91","PB5","I/O","","","","TIM17_BKIN","TIM3_CH2","OCTOSPI1_NCLK","I2C1_SMBA","I2S1_SDO/SPI1_MOSI","I2C4_SMBA","I2S3_SDO/SPI3_MOSI","SPI6_MOSI","FDCAN2_RX","","ETH_PPS_OUT","FMC_SDCKE1","DCMI_D10/PSSI_D10","UART5_RX","EVENTOUT"
"92","PB6","I/O","","","","TIM16_CH1N","TIM4_CH1","I3C1_SCL","I2C1_SCL","CEC","I2C4_SCL","USART1_TX","LPUART1_TX","FDCAN2_TX","OCTOSPI1_NCS","","FMC_SDNE1","DCMI_D5/PSSI_D5","UART5_TX","EVENTOUT"
"93","PB7","I/O","","","","TIM17_CH1N","TIM4_CH2","I3C1_SDA","I2C1_SDA","","I2C4_SDA","USART1_RX","LPUART1_RX","FDCAN1_TX","","","FMC_NL","DCMI_VSYNC/PSSI_RDY","","EVENTOUT"
"94","BOOT0","Boot","","","","","","","","","","","","","","","","","",""
"95","PB8","I/O","","","","TIM16_CH1","TIM4_CH3","I3C1_SCL","I2C1_SCL","SPI4_RDY","I2C4_SCL","SDMMC1_CKIN","UART4_RX","FDCAN1_RX","","ETH_TXD3","SDMMC1_D4","DCMI_D6/PSSI_D6","","EVENTOUT"
"96","PB9","I/O","","","","TIM17_CH1","TIM4_CH4","I3C1_SDA","I2C1_SDA","I2S2_WS/SPI2_NSS","I2C4_SDA","SDMMC1_CDIR","UART4_TX","FDCAN1_TX","","","SDMMC1_D5","DCMI_D7/PSSI_D7","","EVENTOUT"
"97","PE0","I/O","","","","LPTIM1_ETR","TIM4_ETR","LPTIM2_CH2","LPTIM2_ETR","","SPI3_RDY","","UART8_RX","FDCAN1_RX","SAI2_MCLK_A","","FMC_NBL0","DCMI_D2/PSSI_D2","","EVENTOUT"
"98","VCAP","Power","","","","","","","","","","","","","","","","","",""
"99","VSS","Power","","","","","","","","","","","","","","","","","",""
"100","VDD","Power","","","","","","","","","","","","","","","","","",""
В идеале ваша прога должна эти csv понимать...
Реклама
Эиком - электронные компоненты и радиодетали
Встал на лапы
Аватара пользователя
Сообщения: 120
Зарегистрирован: Вт фев 28, 2017 08:13:31
Откуда: Свердловская обл.

Сообщение Zikon »

silentsin писал(а): Ср сен 02, 2026 06:23:27 К тому же я сказал, что прога - универсальна, в ней можно завести любой stm/pic/wch совместимый MCU.
Немного непонятно как описывать чипы с AF функциями на каждый пин.
Для примера было-бы неплохо внести несколько чипов типа STM32C011F6T6, STM32G031F6T6
где управление ремапингом осуществляется через AF
Реклама
Поставщик валерьянки для Кота
Сообщения: 1954
Зарегистрирован: Сб май 05, 2012 20:24:52
Откуда: KN34PC, Болгария

Сообщение veso74 »

Время назад использовал STM32Cube, HAL. CubeMX -> генерация начального кода с установленными выводами, настройка AF-функций, а также remapping (CTRL + кнопки миши) показались полезными, наряду с сокращением времени на начальную настройку МК. Даже не приходилось открывать документацию MK - информации в CubeMX было достаточно.

Промежуточный период: CubeMX + SPL (32Fxxx). Через некоторое время: HAL, SPL больше не пользую (a CMSIS). Документация всегда открыта снизу (Datasheet + Reference manual + ...), нет необходимости в автоматизации (+ в CMSIS каждое решение, проект получается намного "чище"). + (почти) не имеет значения, на какой МК пишете: STM32, CH32, APM32, GD32 ...

Возможно, программа будет полезна для начинающих. Но имеем в виду: документация МК понадобится на более позднем этапе. Таким образом, программа дублирует программные решения (STM32CubeMX ... GD32 есть конфигуратор?), и как для следующего этапа: излишняя. Но проект интересный - интерфейс понятен с первого же запуска. (частично использую переводчик)
Контактная информация:
Реклама
Встал на лапы
Аватара пользователя
Сообщения: 120
Зарегистрирован: Вт фев 28, 2017 08:13:31
Откуда: Свердловская обл.

Сообщение Zikon »

NSING (Nations) - в этом году выпустила свои N32Cube
простенькие приложения для некоторых основных семейств чипов
и отслеживание конфликтов тоже есть
генерация кода для Keil, IAR на основе своей библиотеки ( подобие STL от STM32 )
даже для младшего семейства N32G030/G031/G032 тоже есть

пример распиновки N32G032K8L7

1. для 6х UART + CAN + SPI + I2C - комуникационный хаб

2. CAN + UART + TIM1 (3x2) + TIM8 (3x2)
Вложения
g032_2.jpg
(104.19 КБ) 8 скачиваний
g032_1.jpg
(109.78 КБ) 8 скачиваний
Родился
Сообщения: 16
Зарегистрирован: Вт сен 01, 2026 13:12:59

Сообщение silentsin »

Если используете только перечисленное, то ладно, но у меня порой целый зоопарк, и содержать для них такой же зоопарк софта немного напрягает, нынче гигабайты стоят, как чугунный мост... Я просто сделал универсальный менеджер конфликтов для любого MCU, даже ноги обзывайте, как в даташите. Просто и наглядно. Насчет кода... мне генерация кода от косого STMCube совершенно не нужна, упоминал же, у меня все в отдельных библиотеках. Последнее время пошли заказы на CH32. Хотя они уже дорожают на глазах и брака (целыми партиями) много, китайцы их не уничтожили, пытаются впарить лаоваям...

Вот примерно так выглядят проекты и сгенерированный код просто не нужен. все давно уже есть...
test_mpx033.png
Структура типичного проекта
(28.3 КБ) 11 скачиваний
Вот так выглядит результат:
examA.png
(173.43 КБ) 12 скачиваний
examB.jpg
(54.04 КБ) 11 скачиваний
Вы не поверите, но на картинке CH32V003A4M6, 16-ногий малыш, в котором нет даже аппаратного SPI...
Последний раз редактировалось silentsin Пт сен 04, 2026 07:32:06, всего редактировалось 2 раза.
Родился
Сообщения: 16
Зарегистрирован: Вт сен 01, 2026 13:12:59

Сообщение silentsin »

Возьмите файлы из папки "Config", переведите их google-переводчиком на болгарский и будем Вам счастье. Спасибо.
Родился
Сообщения: 16
Зарегистрирован: Вт сен 01, 2026 13:12:59

Сообщение silentsin »

Уясните для себя схему: пин - это "железо", порт - это логическая сущность на пине, их может быть несколько. Пины есть для размещения портов, без портов (питание к примеру или специальные) и выделенные "системные", которые могут уживаться с логическими на одном физическом пине. Что касается ремапов. Порты принадлежат конкретному оборудованию. В редакторе контроллеров вы открываете существующий или заводите новый проект. Затем описываете физические и системные пины.
exam0.png
(75.61 КБ) 9 скачиваний
Затем начинаете добавлять модули периферии. В настройках модуля вы выбираете номер ремапа (из существующих, там имена на любой вкус), выбираете доступные для данной схемы выводы (их функциональные имена - I2C1_SDA, к примеру) и их "хозяина" - логический порт. Все схемы ремапа одного модуля хранятся внутри модуля. Кстати, можно копировать и вставлять целую схему. На пикче примерно то, о чем я сейчас говорил:
exam1.png
(67 КБ) 8 скачиваний
Откройте любой проект из папки "Data" и посмотрите как описано оборудование, там вроде понятно все. Да, ICSP - это тоже модуль), а также набор просто портов (типа PA1, PE7) - для того, чтобы повесить на них простые функции: светодиод к примеру.

Главное - это понять, пин должен быть системным или входить в специальный модуль, который объединит их в группы. Системные пины активируются отдельно от всех остальных модулей периферии.
exam2.png
(75.87 КБ) 7 скачиваний
Родился
Сообщения: 16
Зарегистрирован: Вт сен 01, 2026 13:12:59

Сообщение silentsin »

Ага, только у вас самый большой корпус - это LQFP32
Кто мешает сделать свой? Я просто отдал то, что наработал за месяц, пока делал эту программу.
Да, я сталкивался с выводом STM-ского софта. Недаром я назвал его косым, это не для людей
предназначено. Ладно, добавлю парсер, как будет время.

ЗЫ Собственно, идеология моей проги состоит в том, что переключается в альтернативную схему не отдельный пин, (ага, попереключай их, если там сотня), а сам модуль, именно так делается вменяемыми производителями. Схемы становятся короткими и понятными.
Встал на лапы
Аватара пользователя
Сообщения: 120
Зарегистрирован: Вт фев 28, 2017 08:13:31
Откуда: Свердловская обл.

Сообщение Zikon »

Так вот интересно
программа ориентирована на
REMAP группы как в CH32V
а если каждяый порт можно настроить на определённую функцию ?
как во многих чипах сейчас есть

Вот напрмер PY32F030K28T6 lqfp32

PY32F030K28T6 - lqfp32
USART1 - порты можно ремапить каждый по отдельности
CTS PA0,PA11,PB4
RTS PA1,PA12,PB3
TX PA2,PA7,PA9,PA10,PA14,PB6,PF1,PF3
RX PA3,PA8,PA9,PA10,PA13,PA15,PB2,PB7,PF0
CK PA4,PA6,PA8,PB5

и так все модули USART2, SPI1, SPI2, I2C, TIM1,TIM3, ....
Встал на лапы
Аватара пользователя
Сообщения: 120
Зарегистрирован: Вт фев 28, 2017 08:13:31
Откуда: Свердловская обл.

Сообщение Zikon »

silentsin писал(а): Пт сен 04, 2026 06:47:50 Вы не поверите, но на картинке CH32V003A4M6, 16-ногий малыш, в котором нет даже аппаратного SPI...
Аппаратный SPI есть
только один основной сигнал не выведен на пины - SCK

есть другие малыши PY32 и дешевле
PY32F002AL15S6 - so8
PY32F002AW15S6 - so16
PY32F002AW15U6 - qfn16

SPI1 есть оффициально
и "плюшка" SPI2 от PY32F030
( в so8 - SPI2 - неполный )
Вымогатель припоя
Сообщения: 612
Зарегистрирован: Вт окт 01, 2024 15:22:33

Сообщение Adrift »

silentsin писал(а): Пт сен 04, 2026 07:56:11Кто мешает сделать свой? Я просто отдал то, что наработал за месяц, пока делал эту программу.
Какие самые популярные платы с STM32? Всякие Blue/Black Pill с мк в 48-ми ногих корпусах, которые в вашей проге нужно добавлять самому. Сам добавлять станет редкий энтузиаст, большинство посмотри что нет ни ходовых корпусов, ни мк и на этом его знакомство с программой закончится.
silentsin писал(а):Собственно, идеология моей проги состоит в том, что переключается в альтернативную схему не отдельный пин, (ага, попереключай их, если там сотня), а сам модуль, именно так делается вменяемыми производителями. Схемы становятся короткими и понятными.
Берем 32-х пиновый STM32C531, для SPI1 там доступны следующие ремапы:

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

NSS  PA4/PA15/PB8
SCK  PA5/PB3/PB7
MISO PA6/PB0/PB4/PB6
MOSI PA4/PA7/PB5/PB15
Какие группы предлагаете сделать? Допустим первая группа: PA4/PA5/PA6/PA7... Помимо прочей периферии, на PA4 дополнительно висит DAC1_OUT1, на PA5 - DAC1_OUT2, на PA6 - OPAMP_VOUT и на PA7 - SPI2_MISO, причем все это существует в единственном экземпляре. Если нужен DAC1_OUT1, то заремапить на другой AF нужно только NSS, а если нужен OPAMP_VOUT, то только MISO. Для одного SPI1 будет 144 группы, они тут явно не лучшее решение, просто вы имеет дело с простыми мк у которых мало периферии, вам и прога такая самому не особо нужна, а представьте 100 ногий мк у которого 4 SPI, десяток UART, FMC, LTDC, OSPI, SDMMC, DCMI и таймеров штук 20... Понадобится LTDC в режиме RGB666 и это 18 ног только под цвета, где у каждого пина будет в среднем по парочке ремапов и все это пересекается с другой периферией.
Встал на лапы
Аватара пользователя
Сообщения: 120
Зарегистрирован: Вт фев 28, 2017 08:13:31
Откуда: Свердловская обл.

Сообщение Zikon »

Adrift писал(а): Пт сен 04, 2026 09:31:27 Какие самые популярные платы с STM32? Всякие Blue/Black Pill с мк в 48-ми ногих корпусах, которые в вашей проге нужно добавлять самому. Сам добавлять станет редкий энтузиаст, большинство посмотри что нет ни ходовых корпусов, ни мк и на этом его знакомство с программой закончится.
Вот точно - можно вообще сразу добавить платы
BluePill / BlackPill

только вот в STM32F103CxT6 - там групповой REMAP
( как и в программе сделан и в CH32V - также )
а вот в STM32F401/F411 - там уже AF0-AF15
на каждый порт настраиваем по отдельности
Родился
Сообщения: 16
Зарегистрирован: Вт сен 01, 2026 13:12:59

Сообщение silentsin »

Adrift писал(а): Пт сен 04, 2026 09:31:27 Какие группы предлагаете сделать?
Каюсь, сначала не вник. Да, попиновый кросс - это самое хреновое, что могли придумать... Это мое мнение. Я уже говорил, что идеология моего приложения - это полный ремап модуля периферии. Что ж, вняв упрекам, хотя и не должен был... ребята - это не комбайн, это профессиональный ускоспециализированный софт для конкретной цели... добавил в софтину ваш обожаемый попиновый ремап. Это немного затруднит понимание процесса, но я тоже предупреждал - чтобы им пользоваться, желательно иметь кругозор и смекалку. Здесь один товарищ выложил CSV с вывода STMCube и я его использовал для проверки результата. На все 100% не уверен в отсутствии багов НОВОЙ версии приложения, но если найдете что-то не то, пишите.

В векторном редакторе теперь разрешено зумить колесиком мыши, ибо большому корпусу большая... сами знаете чего.
В списке архитектур появился STM_Test (это тот самый тестовый MCU) и корпус LQFP100.

И последнее... упреки о том, что мало корпусов, мало контроллеров и прочее подобное же... не принимаю. Причину объяснить?

Изображение
MCUCube.zip
Версия с поддержкой попинового кросса
(229.76 КБ) 7 скачиваний
И да, последнее, в редакторе MCU в меню файл появился пункт "Загрузить STM CSV". Это импорт плоского файла архитектуры MCU, не обязательно STM и не обязательно с попиновым кроссом. Просто используйте его схему (она в заголовке) и вписывайте пины и порты нужного контроллера.
Последний раз редактировалось silentsin Пт сен 04, 2026 22:27:35, всего редактировалось 2 раза.
Поставщик валерьянки для Кота
Сообщения: 1954
Зарегистрирован: Сб май 05, 2012 20:24:52
Откуда: KN34PC, Болгария

Сообщение veso74 »

silentsin, разместите названия функций в иконках как обычная программа Windows. А так ужасно - не хочется ждать и читать ниже, что к чему.
(Лично нет шансов для дальнейшего использования с этого программного интерфейса :/ -> "видел-попробовал-забыл").
Контактная информация:
Родился
Сообщения: 16
Зарегистрирован: Вт сен 01, 2026 13:12:59

Сообщение silentsin »

veso74 писал(а): Пт сен 04, 2026 22:18:11 silentsin, разместите названия функций
Охх... производителям "фотошопа" тоже условия ставите?))) Разместить текст на кнопках? Зачем он вам? На второй раз он вам просто не будет нужен, когда поймете назначение. Глифа вполне достаточно я считаю...
Поставщик валерьянки для Кота
Сообщения: 1954
Зарегистрирован: Сб май 05, 2012 20:24:52
Откуда: KN34PC, Болгария

Сообщение veso74 »

Прежде чем нажать кнопку, хочу увидеть, что это такое. И не запоминать иконки, а увидеть функции (не дожидаясь появления текста).

(Нужны комментарии софта? Написал коментар интерфейса с добрыми чувствами).
(На мой взгляд, это программное обеспечение бесполезно - одного/двух файлов из документации достаточно! - STM32, CH32, APM32, GD32 -> Table: pin definitions + Table: alternate function mapping). Со временем собрал множество подобных программ, + файлов Excel, даже с генераторами кода. Видим "калкулятор", сохраняем "на будущее"... А через день-месяць: забываем об этом. В будущем остается: взгляд только на оригинальную документацию использованный МК).
СпойлерИзображение
Вложения
Untitled-1.jpg
(86.15 КБ) 76 скачиваний
Контактная информация:
Родился
Сообщения: 16
Зарегистрирован: Вт сен 01, 2026 13:12:59

Сообщение silentsin »

veso74 писал(а): Пт сен 04, 2026 22:25:30 Прежде чем нажать кнопку, хочу увидеть, что это такое.
Ок... Добавил главное меню в первую форму. Специально для вас.
MCUCube.zip
Версия с меню
(243.74 КБ) 6 скачиваний
Ответить

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