63 lines
2.5 KiB
Markdown
63 lines
2.5 KiB
Markdown
# Порт 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` остаётся активным между
|
||
операциями и снимается ядром только на время программирования или стирания.
|