Использую Address/Data multiplexed on databus (MUXEN = 1).
Тестирую 2 режима EXTMOD = 0 и 1.
Инициализация:
Код
FSMC_Bank1->BTCR[0] = //FSMC_BCR2_EXTMOD |
FSMC_BCR2_WREN |
FSMC_BCR2_FACCEN |
FSMC_BCR2_MWID_0 |
FSMC_BCR2_MTYP_1 |
FSMC_BCR2_MUXEN |
FSMC_BCR2_MBKEN;
FSMC_Bank1->BTCR[1] = (2 << 8) | // DATAST = 2
(1 << 4) | // ADDHLD = 1
(2 << 0); // ADDSET = 2
FSMC_Bank1E->BWTR[0] = (2 << 8) | // DATAST = 2
(1 << 4) | // ADDHLD = 1
(2 << 0); // ADDSET = 2
FSMC_BCR2_WREN |
FSMC_BCR2_FACCEN |
FSMC_BCR2_MWID_0 |
FSMC_BCR2_MTYP_1 |
FSMC_BCR2_MUXEN |
FSMC_BCR2_MBKEN;
FSMC_Bank1->BTCR[1] = (2 << 8) | // DATAST = 2
(1 << 4) | // ADDHLD = 1
(2 << 0); // ADDSET = 2
FSMC_Bank1E->BWTR[0] = (2 << 8) | // DATAST = 2
(1 << 4) | // ADDHLD = 1
(2 << 0); // ADDSET = 2
Если EXTMOD = 0, все хорошо.
Если EXTMOD = 1, FSMC не генерирует NL (NADV) и адрес (ошибка при записи и чтении), смотрю осцилом.
В чем может быть проблема?
Это баг stm32f407VG?
Спасибо.