ЭЛЕКТРОНИКА Помогите разобраться с Миландр 1986ВЕ91Т + NAND. Ядро виснет на STRB, отваливается ULINK2

Mistress-Lukutar

✩✩✩✩✩✩✩
18 Май 2026
1
0
МК: Миландр 1986ВЕ91Т (Cortex-M3), 80 МГц
NAND: Winbond W29N08GV, 8-bit, 3.3 В
Отладка: Keil + ULINK2 (JTAG)
Проблема: пытаюсь отправить команду Reset в NAND через EBC. Ядро зависает на инструкции STRB, ULINK2 отваливается мгновенно.

Код::
[I]((volatile uint8_t[/I])0x700007F8) = 0x00;  // пробовал и 0x770007F8
До зависания:
  • R1 = 0x700007F8
  • PC = 0x08004566
  • xPSR = 0x61000000
  • EBC_CONTROL = 0x84 (NAND=1, BUSY=1)
  • EBC_NAND_CYCLES = 0xFFFFFFFF

Тактирование::
MDR_RST_CLK->PER_CLOCK |= (
    RST_CLK_PER_CLOCK_PCLK_EN_PORTA |
    RST_CLK_PER_CLOCK_PCLK_EN_PORTC |
    RST_CLK_PER_CLOCK_PCLK_EN_PORTD |
    RST_CLK_PER_CLOCK_PCLK_EN_EXT_BUS_CNTRL  // EBC
);

Что странного:
После STRB на осциллографе CLE и WE циклятся без остановки. CE при этом держится внизу. Данные на шине 0xFF. Для команды Reset адресных циклов нет. BUSY при ручной проверке работает. Пробовались и «нормальные» тайминги в NAND_CYCLES - результат тот же.

Вопросы:
1. Аппаратный баг EBC или ошибки в настройках?
2. Если не баг, то чего не хватает в настройке EBC? Нужно ли что-то ещё кроме включения тактирования и битов NAND+BUSY в CONTROL?
3. Правильный ли адрес для командного регистра NAND - 0x700007F8? В некоторых документах видел 0x770007F8, но оба ведут себя одинаково.
4. Может ли ядро уходить в lockup/deadlock, если EBC ждёт READY от NAND, и поэтому ULINK2 отваливается? Как это обойти?
5. Циклическое повторение CLE/WE без пауз - это нормальное поведение EBC при ожидании, или признак ошибки конфигурации?

Скриншоты регистров EBC, RST_CLK и ядра прилагаю.
 

Вложения