Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: LPC2388 External Memory Controller
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Dreamer
Здравствуйте.

Пытаюсь запустить 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
Сам же и разобрался.
Попросту забыл проинициализировать 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.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.