# Порт STM32F103ZET6 для HY27UF084G2M Порт использует аппаратный контроллер `FSMC NAND Bank 3`, 8-битную шину и окно памяти `0x70000000`. Сигналы `CE#`, `WE#`, `RE#`, `CLE` и `ALE` формируются FSMC. Защита записи `WP#` управляется отдельным GPIO `PG8`. ## Соединения | HY27UF084G2M | STM32F103ZET6 | LQFP144 | Функция FSMC | |---|---|---:|---| | `I/O0` | `PD14` | 85 | `D0` | | `I/O1` | `PD15` | 86 | `D1` | | `I/O2` | `PD0` | 114 | `D2` | | `I/O3` | `PD1` | 115 | `D3` | | `I/O4` | `PE7` | 58 | `D4` | | `I/O5` | `PE8` | 59 | `D5` | | `I/O6` | `PE9` | 60 | `D6` | | `I/O7` | `PE10` | 63 | `D7` | | `CLE` | `PD11` | 80 | `A16/CLE` | | `ALE` | `PD12` | 81 | `A17/ALE` | | `WE#` | `PD5` | 119 | `NWE` | | `RE#` | `PD4` | 118 | `NOE` | | `CE#` | `PD7` | 123 | `NCE2` | | `R/B#` | `PD6` | 122 | вход GPIO (`NWAIT`) | | `WP#` | `PG8` | 93 | выход GPIO | `R/B#` имеет открытый сток и требует внешней подтяжки 4,7–10 кОм к 3,3 В. Питание NAND — 3,3 В; возле каждой пары питания нужен 100 нФ, рядом с микросхемой — 1–4,7 мкФ. Все номера выводов MCU указаны для вида сверху. ## Подключение к STM32Cube HAL В `stm32f1xx_hal_conf.h` должны быть включены `HAL_NAND_MODULE_ENABLED` и `HAL_GPIO_MODULE_ENABLED`. В проект добавляются: - `parallel_nand_port_stm32f103ze.c`; - `stm32f1xx_hal_nand.c`; - `stm32f1xx_ll_fsmc.c`. Инициализация переносимой библиотеки: ```c #include "parallel_nand.h" #include "parallel_nand_port_stm32f103ze.h" static parallel_nand_t nand; int nand_init(void) { return parallel_nand_init( &nand, parallel_nand_port_stm32f103ze(), ¶llel_nand_hy27uf084g2m_geometry); } ``` Начальные тайминги намеренно консервативны. После запуска проверьте осциллографом длительности `WE#`/`RE#` и время установки данных. Ожидаемый ID HY27UF084G2M: `AD DC 80 95`. Порт поддерживает PROGRAM/ERASE. `WP#` на `PG8` остаётся активным между операциями и снимается ядром только на время программирования или стирания.