# Распиновка STM32G474

## Источники

| Объект | Статус | Примечание |
|---|---|---|
| Проект `STM32G474CEU6` | не найден | Подтверждённого `.uvprojx/.ioc` для CEU6 нет |
| Кандидатный проект | найден | `IHM08M`, цель `STM32G474RETx` |
| CubeMX `.ioc` | найден | `AD_Keil_Project/IHM08M.ioc` |
| Схема `X-NUCLEO-IHM08M1` | найдена | источник для ADC-сигналов `PhA`, `PhB`, `PhC`, `BUSV`, `Temp. Sens.`: `https://www.st.com/resource/en/schematic_pack/x-nucleo-ihm08m1_schematic.pdf` |
| Плата | кандидат | `NUCLEO-G474RE`, не целевая плата CEU6 |
| Старый embedded-код | найден | C2000/TMS320 в `Inu_im_1wnd_3lvl/Inu` |

## Подтверждённые пины STM32G474CEU6

Подтверждённой распиновки для `STM32G474CEU6` в проекте нет. Ниже приведена только кандидатная распиновка из `STM32G474RETx / NUCLEO-G474RE`.

## Кандидатная распиновка из `IHM08M.ioc` и схемы IHM08M1

| Пин | Сигнал | Направление | Назначение | Источник |
|---|---|---|---|---|
| `PC13` | `B1` | вход EXTI | кнопка пользователя | `.ioc`, `main.h` |
| `PC14` | `RCC_OSC32_IN` | вход | LSE | `.ioc`, `main.h` |
| `PC15` | `RCC_OSC32_OUT` | выход | LSE | `.ioc`, `main.h` |
| `PC0` | `ADC1_IN6` | аналоговый вход | IHM08M1 `PhC`, ток фазы C | схема IHM08M1, `ad_board.c` |
| `PC1` | `ADC1_IN7` | аналоговый вход | IHM08M1 `PhB`, ток фазы B | схема IHM08M1, `ad_board.c` |
| `PC2` | `ADC1_IN8` | аналоговый вход | IHM08M1 `Temp. Sens.`, пока не читается | схема IHM08M1 |
| `PF0` | `RCC_OSC_IN` | вход | HSE | `.ioc`, `main.h` |
| `PF1` | `RCC_OSC_OUT` | выход | HSE | `.ioc`, `main.h` |
| `PA0` | `ADC1_IN1` | аналоговый вход | IHM08M1 `PhA`, ток фазы A | схема IHM08M1, `ad_board.c` |
| `PA1` | `ADC1_IN2` | аналоговый вход | IHM08M1 `BUSV`, напряжение DC-звена | схема IHM08M1, `ad_board.c` |
| `PA5` | не используется | не инициализируется | IHM08M1 `PA5 - DAC`; конфликт с `LD2` убран | схема IHM08M1, `ad_board.c` |
| `PA6` | `TIM1_BKIN` | AF-вход | аппаратный `BKIN` | `.ioc`, `stm32g4xx_hal_msp.c`, схема IHM08M1 |
| `PA8` | `TIM1_CH1` | AF-выход | IHM08M1 `UH`, верхний ключ U | `.ioc`, `stm32g4xx_hal_msp.c`, `ad_inverter.c` |
| `PA7` | `TIM1_CH1N` | AF-выход | IHM08M1 `UL`, нижний ключ U | `.ioc`, `stm32g4xx_hal_msp.c`, `ad_inverter.c` |
| `PA9` | `TIM1_CH2` | AF-выход | IHM08M1 `VH`, верхний ключ V | `.ioc`, `stm32g4xx_hal_msp.c`, `ad_inverter.c` |
| `PB0` | `TIM1_CH2N` | AF-выход | IHM08M1 `VL`, нижний ключ V | `.ioc`, `stm32g4xx_hal_msp.c`, `ad_inverter.c` |
| `PA10` | `TIM1_CH3` | AF-выход | IHM08M1 `WH`, верхний ключ W | `.ioc`, `stm32g4xx_hal_msp.c`, `ad_inverter.c` |
| `PB1` | `TIM1_CH3N` | AF-выход | IHM08M1 `WL`, нижний ключ W | `.ioc`, `stm32g4xx_hal_msp.c`, `ad_inverter.c` |
| `PA13` | `T_SWDIO` | отладка | SWDIO | `.ioc`, `main.h` |
| `PA14` | `T_SWCLK` | отладка | SWCLK | `.ioc`, `main.h` |
| `PB3` | `GPIO_Input` | вход | IHM08M1 `Enc. B/H2`; SWO убран из `.ioc` | `.ioc`, схема IHM08M1 |

## Периферия кандидатного проекта

| Периферия | Статус |
|---|---|
| ADC | вручную включен `ADC1` в `ad_board.c`; `.ioc` еще не синхронизирован |
| TIM/PWM | шесть линий IHM08M1 через `TIM1`: `UH/UL`, `VH/VL`, `WH/WL`; `PA6/TIM1_BKIN` включен |
| GPIO | кнопка `B1`; `PA5/LD2` не используется по умолчанию |
| DMA | HAL-файлы есть, CubeMX init нет |
| UART/USART | не включён |
| CAN/FDCAN | не включён |
| SPI/I2C | не включён |
| OPAMP/COMP | не включён |
| Watchdog | не настроен |
| TIM break | `PA6 / TIM1_BKIN`, `TIM_BREAKPOLARITY_HIGH`; полярность надо проверить на железе |

## Сигналы старого C2000-кода

Эти строки не являются STM32-распиновкой. Они нужны только как чек-лист миграции:

| Сигнал C2000 | Назначение |
|---|---|
| `EPWM1A/B` .. `EPWM6A/B` | PWM-выходы инвертора |
| `ADCRESULT0` | DC-звено `udc1` |
| `ADCRESULT2` | ток `ic1` |
| `ADCRESULT4` | ток `ia1` |
| `ADCRESULT6` | ток `ib1` |

Текущее STM32-сопоставление-кандидат:

| Сигнал | STM32 |
|---|---|
| `ia_A` | `PA0 / ADC1_IN1` |
| `ib_A` | `PC1 / ADC1_IN7` |
| `ic_A` | `PC0 / ADC1_IN6` |
| `vdc_V` | `PA1 / ADC1_IN2`, кусочная калибровка: `0.618 В ADC -> 10 В`, выше `14.5 В` масштаб `12.1770 В/В` |
| `EQEP2A/B/I` | датчик скорости/положения |
| `DI_24V_SOURCE_FAULT` | авария +24 В |
| `SPIA` + `CS` | EEPROM или внешний SPI |
| `LED_GREEN1/2`, `LED_RED` | индикация |

## Что нужно для настоящей платы CEU6

- Добавить настоящий `.ioc` и `.uvprojx` для `STM32G474CEU6`.
- Заполнить ШИМ-пины, комплементарные выходы, мёртвое время и break.
- Заполнить ADC-каналы токов, DC-звена и температуры.
- Добавить входы аварии и аварийного стопа.
- Перегенерировать этот документ по реальному CubeMX-проекту.
