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

2.1 KiB
Raw Blame History

Порт STM32F103RCT6 для HY27UF084G2M

У STM32F103RCT6 корпус LQFP64. Согласно datasheet STM32F103xC/D/E, функция FSMC в этом корпусе недоступна, поэтому порт выполняет асинхронные NAND-циклы через GPIO.

Соединения

HY27UF084G2M STM32F103RCT6 LQFP64
I/O0..I/O7 PB0..PB7 26, 27, 28, 55, 56, 57, 58, 59
CLE PC0 8
ALE PC1 9
WE# PC2 10
RE# PC3 11
CE# PC4 24
WP# PC5 25
R/B# PC6 37

Питание NAND — 3,3 В. На каждый вывод питания нужен 100 нФ, рядом с чипом — 14,7 мкФ. R/B# имеет открытый сток и требует внешней подтяжки 4,710 кОм к 3,3 В. Не оставляйте WP# неподключённым.

PB2 также является BOOT1: NAND держит I/O в высокоимпедансном состоянии до командного цикла, но штатную конфигурацию загрузки платы всё равно нужно обеспечить подтяжкой. PB3/PB4 заняты JTAG; порт отключает JTAG и сохраняет SWD на PA13/PA14.

Подключение к проекту Cube/HAL

Добавьте parallel_nand_port_stm32f103rc.c, путь к его заголовку и включите GPIO HAL. Инициализация:

#include "parallel_nand.h"
#include "parallel_nand_port_stm32f103rc.h"

static parallel_nand_t nand;

int nand_init(void)
{
    return parallel_nand_init(
        &nand,
        parallel_nand_port_stm32f103rc(),
        &parallel_nand_hy27uf084g2m_geometry);
}

После успешной инициализации прочитайте четыре байта ID и ожидайте AD DC 80 95. Порт поддерживает PROGRAM/ERASE: ядро держит WP# в активном низком уровне между операциями и поднимает его только на время изменения NAND.