Конфигурация платы:
МК AT91SAM9G45 подключен к FPGA (Xilinx Spartan-6) к шине EBI1, связб осуществляется через SMC. На ФПГА заведены сигналы:
EBI1_A[25..1]
EBI1_DATA[15..0]
EBI1_NCS2
EBI1_NWE
EBI1_NRD
Пишет/читает нормально. Но вот заявленный режим Asynchronous Page Mode не поддерживается (см. документ doc6438.pdf page218).
Конфигурация контрольного регистра для CS2
Код
AT91C_BASE_SMC->SMC_CTRL2 = ( AT91C_SMC_NWAITM_NWAIT_DISABLE
| AT91C_SMC_TDFEN
| ((0x1 << 16) & AT91C_SMC_TDF)
| AT91C_SMC_DBW_WIDTH_SIXTEEN_BITS
| AT91C_SMC_PMEN
| (0x3 << 28));//32 bytes burst READ
В поле PS данного регистра (биты 29..28) задается режим бурст чтения по 4, 8, 16, 32 байта. Соответственно на 16 битной шине это должно соответствовать 2,4,8,16 транзакциям чтения (смене адреса). Реальноже работает только PS = 0x0/0x1. Если задавать 0x2/0x3 - производится только 8 транзакций чтения.
На рисунке сигналы с шины, ловим ЧипСкопом внутри ФПГА, режим контроллера - считываем 32 байта (т.е. 16 транзакций):

соответствие сигналов на рисунке сигналам на шине процессора:
EBI1_A - addr
EBI1_DATA - bus_data
EBI1_NCS2 - bus_cs2
EBI1_NWE - bus_nwe
EBI1_NRD - bus_nrd
Это я что-то делаю не так или действительно что-то с контроллером
p.s. у меня не ES, а нормальная версия микроконтроллера