2.1 KiB
Порт 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 нФ, рядом с чипом —
1–4,7 мкФ. R/B# имеет открытый сток и требует внешней подтяжки 4,7–10 кОм
к 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(),
¶llel_nand_hy27uf084g2m_geometry);
}
После успешной инициализации прочитайте четыре байта ID и ожидайте
AD DC 80 95. Порт поддерживает PROGRAM/ERASE: ядро держит WP# в активном
низком уровне между операциями и поднимает его только на время изменения NAND.