Files
templates/c/parallel-nand/ports/stm32f103ze/README.md

2.5 KiB
Raw Blame History

Порт 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,710 кОм к 3,3 В. Питание NAND — 3,3 В; возле каждой пары питания нужен 100 нФ, рядом с микросхемой — 14,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(),
        &parallel_nand_hy27uf084g2m_geometry);
}

Начальные тайминги намеренно консервативны. После запуска проверьте осциллографом длительности WE#/RE# и время установки данных. Ожидаемый ID HY27UF084G2M: AD DC 80 95.

Порт поддерживает PROGRAM/ERASE. WP# на PG8 остаётся активным между операциями и снимается ядром только на время программирования или стирания.