Dreamer_0x01 0 4 февраля, 2010 Опубликовано 4 февраля, 2010 · Жалоба Здравствуйте. Пытаюсь запустить EMC на процессоре LPC2388, ревизия "B". Сделал инициализацию, пытаюсь выполнить чтение - тишина. Тыкаюсь осциллографом - ножки OE и CS всегда в единице. Скорее всего, кривая инициализация. У кого-то есть готовый работающий пример инициализации EMC на этом контроллере? Я делаю так. //перед вызовом этой функции запускается инициализация PLL. void Init_EMC(void) { SCS |= 0x00000002; // Reset EMC. EMCCONTROL = 0x00000001; // Enable EMC. PCONP |= 0x00000800; // Turn on EMC PCLK. PINSEL6 |= 0x5555; // D0-D7. 0101010101010101(b) PINSEL8 = 0x55555555; // A0-A15. } #define EMC_BASE 0x80000000 //запись void inline WriteEMCFPGA(unsigned int addr, unsigned char dtx) { unsigned char * p; p = (unsigned char*)(addr + EMC_BASE); *p=dtx; } //чтение unsigned char inline ReadEMCFPGA(unsigned int addr) { unsigned char * p; p = (unsigned char*)(addr + EMC_BASE); return *p; } Что делаю не так или чего не делаю? Спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dreamer_0x01 0 5 февраля, 2010 Опубликовано 5 февраля, 2010 · Жалоба Сам же и разобрался. Попросту забыл проинициализировать OE и CS для работы с внешней памятью. Теперь все работает. Код инициализации такой: PCONP |= 0x00000800; // Turn on EMC PCLK. PINSEL6 = 0x5555; // D0-D7. 0101010101010101(b) PINSEL8 = 0x55555555; // A0-A15. PINSEL9 = (0x01 << 16) | (0x02 << 18) | (0x01 << 28) | (0x01 << 30); EMCCONTROL = 0x00000001; // Enable EMC. SCS |= 0x00000002; // Reset EMC. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться