Порт 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.
Инициализация переносимой библиотеки:
#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 остаётся активным между
операциями и снимается ядром только на время программирования или стирания.